最标准最简洁的通达信DLL股票插件开发流程
					
											标签:
																				
                            通达信dll股票插件通达信dll股票插件开 | 
					分类: 指标公式及使用 | 
本博文转载自360图书馆
再原来的作者
http://blog.csdn.net/code_godfather/article/details/44814713
常用网名: 猪头三
出生日期: 1981.XX.XX
个人网站:
Email:
QQ交流:
编程生涯: 2001年~至今[14年]
职业生涯: 12年
开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
开发工具: Visual Studio、Delphi、XCode、Eclipse
技能种类: 逆向 驱动 磁盘 文件
研发领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全
项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
[序言]
2015年开始, 中国股市大涨, 号称突破10000点, 我也信了. 通信达股票软件去年开始支持加载外部DLL文件并执行. 这个是一个非常好的开放. 也给广大技术指标股民带来的便利. 作为09年的股民, 不跟上这种技术潮流, 是不行的. 因此这几天索性折腾一番, 发现网络上公布的文章, 要么是技术漏洞百出, 要么是排版非常混乱, 为了改变这种现状, 我有必写出一篇干净整洁的版本.
[阅读群体]
只合适具有C/C++编程经验的技术指标股民阅读, 如果你看不懂大部分的内容, 请补习一下Windows相关编程理论.
[工具准备]
1> 安装一款由通达信定制的股票软件: 比如我的是: 国海证券理财服务终端
2> 安装开发工具: Microsoft Visual Studio 2010版本以上.
[开始开发支持通达信调用的DLL文件]
1>
2>
3>
4>
[根据通达信的规范编写代码]
1>
- 
// 
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;  - 
} 
 
- 
TXDPlugin.def 
: 声明 DLL 的模块参数。  - 
LIBRARY 
 - 
EXPORTS 
 - 
 
; 此处可以是显式导出  - 
 
RegisterTdxFunc @1  
[通达信股票软件如何加载TDXPlugin.dll并调用写好的TDXPlugin1函数呢?]
1>
2>

3>

代码含义:
- 
PluginTCalcFuncInfo 
g_CalcFuncSets[] =  - 
{ 
 - 
 
{ 1, (pPluginFUNC)&TDXPlugin1 },  - 
 
{ 2, (pPluginFUNC)&TDXPlugin2 },  - 
 
{ 3, (pPluginFUNC)&TDXPlugin3 },  - 
 
{ 0, NULL },  - 
}; 
 
TDXDLL1(2, HIGH, CLOSE, LOW) ;
特此声明: 通达信股票软件自带的公式编辑器 已经不属于C/C++编程规范了, 因此我这里不再详细介绍如何使用公式编辑器. 作为一个合格的技术指标股民, 你应该自己研究一下.
[详解TDXDLL1与TDXPlugin1函数的关系]
当通信达股票软件的公式代码调用了TDXDLL1(1, HIGH, CLOSE, LOW)时, 就会把跟HIGH, CLOSE, LOW这3个参数有关的数据传递给TDXPlugin1函数. 比如下面的参数解释
- 
// 
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);  - 
 
}  - 
} 
 
[自定义的DLL函数返回数据并画图]
这个功能, 我使用的是收费模式, 不会免费对外公布. 价格可以私聊QQ:643439947.
[总结]
一般来说, 只要你有丰富的开发经验, 你可以扩展出很多强大的功能. 比如你可以在DLL文件封装一个对话框程序, 那么你在启动通达信股票软件的时候, 也会弹出你自己的对话框程序. 请大家发挥自己的想象力吧......
前一篇:[转载]远离天天抓涨停的骗子!
										后一篇:开方 (数学术语)(百度百科)
					
加载中…