你好,我想请教一下,我也在算ema12,ema26,DIF,DEA之类的,但是发现我算出来的答案跟交易软件的差很多,能指教一下吗?
其实MACD的计算方法中,最核心的内容就是EMA的计算,
知道EMA算法后,DIF、DEA、MACD都是很容易得到的,
在网上所找到的计算公式是:
EMA(N) = 2×当天收盘价/(N+1) + (N-1)×前一天EMA(N-1)/(N+1)
在上面这个公式中,是完全可以依据N天的收盘价来计算出EMA(N)值的,
手动计算的话,可以将公式展开到每天收盘价显示一级,
用计算机程序实现的话,完全可以用迭代法来计算出EMA(N)值;
但在我编写程序过程中,与行情软件中的MACD数据值进行对比,
发现网上提供的这个计算公式是有问题的,EMA(N)的公式应该为
EMA(N) = 2×当天收盘价/(N+1) + (N-1)×前一天EMA(N)/(N+1)
注意正确公式中,最后一项是"前一天EMA(N)",而非"前一天EMA(N-1)";
如果稍具数学基础的话,
从EMA(N)的公式中,就会发现这么个问题,
如果想将公式展开到每天收盘价这一级的话,
那需要这支股票的每天收盘价,而非N天内的收盘价;
如果公式不进行展开,那么EMA(N)的计算就必须有一个"原点"
即知道某天的EMA(N)值,这样才能推算出后面所有的EMA(N)值
我想这就是 tttgggmmm 兄弟你为什么想要某天所有股票EMA(12)和EMA(26)的原因所在;
而我在写程序的时候,就是采用前一天EMA(N)来推算后一天EMA(N)的计算方法,
而前一天的EMA(N)值,就来自于行情软件中,
因为前一天已经是发生过的历史,所以EMA(N)值可以从行情软件中查询出来,
程序只需要实现下一步就OK了,即轻松算出后一天EMA(N)值,从而得到DIF、DEA、MACD值。
至于行情软件中如何实现EMA(N)的无原点计算,我还不得而知,
但至少目前采用"原点"推算法,计算得到的EMA、DIF、DEA、MACD值是与行情软件中完全一致的。 能共享一下吗 顶顶顶 好,不错,留意中。
能不能共享?
出点报酬也行。 希望能把这软件共享出来,谢谢! 不明觉厉 群主这个程序能贡献一下吗~
页:
1
[2]