01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx

上传人:b****8 文档编号:29437111 上传时间:2023-07-23 格式:DOCX 页数:9 大小:19.67KB
下载 相关 举报
01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx_第1页
第1页 / 共9页
01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx_第2页
第2页 / 共9页
01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx_第3页
第3页 / 共9页
01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx_第4页
第4页 / 共9页
01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx

《01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx》由会员分享,可在线阅读,更多相关《01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx(9页珍藏版)》请在冰豆网上搜索。

01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编.docx

01原创最标准最简洁的通达信DLL股票插件开发流程之欧阳法创编

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

时间:

2021.03.09

创作:

欧阳法

一、[序言]

2015年开始,中国股市大涨,号称突破10000点,我也信了.通信达股票软件去年开始支持加载外部DLL文件并执行.这个是一个非常好的开放.也给广大技术指标股民带来的便利.作为09年的股民,不跟上这种技术潮流,是不行的.因此这几天索性折腾一番,发现网络上公布的文章,要么是技术漏洞百出,要么是排版非常混乱,为了改变这种现状,我有必写出一篇干净整洁的版本.

二、[阅读群体]

只合适具有C/C++编程经验的技术指标股民阅读,如果你看不懂大部分的内容,请补习一下Windows相关编程理论.

三、[工具准备]

1>安装一款由通达信定制的股票软件:

比如我的是:

国海证券理财服务终端

2>安装开发工具:

MicrosoftVisualStudio2010版本以上.

四、[开始开发支持通达信调用的DLL文件]

1>首先从这个文件包含跟通达信股票软件交互的关键代码.

2>启动MicrosoftVisualStudio2010开发工具从菜单选择“新建”->“项目”->"VisualC++"->"MFC"->"MFCDLL"并输入项目名称:

TDXPlugin然后在弹出的"MFCDLL向导"对话框中选择DLL类型为"使用共享MFCDLL的规则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原有的代码不要删除):

//TDXPlugin1函数是你自己编写的函数,是跟通信达股票软件交互的函数.

//通信达股票软件会调用你这个函数并传递你想要的股票数据给你.(备注:

如何调用这个函数,后面我会讲解)

VoidTDXPlugin1(intDataLen,float*pfOUT,float*pfINa,float*pfINb,float*pfINc)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

//这里添加你自己的股票分析代码(后面会有详细讲解)<<这部分是否可用“七、”数据?

>>

}

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

PluginTCalcFuncInfog_CalcFuncSets[]=

{

{1,(pPluginFUNC)&TDXPlugin1},

{0,NULL},

};

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

BOOLRegisterTdxFunc(PluginTCalcFuncInfo**pFun)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

If(*pFun==NULL)

{

(*pFun)=g_CalcFuncSets;

return TRUE;

}

return FALSE;

}

2>在TXDPlugin.def文件设置函数RegisterTdxFunc为导出函数.

;TXDPlugin.def:

声明DLL的模块参数。

LIBRARY

EXPORTS

;此处可以是显式导出

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结构.

PluginTCalcFuncInfog_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函数.比如下面的参数解释

//intDataLen:

表示接受到多少天的数据,有时是742,有时1800等等不同的

//float*pfINa:

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

//float*pfINb:

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

//float*pfINa:

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

VoidTDXPlugin1(intDataLen,float*pfOUT,float*pfINa,float*pfINb,float*pfINc)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

//连续打印N天的数据

WCHARwchar_pintf[1024];

