[工具准备]
1> 安装一款由通达信定制的股票软件: 比如我的是: 国海证券理财服务终端
2> 安装开发工具: Microsoft Visual Studio 2010版本以上.
[开始开发支持通达信调用的DLL文件]
1>
2>
3>
4>
[根据通达信的规范编写代码]
1>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// TDXPlugin1函数是你自己编写的函数, 是跟通信达股票软件交互的函数. // 通信达股票软件会调用你这个函数并传递你想要的股票数据给你.(备注: 如何调用这个函数, 后面我会讲解) void TDXPlugin1(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // 这里添加你自己的股票分析代码(后面会有详细讲解) } // g_CalcFuncSets全局结构, 存储你自己编写好的函数, 比如TDXPlugin1函数 PluginTCalcFuncInfo g_CalcFuncSets[] = { { 1, (pPluginFUNC)&TDXPlugin1 }, { 0, NULL }, }; // 该函数为导出函数,给通信达股票软件调用并初始化 BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if (*pFun == NULL) { (*pFun) = g_CalcFuncSets; return TRUE; } return FALSE; } |
2>
1 2 3 4 5 |
;TXDPlugin.def : 声明 DLL 的模块参数。 LIBRARY EXPORTS ; 此处可以是显式导出 RegisterTdxFunc 1 |
3>
[通达信股票软件如何加载TDXPlugin.dll并调用写好的TDXPlugin1函数呢?]
1>
2>
3>
代码含义:
1 2 3 4 5 6 7 |
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函数. 比如下面的参数解释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// int DataLen: 表示 接受到多少天的数据, 有时是742, 有时1800 等等不同的 // float* pfINa: 表示 float类型的数组, 比如当 DataLen是742时, 那么就意味你接收到742天的HIGH(最高价) // float* pfINb: 表示 float类型的数组, 比如当 DataLen是742时, 那么就意味你接收到742天的CLOSE(收盘价) // float* pfINa: 表示 float类型的数组, 比如当 DataLen是742时, 那么就意味你接收到742天的LOW(最低价) void TDXPlugin1(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // 连续打印N天的数据 WCHAR wchar_pintf[1024]; for (int int_Index = 0; int_Index < DataLen; int_Index++) { swprintf(wchar_pintf, L"DataLen: %d HIGH: %f CLOSE: %f LOW: %f", int_Index, pfINa[int_Index], pfINb[int_Index], pfINc[int_Index]); OutputDebugString(wchar_pintf); } } |
备注: OutputDebugString是一个打印函数, 你需要通过DebugView工具查看.
[自定义DLL函数返回数据并画图, 自定义DLL函数自动整理数据并分析显示, 自定义DLL函数跟通达信公式进行复杂交互…等相关功能性开发]
这些复杂的功能, 我使用的是收费模式, 不会免费对外公布. 价格可以私聊QQ:643439947. 备注: 很多技术派的股民, 都想通过通达信获取更多的数据, 来自行分析并整理. 因此这篇文章发表之后, 很多人都想免费获取相关的技术. 但实在很抱歉, 我并不是通达信的义工. 如果您想获取更多的技术解决方案, 可以考虑支付一定的技术费用来获取相关的技术原理.
[总结]
一般来说, 只要你有丰富的开发经验, 你可以扩展出很多强大的功能, 请大家发挥自己的想象力吧…..
转自:https://blog.csdn.net/Code_GodFather/article/details/44814713
其他地址:http://blog.sina.com.cn/s/blog_537318160102x7h0.html
缺失图片参考百度文库:https://wenku.baidu.com/view/b823d64df505cc1755270722192e453611665bf5.html