图文手把手教你一步步用VC++2010编写通达信缠论插件(1-DLL设计入门)按照图文提示,一步步往下走,按照说明,创建VC++2010工程,把文中的代码拷贝到文中说明的位置,编译运行,绝对通过!本篇免收下载券。后面的要收了,但是,收也收很少,顶多收你一个下载券,我心不贪,请大家支持点儿。本来都是玩儿的,但是,我下载别人的资料,也要下载券啊!同志们,别骂我。深谷老榆制作,2016.4.24第一步、从“文件”菜单中,选择“新建”,然后选择“项目…”。这时候弹出“新建项目”窗口,从“项目类型”窗格中选择“Win32项目”,并填写工程名称,自己命名,我这里是ChanLunTdx。点击“确定”按钮,出现下面“Win32应用程序向导”窗口:点击“下一步”按钮,出现“应用程序设置”窗口。“应用程序类型”选择“DLL”,然后单击“完成”按钮。程序框架基本搭成。第二步、双击“解决方案资源管理器”中“源文件”中的dllmain.cpp文件,按照下图所示删掉无用代码:则dllmain.cpp文件内容如下所示://dllmain.cpp:定义DLL应用程序的入口点。#includestdafx.hBOOLAPIENTRYDllMain(HMODULEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){returnTRUE;}第三步、鼠标右键单击工程名,出现一个弹出窗口,选择“添加(D)”下“新建项(W)...”:点击后出现“添加新项”窗口,在其中选择“头文件(.h)”,下面文件名选择“ChanLunTdx”,单击下面“添加”按钮:把下面代码拷贝进去://ChanLunTdx.h:定义DLL应用程序的导出函数。//#ifndef__CHANLUNTDX_H__#define__CHANLUNTDX_H__//#includePluginTCalcFunc.h//======================================#pragmapack(push,1)//函数(数据个数,输出,输入a,输入b,输入c)typedefvoid(*pPluginFUNC)(int,float*,float*,float*,float*);//PluginTCalcFuncInfo结构用来存放用户自己的函数pCallFunc和函数唯一标记nFuncMark;//pCallFunc是typedefvoid(*pPluginFUNC)(intDataLen,float*pfOUT,float*pfINa,float*pfINb,float*pfINc)类型指针;//函数参数分别是(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen的float类型数组。typedefstructtagPluginTCalcFuncInfo{unsignedshortnFuncMark;//函数编号pPluginFUNCpCallFunc;//函数地址}PluginTCalcFuncInfo;//RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。typedefBOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);#pragmapack(pop)//=======================================#ifdef__cplusplusexternC{#endif//__cplusplus__declspec(dllexport)BOOLRegisterTdxFunc(PluginTCalcFuncInfo**pFun);#ifdef__cplusplus}#endif//__cplusplus#endif//__TCALC_FUNC_SETS第四步、双击“解决方案资源管理器”中“源文件”中的ChanLunTdx.cpp文件,把下面代码全部拷贝进去://ChanLunTdx.cpp:定义DLL应用程序的导出函数。//#includestdafx.h#includeChanLunTdx.h//生成的dll及相关依赖dll请拷贝到通达信安装目录的T0002/dlls/下面,再在公式管理器进行绑定//函数:EMA(X,N)//说明:指数平滑移动平均卖一价求指数平滑移动平均。//用法:EMA(X,N),求X的N日指数平滑移动平均。//算法:若Y=EMA(X,N)则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。//例如:EMA(CLOSE,30)表示求30日指数平滑均价//通达信中用的时候,第一个输入参数是收盘价,第2个输入参数是常量,第三个输入参数为空;voidEMA(intDataLen,float*pfOUT,float*pfINa,float*pfINb,float*pfINc){floatfTemp=0.0;intN=int(*pfINb);pfOUT[0]=0.0;for(inti=1;iDataLen;i++)pfOUT[i]=(2*pfINa[i]+(N-1)*pfOUT[i-1])/(N+1);}//----------------------------------------------函数MA(X,N)-----------------------------------//别名:简单移动平均//所属类别:引用函数参数数量:2//求简单移动平均。//用法:MA(X,N),求X的N日简单移动平均值。//算法:(X1+X2+X3+...+Xn)/N//例如:MA(CLOSE,20)表示求20日均价//通达信中用的时候,第一个输入参数是收盘价,第2个输入参数是常量,第三个输入参数为空;//A:=TDXDLL2(2,C,5,0);//B:=TDXDLL2(2,C,10,0);//A,COLORWHITE;//B,COLORYELLOW;voidMA(intDataLen,float*pfOUT,float*pfINa,float*pfINb,float*pfINc){intN=int(*pfINb);floatsum;for(inti=N-1;iDataLen;i++){sum=0.0;for(intj=0;jN;j++)sum=sum+pfINa[i-j];pfOUT[i]=sum/N;}}//加载的函数PluginTCalcFuncInfog_CalcFuncSets[]={{1,(pPluginFUNC)&EMA},{2,(pPluginFUNC)&MA},{0,NULL},};//导出给TCalc的注册函数BOOLRegisterTdxFunc(PluginTCalcFuncInfo**pFun){if(*pFun==NULL){(*pFun)=g_CalcFuncSets;returnTRUE;}returnFALSE;}第五步,编译生成动态链接库dll。在工程项目下的Debug目录下面,如下图所示。第六步,把生成的DLL,即ChanlunTdx.dll拷贝到通达信的T0002下面的dlls目录下去。第七步,打开通达信的公式管理器,鼠标单击DLL函数,按照要求,把刚才拷贝进来的ChanLunTdx.dll绑定到1号DLL中去(具体多少号自己定)第八步,新建通达信主图指标,公式名称:CZSC,画线方式:主图叠加;公式代码如下图所示:为了方便大家粘贴,我复制一下:A:=TDXDLL1(2,C,5,0);B:=TDXDLL1(2,C,10,0);CC:=TDXDLL1(1,C,10,0);A,COLORWHITE;B,COLORYELLOW;CC,COLORGREEN;第九步,在通达信主图上键入CZSC,效果图如下:成功了,祝贺你!