本帖最后由 技术009 于 2023-5-11 17:29 编辑
本质上是重构macd算法,很简单的处理:
[PEL] 复制代码 input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
C1:=refx(c,1);//直接调用未来的C,方便验证算法有效性。我们只需要对比当前的MACD0 和下一个K上正常的macd数值是否一致即可
//之后你这里的C1,你可以随便赋予其他值
EMA_S1:="EXPMA.M1"(S);
EMA_P1:="EXPMA.M1"(P);
DEA1:="MACD.DEA";
EMA_S0:=(2*C1+(S-1)*EMA_S1)/(S+1);//基于当前价格 和 '未来值'C1的EMA结果
EMA_P0:=(2*C1+(P-1)*EMA_P1)/(P+1);
DIFF0:=EMA_S0-EMA_P0;
DEA0:=(2*DIFF0+(M-1)*DEA1)/(M+1);//dea值
MACD0 :2*(DIFF0-DEA0), COLORSTICK;//最终结果的macd值
上面测试范例 运行在序列模式 就行了。因为使用了refx 来方便验证。 后面你自己定义C1值 就可以改成常规逐K模式就行了。
如下图所示,给定一个未来的值,它的确算出来了最后那个K结束时候的macd数值。
|