FOR循环语句里,如果实现MACD功能。

我有若干个图层,需要同时计算MACD值,为了减少代码量,我想通过FOR循环来实现各个图层的计算。目前采用了以下两种方案,都失败了,求助。/*---以下为方案A,但计算出来的值不正确---i是订阅的图层ID----*/OnBar(ArrayRef<Integer> indexs) { For i = 1 to 4 { data[i].DIF = data[i].XAverage( Close, MN1 ) - data[i].XAverage( Close, MN2 ); data[i].DEA = data[i].XAverage( DIF, MN3 ); data[i].ACD = 2 * ( data[i].DIF - data[i].DEA ); } } /*--但是以上A方案代码编译出错,DIF、DEA行号,提示:警告 FOR,WHILE,IF,ELSE中包含序列函数,可能存在潜在的逻辑错误。请确认代码无误--*//*---以下为方案B,---i是订阅的图层ID----*/Vars Series<Numeric> EMA11; Series<Numeric> EMA22; Series<Numeric> EMA33; OnBar(ArrayRef<Integer> indexs) { EMA11 = XAverage( Close, MN1 ); EMA22 = XAverage( Close, MN2 ); EMA33 = XAverage( DIF, MN3 ); For i = 1 to 4 { data[i].DIF = data[i].EMA11 - data[i].EMA22; data[i].DEA = data[i].EMA33; data[i].ACD = 2 * ( data[i].DIF - data[i].DEA ); } } /*--但以上B方案计算出来的值不正确--*/

自定义字段也是用RANGE然后你的问题是:1、编译不过?2、结果不对?3 其他

为甚不不用 Range[0:datacount-1], 这是tb的最大特色, 多图层处理啊,

回复:我需要做行情自定义指标字段

回复:计算指标可以先用range,然后在0图层输出, 比如range[0:datacount-1]{计算macd}然后range[0:0]{ plotauto(“图层1macd”,data[1].macd); plotauto(“图层2macd”,data[2].macd);}

回复:好的,谢谢,如果在代码多图层共用方面,有更简便的方式就好了。