For(intint_Index=0;int_Index

{

swprintf(wchar_pintf,L"DataLen:

%dHIGH:

%fCLOSE:

%fLOW:

%f",int_Index,pfINa[int_Index],pfINb[int_Index],pfINc[int_Index]);

OutputDebugString(wchar_pintf);

}

}

 备注:

OutputDebugString是一个打印函数,你需要通过DebugView工具查看.

八、[自定义的DLL函数返回数据并画图]

这个功能,我使用的是收费模式,不会免费对外公布.价格可以私聊QQ:

643439947 

九、[总结]

一般来说,只要你有丰富的开发经验,你可以扩展出很多强大的功能.比如你可以在DLL文件封装一个对话框程序,那么你在启动通达信股票软件的时候,也会弹出你自己的对话框程序.请大家发挥自己的想象力吧......

==========================================================================================

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

一、[序言]

二、[阅读群体]

三、[工具准备]

1>安装一款由通达信定制的股票软件

2>安装开发工具:

MicrosoftVisualStudio2010版本以上.

四、[开始开发支持通达信调用的DLL文件]

1>解压红宝书“通达信DLL函数编程规范.rar”并提取PluginTCalcFunc.h头文件

2>启动MicrosoftVisualStudio2010并创建项目:

TDXPlugin,通过"MFCDLL向导"选择DLL类型

3>配置刚创建好的TDXPlugin项目属性(从菜单选择"项目"->"TDXPlugin属性"->"常规")

3.1>输出目录:

C:

\zd_ghzq\T0002\dlls

3.2>MFC的使用:

在静态库中使用MFC

4>在刚创建好的TDXPlugin项目中添加之前提取出来的PluginTCalcFunc.h头文件.

五、[根据通达信的规范编写代码]

1>在TDXPlugin.cpp文件添加如下代码(注意:

TDXPlugin.cpp原有的代码不要删除):

2>在TXDPlugin.def文件设置函数RegisterTdxFunc为导出函数.

3>开始编译,在C:

\zd_ghzq\T0002\dlls的目录下生成TDXPlugin.dll

六、[通达信股票软件如何加载TDXPlugin.dll并调用写好的TDXPlugin1函数呢?

]

1>启动你的通达信股票软件,按CTRL+F激活"公式管理器",单击"DLL函数"

2>在"绑定DLL函数"对话框中,单击"打开绑定",并选择之前生成好的TDXPlugin.dll文件

3>成功绑定之后,你就可以在通达信股票软件自带的公式编辑器,写代码

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

八、[自定义的DLL函数返回数据并画图]

九、[总结]

和伞沟通记录

我操作的结果1:

TDXplugin.cpp追加修改了

我操作的结果2:

TDXplugin.def追加修改了

上述发给伞,让伞帮忙看编译(生成)出错原因。

伞说:

此外还要加导出声明

extern"C"__declspec(dllexport)

函数要加上这个声明才会被导出

不加的话只是普通函数

我问:

加在哪里?

伞回:

加在在代码里面(

又回:

我们都是这样导出的,最一般的导出声明

关于《开发流程》的问题:

1、

//TDXPlugin1函数是你自己编写的函数,是跟通信达股票软件交互的函数.

问:

程序中那一部分范围是:

上述TDXPlugin1函数?

TDXPlugin1函数是跟通信达股票软件交互的函数?

//通信达股票软件会调用你这个函数并传递你想要的股票数据给你.(备注:

如何调用这个函数,后面我会讲解)

问:

(备注:

如何调用这个函数,后面我会讲解)是不是指的是后文:

“六、[通达信股票软件如何加载TDXPlugin.dll并调用写好的TDXPlugin1函数呢?

]“这一节?

但是这一节里面有一个问题:

题目是”加载TDXPlugin.dll并调用写好的TDXPlugin1函数“,但是本节就没有看见TDXPlugin1函数嘛?

是不是自定义的”TDXPlugin1函数“已经融入”五、[根据通达信的规范编写代码]“编写好的代码,并通过追加项目”TDXPlugin“的.cpp和.def文件并编译生成TDXPlugin.dll,实现了”自定义的”TDXPlugin1函数“通过”编译生成TDXPlugin.dll“被通达信调用。

是否可以总结如下:

自编的TDXPlugin1函数(解决了自己的问题)→进入.cpp和.def文件并编译生成TDXPlugin.dll→TDXPlugin.dll绑定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*0.83,COLORRED;

蓝:

VAR3*0.91;

真:

C,COLORBROWN;

时间:

2021.03.09

创作:

欧阳法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1