我们先来用DLL来做MACD这个我们非常熟悉的指标,大家都是厉害人物,高手就旁观或绕道,勿笑

160110379_1_20190430070846919.png

上图的函数是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表示就是这样的

160110379_2_20190430070848872.png

把本来是N的,换成12,就表示是EMA(CLOSE,12);

第一个DIF里的EMA(CLOSE,26),就照葫芦画瓢

把图中N改成26

160110379_3_20190430070849700.png

主楼是这样表达的,那么

我们要让人看不出来DIF是怎样计算的

就这样来

下图中的公式是这样在我们的通达信常用指标中表示的

DIF:EMA(CLOSE,12)-EMA(CLOSE,26);

160110379_4_2019043007085059.png

但原别出错,图中用到的最基础的代码

我发的时候什么也不缺,但是显示的时候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

pfOUT= (2 * pfINa+ (N - 1)*pfOUT[i - 1]) / (N + 1);

}

第二图和第三图我们做成DLL后,比如说排在8和9

我们是绑定在通达信的第10个上

上一篇那个教程要看明白

那么上两个函数表达分别就是

TDXDLL10(8,C,L,H)

TDXDLL10(9,C,L,H)

160110379_5_20190430070850778.png

怎样表达:

A1:=EMA(CLOSE,12);

A1>REF(A1,1);

就是今天大于昨天

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