典型的未来(repaint/redraw)。
建议修改指标逻辑,否则这种指标根本不能实际应用。
估计是mt4不会在每个新tick来临之时重新计算所有的buffer,要不计算量太大了。它应该只计算新的。
建议改写你的ea。
或者在12柱的时候,重新计算你的ea,比如 当图表变成12柱时,理论上 Print( iCustom(NULL,0,"A",0,4)),用循环重新计算1-12柱。这样计算量大了许多。
wangfs111222:
估计是mt4不会在每个新tick来临之时重新计算所有的buffer,要不计算量太大了。它应该只计算新的。
建议改写你的ea。
或者在12柱的时候,重新计算你的ea,比如 当图表变成12柱时,理论上 Print( iCustom(NULL,0,"A",0,4)),用循环重新计算1-12柱。这样计算量大了许多。
奇怪的地方就在这儿,我设计成每次有新柱时就会重新计算前面的5个柱,所以按理论上即使有错误,应该也在重算时排除了。
不管这个错误了,我要改EA。
环境:MT4
1、自定义指标A,有一个double 缓冲数组S[];
当前图表共有10柱,给第3柱赋值S[2]=3.3;
当图表运行了一段时间,图表变成11柱,原第3柱变成了第4柱S[3],这时将第4柱S[3]清零,赋值S[3]=0.0;
图表继续运行一段时间,图表变成12柱,原第3柱变成第5柱S[4],用Print(S[4]) ,显示S[4]=0.0;
以上正常。
2、有一个EA名称为MTEA,MTEA引用自定义指标A,
当图表只有10柱时,Print( iCustom(NULL,0,"A",0,2)) =3.3,正确。
当图表变成12柱时,理论上 Print( iCustom(NULL,0,"A",0,4)) =0.0,但这时Print( iCustom(NULL,0,"A",0,4))仍然等于3.3 ,为什么会这样??
(当图表运行一段时间变成11柱时,不是已经将原第3柱清零了吗,为什么仍然是3.3?)
并且更奇怪的是,当EA继续运行一段时间,图表变成20柱时,再 Print( iCustom(NULL,0,"A",0,12)) ,居然又显示为0.0了。