输出目录: C:\zd_ghzq\T0002\dlls 备注: 这个是通达信股票软件的安装目录, 视你的当前环境来填写. 当你进入安装目录的时候, 发现没有dlls这个文件夹时, 你可以自己创建.
3.2 MFC的使用: 在静态库中使用MFC
4> 在刚刚创建好的TDXPlugin项目中添加之前提取出来的PluginTCalcFunc.h头文件
启动你的通达信股票软件, 按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结构.
[详解TDXDLL1与TDXPlugin1函数的关系]
当通信达股票软件的公式代码调用了TDXDLL1(1, HIGH, CLOSE, LOW)时, 就会把跟HIGH, CLOSE, LOW这3个参数有关的数据传递给TDXPlugin1函数.
将回调函数入口赋值给g_pFuncCallBack,自编程序中可以就可以使用g_pFuncCallBack函数调用通达信内部数据(如开盘价、收盘价、最高价、最低价、成交金额、成交量等等(具体数据结构参见OutStruct.h)。
PDATAIOFUNC g_pFuncCallBack;
void RegisterDataInterface(PDATAIOFUNC pfn)
{
g_pFuncCallBack = pfn;
}
然后就可以进行正式编程了
/ 注册插件信息 ///
//注册插件信息:将公式名称,公式描述,参数数量、参数名字、参数最大最小及默认值等信息传送给通达信,并将存储区地址传递给LPPUGIN结构的指针info(具体数据结构将Plugin.h。本函数的具体参数赋值可以根据用户需要修改。
void GetCopyRightInfo(LPPLUGIN info)
{
//填写基本信息
strcpy(info->Name,"插件选股1"); //此信息会显示在通达信插件选股对话框中“名称”栏
strcpy(info->Dy,"上海");
strcpy(info->Author,"Julian Zhang"); //此信息会显示在通达信插件选股对话框中“设计人”栏
strcpy(info->Period,"短线"); //还不清楚有什么用
strcpy(info->Descript,"MA上穿选股"); //此信息会显示在通达信插件选股对话框中“选股对象”栏
strcpy(info->OtherInfo,"无其它信息描述");
//填写参数信息
info->ParamNum = 2; //定义插件参数数量,必须是[0~4]之间整数;
strcpy(info->ParamInfo[0].acParaName,"MA短天数"); //第一个参数的名称
info->ParamInfo[0].nMin=1; //这部分通达信官方模板错误写成nMax,应该为nMin,参数最小值;
info->ParamInfo[0].nMax=1000; //定义参数最大值
info->ParamInfo[0].nDefault=10; //定义参数默认值
strcpy(info->ParamInfo[1].acParaName,"MA长天数"); //第二个参数的名称
info->ParamInfo[1].nMin=1;
通达信DLL函数编程规范文件说明:
TestPluginTCale.cpp:DLL入口点
PluginTCalcFunc.h:导出函数声明
TCalcFuncSets.h
TCalcFuncSets.h.cpp:定义导出函数
//导出给TCalc的注册函数
BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)
{
if(*pFun==NULL)
{
(*pFun)=g_CalcFuncSets;
return TRUE;
}
return FALSE;
}
然后在公式管理器中通过DLL函数按钮进行绑定,如果绑定失败,可以直接在DLLS目录的配置文件DLLS这个文本文件中将绑定添加进去。
如果绑定失败就不要从快捷方式启动,直接从安装路径启动