通达信DLL插件实战篇,怎样制作我们想要的函数
-
相关简介:通达信DLL插件实战篇,怎样制作我们想要的函数 最好是上一篇明白了,再看现在的这个帖子,因为这一篇是提高篇,有了这一篇,你想要的函数,以及怎样组合这些函数,就全部明白了 我们先来用DLL来做MACD这个我们非常熟悉的指标,大家都是厉害人物,高手就旁观或绕道,勿笑 上图的函数是EMA的函数 最后一行的两个N要改成相同的数值,看下图 我们知道MACD的公式是这样的: DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); MACD:(DIF-DEA)*2,
-
文章来源:股海网作者:股海网发布时间:2018-12-26浏览次数:

通达信DLL插件实战篇,怎样制作我们想要的函数
最好是上一篇明白了,再看现在的这个帖子,因为这一篇是提高篇,有了这一篇,你想要的函数,以及怎样组合这些函数,就全部明白了
我们先来用DLL来做MACD这个我们非常熟悉的指标,大家都是厉害人物,高手就旁观或绕道,勿笑
上图的函数是EMA的函数
最后一行的两个N要改成相同的数值,看下图
我们知道MACD的公式是这样的:
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
short 和long被我直接用数值代替了
第一个DIF里的EMA(CLOSE,12)用DLL表示就是这样的
把本来是N的,换成12,就表示是EMA(CLOSE,12);
第一个DIF里的EMA(CLOSE,26),就照葫芦画瓢
把图中N改成26
主楼是这样表达的,那么
我们要让人看不出来DIF是怎样计算的
就这样来
下图中的公式是这样在我们的通达信常用指标中表示的
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
但原别出错,图中用到的最基础的代码
我发的时候什么也不缺,但是显示的时候pfOUT后面少了一个中括号,中括号里还有一个i,自己看仔细,源码也在附件里
void EMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
float fTemp = 0.0;
int N = int(*pfINb);
pfOUT[0] = 0.0;
for (int i = 1;
i<DataLen; i++)
pfOUT = (2 * pfINa + (N - 1)*pfOUT[i - 1]) / (N + 1);
}
第二图和第三图我们做成DLL后,比如说排在8和9
我们是绑定在通达信的第10个上
上一篇那个教程要看明白
那么上两个函数表达分别就是
TDXDLL10(8,C,L,H)
TDXDLL10(9,C,L,H)
怎样表达:
A1:=EMA(CLOSE,12);
A1>REF(A1,1);
就是今天大于昨天