口腔感染

首页 » 常识 » 诊断 » 李津的大局观编写通达信DLL,手把手教你
TUhjnbcbe - 2025/2/17 19:53:00
青少年白癜风公益活动 https://m-mip.39.net/pf/mipso_4636739.html
#通达信#首先,先下载一个VisualStudio,安装完之后,打开它

之后点击打开文件通达信dll

第三步点击文件—新建—项目

这里会看到这个通达信dll界面,点箭头标注的地方

第四步:点win32项目,给这个项目起个名称,名称ChanlunTdx

第五步:确认,点下一步

第六步选择dll,选择完成通达信dll

第七步通达信dll

第八步:点头文件,点添加,点现有项通达信dll

找到通达信dll的编程规范并解压,打开所解压的文件夹

双击添加通达信dll提供的头文件

把通达信dll提供的头文件名称改成:ChanLunTdx

将通达信dll以下代码复制进去

#ifndef__PLUGIN_TCALC_FUNC

#define__PLUGIN_TCALC_FUNC

#pragmapack(push,1)

//函数(数据个数,输出,输入a,输入b,输入c)

typedefvoid(*pPluginFUNC)(int,float*,float*,float*,float*);

typedefstructtagPluginTCalcFuncInfo

{

unsignedshortnFuncMark;//函数编号

pPluginFUNCpCallFunc;//函数地址

}PluginTCalcFuncInfo;

typedefBOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);

//RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。

typedefBOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);

//=======================================

extern"C"

{

//__cplusplus

__declspec(dllexport)BOOLRegisterTdxFunc(PluginTCalcFuncInfo**pFun);

}

#pragmapack(pop)

#endif

复制下面的内容到红框后,对着截图通达信dll排好版,这很重要,这一步也是最关键:

#ifndef__PLUGIN_TCALC_FUNC

#define__PLUGIN_TCALC_FUNC

#pragmapack(push,1)

//函数(数据个数,输出,输入a,输入b,输入c)

typedefvoid(*pPluginFUNC)(int,float*,float*,float*,float*);

typedefstructtagPluginTCalcFuncInfo

{

unsignedshortnFuncMark;//函数编号

pPluginFUNCpCallFunc;//函数地址

}PluginTCalcFuncInfo;

typedefBOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);

//RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。

typedefBOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);

//=======================================

extern"C"

{

//__cplusplus

__declspec(dllexport)BOOLRegisterTdxFunc(PluginTCalcFuncInfo**pFun);

}

#pragmapack(pop)

#endif

快速操作与重构通达信dll

消除曲线错误提示后,左键点通达信dll这个

将红框的通达信dll全删除

删除掉之后点击通达信dll这个

以下通达信dll代码全部复制进去:

//ChanLunTdx.cpp:定义DLL应用程序的导出函数。

//

#include"stdafx.h"#include"ChanLunTdx.h"

//生成的dll及相关依赖dll请拷贝到通达信安装目录的T/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=(2*pfINa+(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=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

从最下层朝上排版

对着图排好版,有一个好方法,就是按删除键,删到上一行的末尾的时候再按确认键,让软件默认排通达信dll

这是下半部分

从最后朝前排版通达信dll

点生成,点生成解决方案通达信dll

删除掉无效的框框内的内容,注意看好内容,别删错通达信dll

到这一步已经生成成功了!看看能不能绑定通达信dll

右键点击这个项目名称,点击最后一行属性,打开文件资源管理器中的文件夹通达信dll

看好路径,打开这个文件通达信dll

我们的劳动成果就是这个通达信dll,一定要保管好,先复制下

打开dlls文件夹,把我们的劳动成果复制进去

通达信dll点dll函数,dll绑定

这里通达信dll名字自己想,点主图叠加

A:=TDXDLL1(2,C,5,0);

B:=TDXDLL1(2,C,10,0);

CC:=TDXDLL1(1,C,10,0);

A,COLORWHITE;

B,COLORYELLOW;

CC,COLORGREEN;

成功了通达信dll完成了恭喜你

1
查看完整版本: 李津的大局观编写通达信DLL,手把手教你