01-[原创]最标准最简洁的通达信DLL股票插件开发流程

  • 格式:doc
  • 大小:32.50 KB
  • 文档页数:6

[原创]最标准最简洁的通达信DLL股票插件开发流程一、[序言]2015年开始, 中国股市大涨, 号称突破10000点, 我也信了. 通信达股票软件去年开始支持加载外部DLL文件并执行. 这个是一个非常好的开放. 也给广大技术指标股民带来的便利. 作为09年的股民, 不跟上这种技术潮流, 是不行的. 因此这几天索性折腾一番, 发现网络上公布的文章, 要么是技术漏洞百出, 要么是排版非常混乱, 为了改变这种现状, 我有必写出一篇干净整洁的版本.二、[阅读群体]只合适具有C/C++编程经验的技术指标股民阅读, 如果你看不懂大部分的内容, 请补习一下Windows相关编程理论.三、[工具准备]1> 安装一款由通达信定制的股票软件: 比如我的是: 国海证券理财服务终端2> 安装开发工具: Microsoft Visual Studio 2010版本以上.四、[开始开发支持通达信调用的DLL文件]1> 首先从下载“通达信DLL函数编程规范.rar”并解压提取头文件出来. 这个文件包含跟通达信股票软件交互的关键代码.2> 启动Microsoft Visual Studio 2010开发工具从菜单选择“新建”->“项目”->"Visual C++"->"MFC"->"MFC DLL"并输入项目名称:TDXPlugin然后在弹出的"MFC DLL向导"对话框中选择DLL类型为"使用共享MFC DLL的规则DLL".3> 配置刚刚创建好的TDXPlugin项目属性(从菜单选择 "项目"->"TDXPlugin属性"->"常规")>输出目录: C:\zd_ghzq\T0002\dlls 备注: 这个是通达信股票软件的安装目录, 视你的当前环境来填写. 当你进入安装目录的时候, 发现没有dlls这个文件夹时, 你可以自己创建.>MFC的使用: 在静态库中使用MFC4> 在刚刚创建好的TDXPlugin项目中添加之前提取出来的头文件.五、[根据通达信的规范编写代码]1> 在文件添加如下代码(注意: 原有的代码不要删除):备注: 如何调用这个函数, 后面我会讲解)Void TDXPlugin1(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc){AFX_MANAGE_STATE(AfxGetStaticModuleState());; : 声明 DLL 的模块参数。

LIBRARYEXPORTS; 此处可以是显式导出RegisterTdxFunc @13> 开始编译, 如果你完全按照我的步骤处理的话, 不会有任何问题, 然后会在C:\zd_ghzq\T0002\dlls的目录(备注: 这个是通达信股票软件的安装目录, 视你的当前环境来填写. 当你进入安装目录的时候, 发现没有dlls这个文件夹时, 你可以自己创建)下生成六、[通达信股票软件如何加载并调用写好的TDXPlugin1函数呢?]1> 启动你的通达信股票软件, 按CTRL+F激活"公式管理器", 单击"DLL函数"2> 在"绑定DLL函数"对话框中, 单击"打开绑定", 并选择之前生成好的文件. 特别注意的是: 默认是选择TDXDLL1, 当你有多个不同的DLL时, 可以下拉选择更多的TDXDLL1~10来绑定不同的DLL文件3> 成功绑定之后, 你就可以在通达信股票软件自带的公式编辑器, 写下如下代码:TDXDLL1(1, HIGH, CLOSE, LOW) ;代码含义: TDXDLL1: 表示使用的是TDXDLL1来绑定HIGH: 最高价CLOSE: 收盘价LOW: 最低价1:表示调用TDXPlugin1这个函数, 当然如果你有多个函数时, 那么你必须修改g_CalcFuncSets结构. PluginTCalcFuncInfo g_CalcFuncSets[] ={{ 1, (pPluginFUNC)&TDXPlugin1 },{ 2, (pPluginFUNC)&TDXPlugin2 },{ 3, (pPluginFUNC)&TDXPlugin3 },{ 0, NULL },};上面的结构表示你有3个函数可以让通达信股票软件调用. 比如让通达信股票软件调用TDXPlugin2时,代码需要写成:TDXDLL1(2, HIGH, CLOSE, LOW) ;特此声明: 通达信股票软件自带的公式编辑器已经不属于C/C++编程规范了, 因此我这里不再详细介绍如何使用公式编辑器. 作为一个合格的技术指标股民, 你应该自己研究一下.七、[详解TDXDLL1与TDXPlugin1函数的关系]当通信达股票软件的公式代码调用了TDXDLL1(1, HIGH, CLOSE, LOW)时, 就会把跟HIGH, CLOSE, LOW这3个参数有关的数据传递给TDXPlugin1函数. 比如下面的参数解释八、[自定义的DLL函数返回数据并画图]这个功能, 我使用的是收费模式, 不会免费对外公布. 价格可以私聊九、[总结]一般来说, 只要你有丰富的开发经验, 你可以扩展出很多强大的功能. 比如你可以在DLL文件封装一个对话框程序, 那么你在启动通达信股票软件的时候, 也会弹出你自己的对话框程序. 请大家发挥自己的想象力吧......========================================================================================= =[原创]最标准最简洁的通达信DLL股票插件开发流程目录一、[序言]二、[阅读群体]三、[工具准备]1> 安装一款由通达信定制的股票软件2> 安装开发工具: Microsoft Visual Studio 2010版本以上.四、[开始开发支持通达信调用的DLL文件]1>解压红宝书“通达信DLL函数编程规范.rar”并提取头文件2> 启动Microsoft Visual Studio 2010并创建项目:TDXPlugin ,通过"MFC DLL向导"选择DLL类型3> 配置刚创建好的TDXPlugin项目属性(从菜单选择 "项目"->"TDXPlugin属性"->"常规")>输出目录: C:\zd_ghzq\T0002\dlls>MFC的使用: 在静态库中使用MFC4> 在刚创建好的TDXPlugin项目中添加之前提取出来的头文件.五、[根据通达信的规范编写代码]1> 在文件添加如下代码(注意: 原有的代码不要删除):2> 在文件设置函数RegisterTdxFunc为导出函数.3> 开始编译,在C:\zd_ghzq\T0002\dlls的目录下生成六、[通达信股票软件如何加载并调用写好的TDXPlugin1函数呢?]1> 启动你的通达信股票软件, 按CTRL+F激活"公式管理器", 单击"DLL函数"2> 在"绑定DLL函数"对话框中, 单击"打开绑定", 并选择之前生成好的文件3> 成功绑定之后, 你就可以在通达信股票软件自带的公式编辑器, 写代码七、[详解TDXDLL1与TDXPlugin1函数的关系]八、[自定义的DLL函数返回数据并画图]九、[总结]和伞沟通记录我操作的结果1:追加修改了我操作的结果2:追加修改了上述发给伞,让伞帮忙看编译(生成)出错原因。

伞说:此外还要加导出声明extern "C" __declspec(dllexport)函数要加上这个声明才会被导出不加的话只是普通函数我问:加在哪里?伞回:加在在代码里面(又回:我们都是这样导出的,最一般的导出声明关于《开发流程》的问题:1、问:程序中那一部分范围是:上述TDXPlugin1函数?TDXPlugin1函数是跟通信达股票软件交互的函数?备注: 如何调用这个函数, 后面我会讲解)问:(备注: 如何调用这个函数, 后面我会讲解)是不是指的是后文:“六、[通达信股票软件如何加载并调用写好的TDXPlugin1函数呢?]“这一节?但是这一节里面有一个问题:题目是”加载并调用写好的TDXPlugin1函数“,但是本节就没有看见TDXPlugin1函数嘛?是不是自定义的”TDXPlugin1函数“已经融入”五、[根据通达信的规范编写代码]“编写好的代码,并通过追加项目”TDXPlugin“的.cpp和.def文件并编译生成,实现了”自定义的”TDXPlugin1函数“通过”编译生成“被通达信调用。

是否可以总结如下:自编的TDXPlugin1函数(解决了自己的问题)→进入.cpp和.def文件并编译生成→绑定TDXDLL1(第1号DLL)→通达信调用TDXDLL1。

如上,则“TDXPlugin1函数”成为关键,是吗?这等于是关键算法。

七、[详解TDXDLL1与TDXPlugin1函数的关系]问:下面的参数解释是什么意思?要这干什么?这该不是TDXPlugin1函数吧?八、[自定义的DLL函数返回数据并画图]问:买点是什么?白: MA(CLOSE,125);黄: 白龙+2*STD(CLOSE,170);紫: 白龙-2*STD(CLOSE,145);青: SAR(125,1,7);VAR2:=HHV(HIGH,70);VAR3:=HHV(HIGH,20);红: VAR2*,COLORRED;蓝: VAR3*;真:C,COLORBROWN;。