警告:用DLL函数编写指标公式,没啥必要,一般股票软件的公式系统足够用了,除非是编程爱好者用于数据挖掘或者是极其复杂的计算。

本规范根据C++版本改写而成。

用户可以自己编写公式函数dll载入通达信客户端,用户dll必须遵循通达信接口规范。(请参考示范程序TDX_DLL_CALC_FUNC.dproj,TDX_PLUGIN_TCALC_FUNC.pas)

DLL函数结构

1. zfm提供了数据定义文件TDX_PLUGIN_TCALC_FUNC.pas。

type//函数指针类型(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen 的float类型数组。TPluginFUNC=procedure(DataLen:integer;out pfOUT:single;var pfINa:single;var pfINb:single;var pfINc:single);cdecl; //务必采用cdecl调用//用来存放用户自己的函数pCallFunc和函数唯一标记nFuncMark;
//pCallFunc是TPluginFUNC类型指针,.TPluginTCalcFuncInfo=packed recordnFuncMark:word;//函数编号pCallFunc:TPluginFUNC  ;//函数指针end;PpluginTCalcFuncInfo=^TPluginTCalcFuncInfo;  //指向记录类型的指针//测试函数
//指标函数参数分别是(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen 的float类型数组。
// 输出,输入a,输入b,输入c,这四个参数都是指针数组
procedure TestPlugin1(DataLen:integer;out pfOUT:single; //第1个函数var pfINa:single;var pfINb:single;var pfINc:single) ;cdecl;  //务必采用cdecl调用procedure TestPlugin2(DataLen:integer;out pfOUT:single;  //第2个函数var pfINa:single;var pfINb:single;var pfINc:single) ;cdecl;   //务必采用cdecl调用
//可增加到10个函数//RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。
function RegisterTdxFunc(var pFun:PpluginTCalcFuncInfo):boolean;cdecl ;  //务必采用cdecl调用var//PluginTCalcFuncInfo结构的全局数组,用来存储DLL导出的函数指针.//根据实际导出函数的数量确定数组下标界限,//导出2个,下标为0..2  ;导出10个,下标为0..10;g_CalcFuncSets:array[0..2]of TPluginTCalcFuncInfo;

2. 包括注册DLL函数基本信息。

注册函数名称为RegisterTdxFunc。具体函数实例可参见TDX_PLUGIN_TCALC_FUNC.pas程序。

//RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。

function RegisterTdxFunc(var pFun:PpluginTCalcFuncInfo):boolean;cdecl ;//务必采用cdecl调用
beginif pFun=nil thenbeginpFun:=@g_CalcFuncSets[0];  //取第一个元素的地址 回传给变量result:=True;end else  result:=False;
end;
initialization
//初始化g_CalcFuncSets数组  ,//加载的函数g_CalcFuncSets[0].nFuncMark:=1; g_CalcFuncSets[0].pCallFunc:=TestPlugin1; //第一个函数g_CalcFuncSets[1].nFuncMark:=2; g_CalcFuncSets[1].pCallFunc:=TestPlugin2; //第二个函数g_CalcFuncSets[2].nFuncMark:=0; g_CalcFuncSets[2].pCallFunc:=nil;        //结尾

自编实现细节说明

TDX_PLUGIN_TCALC_FUNC.pas文件中PluginTCalcFuncInfo结构用来存放用户自己的函数pCallFunc和函数唯一标记nFuncMark;

pCallFunc是procedure(DataLen:integer;out pfOUT:single; var pfINa:single;var pfINb:single;var pfINc:single);cdecl;类型指针;函数参数分别是(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen 的float类型数组。

RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。

函数dll的使用

将生成的dll文件拷贝到主程序的\T0002\dlls目录下(如果没有此目录,请人工建立,如果该dll有关联文件,请一并拷贝过去)

主程序进入后,ctrl+F打开公式管理器,点击“DLL函数”按钮。

如上图:第二号DLL绑定了TestPluginTCale.dll

在指标公式编辑器中就可以用TDXDLL2第二号DLL函数了。

TDXDLL2(1,H,C,C)含义:调用第二号DLL中标记为1的函数,此函数接受3个输入参数,其中第一个参数用于标记调用DLL中哪个函数。

通达信DLL函数编程Delphi接口规范相关推荐

  1. 通达信Dll插件vs2019实践-测试

    解压官方"通达信DLL函数编程规范.rar",用vs2019打开"TestPluginTCale.dsw"文件. 编译报错解决方法 已启动生成- 1>-- ...

  2. 通达信dll接口怎么开发?

    通达信dll接口的开发主要是为了方便计算各类复杂公式,但其短板是C编程有些硬核,在开发过程中也会遇到诸多麻烦.加之通达信dll接口函数的调用,就有关系到AP接口的调用了,使用它们的脚本语言遍行天下,比 ...

  3. 通达信dll接口怎么调用?

    大家是否了解过通达信dll接口也是可以用来传输自己的需求策略,其实是可以在接口修改本身的dll来调用,实现程序化交易.那么,在众多的量化投资领域方面,我们需要的是不断提高自己的技巧水平,才能掌握通达信 ...

  4. 最标准最简洁的通达信DLL股票插件编程开发流程

    [简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: https://www.x86asm.org Email:    643439947@qq.com QQ交流: 643439 ...

  5. 通达信DLL函数开发

    官方样例:https://www.tdx.com.cn/products/userdoc/%E9%80%9A%E8%BE%BE%E4%BF%A1DLL%E5%87%BD%E6%95%B0%E7%BC% ...

  6. matlab dll 通达信,通达信DLL 怎么写

    来把通达信的DEMO程序学习一下吧,先上它的代码,主要是它的两个重要的头文件及实现文件,顺便把几个重要的地方注释一下. //PluginTCalcFunc.h #ifndef __PLUGIN_TCA ...

  7. 通达信dll接口什么意思?

    就是在股票交易的时候,通过调用三方公司的.dll文件里面的函数,通向向它提交与获取数据,间接获取交易信息,当然这个接口文件,负责将你提交的交易信息向券商提交并获取交易返回信息. dll 输出函数是什么 ...

  8. 通达信 缠论分笔、分段DLL插件

    学缠多年,一直没有找到完全符合缠师原文规则的分笔程序.工欲善其事,必先利其器,思来想去,还是决定自己造轮子.先从0开始啃C++,接着啃"通达信DLL函数编程规范",建立第一个&qu ...

  9. 如何开发通达信,东方财富,飞狐等股票dll插件呢?

    [简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: https://www.x86asm.org QQ交流: 643439947 编程生涯: 2001年~至今[共17年] 职业 ...

最新文章

  1. 2010最值得关注的10款小众互联网产品
  2. 登录加密的前后端测试
  3. Python基础教程:hashlib和hmac模块
  4. Java之品优购课程讲义_day20(5)
  5. Sqlserver备份存储过程
  6. 从学习 Paddle 开始学习深度学习
  7. 电改:国内电网的账单也与时俱进了
  8. BicycleGAN详解与实现
  9. CentOS - thin web server for Ruby(centos下安装thin,运行rails)
  10. 尚硅谷zookeeper入门笔记
  11. 贝叶斯网络R语言学习笔记1
  12. poppin_xpower_ 常城
  13. mysql中dint,请教一下Dint和Real型变量在使用过程中出现的问题
  14. java登录界面圆形头像,Android使用CircleImageView实现圆形头像的方法
  15. Python+PyCharm的一些基本设置:安装使用、注册码、显示行号、字体大小和快捷键等常用设置...
  16. c语言用数字代表字母,使用c语言判断数字字母
  17. ionic3 封装http请求、创建provider
  18. js写的一个html游戏向导模块
  19. python requests瓜子二手车城市列表
  20. python try/except与try/finally使用

热门文章

  1. 腾讯qq2014最新版 v5.4.11058 官方电脑版
  2. Tekla二次开发之图纸篇--节点图工具GA detail manager
  3. 从双十一看京东即时零售的实体势能
  4. 运动神经元如何做好锻炼康复
  5. 怎么批量查询韵达快运单号的物流信息
  6. Docker的安装和配置
  7. php中跳转语句各自的特点,下列选项中,列举PHP中跳转语句错误的是( )。
  8. Android佳博网络打印机例子
  9. DeepWalk初探
  10. 一次由Spring构造注入引发的错误Parameter 1 of constructor in org.rongyilian.service.impl.VerificationCodeService