打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
通达信DLL股票插件开发流程
[阅读群体]
适具有C/C++编程经验的技术指标股民阅读
[工具准备]
1> 安装一款由通达信定制的股票软件: 比如: 国海证券理财服务终端
2> 安装开发工具: Microsoft Visual Studio 2010版本以上.

[开始开发支持通达信调用的DLL文件]
1> 首先从http://help.tdx.com.cn/book.asp下载“通达信DLL函数编程规范.rar”并解压提取PluginTCalcFunc.h头文件出来. 这个文件包含跟通达信股票软件交互的关键代码.
2> 启动Microsoft Visual Studio 2010开发工具从菜单选择 “新建”->“项目”->"Visual C++"->"MFC"->"MFC DLL"并输入项目名称:TDXPlugin 然后在弹出的"MFC DLL向导"对话框中选择DLL类型为"使用共享MFC DLL的规则DLL".
3> 配置刚刚创建好的TDXPlugin项目属性(从菜单选择 "项目"->"TDXPlugin属性"->"常规")
3.1 输出目录: C:\zd_ghzq\T0002\dlls   备注: 这个是通达信股票软件的安装目录, 视你的当前环境来填写. 当你进入安装目录的时候, 发现没有dlls这个文件夹时, 你可以自己创建.
3.2 MFC的使用: 在静态库中使用MFC
4> 在刚刚创建好的TDXPlugin项目中添加之前提取出来的PluginTCalcFunc.h头文件.

[根据通达信的规范编写代码]
1> 在TDXPlugin.cpp文件添加如下代码(注意: TDXPlugin.cpp原有的代码不要删除):
[cpp]view plaincopy
  1. // TDXPlugin1函数是你自己编写的函数, 是跟通信达股票软件交互的函数.  

  2. // 通信达股票软件会调用你这个函数并传递你想要的股票数据给你.(备注: 如何调用这个函数, 后面我会讲解)  

  3. voidTDXPlugin1(intDataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)  

  4. {  

  5. AFX_MANAGE_STATE(AfxGetStaticModuleState());  


  6. // 这里添加你自己的股票分析代码(后面会有详细讲解)  

  7. }  


  8. // g_CalcFuncSets全局结构, 存储你自己编写好的函数, 比如TDXPlugin1函数  

  9. PluginTCalcFuncInfo g_CalcFuncSets[] =  

  10. {  

  11. { 1, (pPluginFUNC)&TDXPlugin1 },  

  12. { 0, NULL },  

  13. };  


  14. // 该函数为导出函数,给通信达股票软件调用并初始化  

  15. BOOLRegisterTdxFunc(PluginTCalcFuncInfo** pFun)  

  16. {  

  17. AFX_MANAGE_STATE(AfxGetStaticModuleState());  


  18. if(*pFun == NULL)  

  19. {  

  20. (*pFun) = g_CalcFuncSets;  

  21. returnTRUE;  

  22. }  

  23. returnFALSE;  

  24. }  

2> 在TXDPlugin.def文件设置函数RegisterTdxFunc为导出函数.
[cpp]view plaincopy
  1. TXDPlugin.def : 声明 DLL 的模块参数。  

  2. LIBRARY  

  3. EXPORTS  

  4. ; 此处可以是显式导出  

  5. RegisterTdxFunc @1  

3> 开始编译, 如果你完全按照我的步骤处理的话, 不会有任何问题, 然后会在C:\zd_ghzq\T0002\dlls的目录(备注: 这个是通达信股票软件的安装目录, 视你的当前环境来填写. 当你进入安装目录的时候, 发现没有dlls这个文件夹时, 你可以自己创建)下生成TDXPlugin.dll

[通达信股票软件如何加载TDXPlugin.dll并调用写好的TDXPlugin1函数呢?]
1> 启动你的通达信股票软件, 按CTRL+F激活"公式管理器", 单击"DLL函数"
2> 在"绑定DLL函数"对话框中, 单击"打开绑定", 并选择之前生成好的TDXPlugin.dll文件. 特别注意的是: 默认是选择TDXDLL1, 当你有多个不同的DLL时, 可以下拉选择更多的TDXDLL1~10来绑定不同的DLL文件

3> 成功绑定之后, 你就可以在通达信股票软件自带的公式编辑器, 写下如下代码:
TDXDLL1(1, HIGH, CLOSE, LOW) ;

代码含义: TDXDLL1: 表示使用的是TDXDLL1来绑定TDXPlugin.dll
HIGH: 最高价
CLOSE: 收盘价
LOW: 最低价
1: 表示 调用TDXPlugin1这个函数, 当然如果你有多个函数时, 那么你必须修改g_CalcFuncSets结构.
[cpp]view plaincopy
  1. PluginTCalcFuncInfo g_CalcFuncSets[] =  

  2. {  

  3. { 1, (pPluginFUNC)&TDXPlugin1 },  

  4. { 2, (pPluginFUNC)&TDXPlugin2 },  

  5. { 3, (pPluginFUNC)&TDXPlugin3 },  

  6. { 0, NULL },  

  7. };  

上面的结构表示你有3个函数可以让通达信股票软件调用. 比如让通达信股票软件调用TDXPlugin2时,代码需要写成:
TDXDLL1(2, HIGH, CLOSE, LOW) ;
特此声明: 通达信股票软件自带的公式编辑器 已经不属于C/C++编程规范了, 这里不再详细介绍如何使用公式编辑器. 你应该自己研究一下.

[详解TDXDLL1与TDXPlugin1函数的关系]

当通信达股票软件的公式代码调用了TDXDLL1(1, HIGH, CLOSE, LOW)时, 就会把跟HIGH, CLOSE, LOW这3个参数有关的数据传递给TDXPlugin1函数. 比如下面的参数解释
[cpp]view plaincopy
  1. // int DataLen: 表示 接受到多少天的数据, 有时是742, 有时1800 等等不同的  

  2. // float* pfINa: 表示 float类型的数组, 比如当 DataLen是742时, 那么就意味你接收到742天的HIGH(最高价)  

  3. // float* pfINb: 表示 float类型的数组, 比如当 DataLen是742时, 那么就意味你接收到742天的CLOSE(收盘价)  

  4. // float* pfINa: 表示 float类型的数组, 比如当 DataLen是742时, 那么就意味你接收到742天的LOW(最低价)  

  5. voidTDXPlugin1(intDataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)  

  6. {  

  7. AFX_MANAGE_STATE(AfxGetStaticModuleState());  


  8. // 连续打印N天的数据  

  9. WCHARwchar_pintf[1024];  

  10. for(intint_Index = 0; int_Index < DataLen; int_Index++)  

  11. {  

  12. swprintf(wchar_pintf, L"DataLen: %d HIGH: %f  CLOSE: %f  LOW: %f", int_Index, pfINa[int_Index], pfINb[int_Index], pfINc[int_Index]);  

  13. OutputDebugString(wchar_pintf);  

  14. }  

  15. }  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
编程通达信
Ollydbg Ida 特别版通达信公式密码和导入公式密码
中秋大礼?通达信指标加密破解过程详解
通达信股票池自动交易
【通达信】通达信DLL函数插件编程教程(动态库)
【新提醒】【图】自编解决方案分享:通达信分时预警(分时交易信号自动提示)(分时选股)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服