请指教一下,我的程序有没有什么编写错误的地方

Params Numeric length(9); Numeric LengthRSI(16); Numeric MTMlength(5); //MTM均值计算值 Numeric longband(60); //rsi 向上突破边界值 Numeric shoryband(40); //rsi 向下突破边界值 Numeric lots(1); Vars series<Numeric> MTM(0); series<Numeric> MTMMA(0); series<Numeric> longstop(0); series<Numeric> Highafterentry(0); series<Numeric> shortstop(0); series<Numeric> lowafterentry(0); series<Numeric> NetChgAvg( 0 ); series<Numeric> TotChgAvg( 0 ); series<Numeric> RSIValue; Numeric SF( 0 ); Numeric Change( 0 ); Numeric ChgRatio( 0 ) ; Numeric stoppoint(10); //多头止损点 Numeric stoppoint1(10); //空头止损点 Events OnBar(ArrayRef<Integer> indexs) { stoppoint=Average(TrueRange(),10); stoppoint1=Average(TrueRange(),10); MTM=close-close[length]; //计算MTM动能指标 MTMMA=Average(MTM,MTMlength); //计算MTM动能指标均值 //-------------------------计算RSI------------------------------- If(CurrentBar <= LengthRSI - 1) { NetChgAvg = ( Close - Close[LengthRSI] ) / LengthRSI ; TotChgAvg = Average( Abs( Close - Close[1] ), LengthRSI ) ; } Else { SF = 1/LengthRSI; Change = Close - Close[1] ; NetChgAvg = NetChgAvg[1] + SF * ( Change - NetChgAvg[1] ) ; TotChgAvg = TotChgAvg[1] + SF * ( Abs( Change ) - TotChgAvg[1] ) ; } If( TotChgAvg <> 0 ) { ChgRatio = NetChgAvg / TotChgAvg; } else { ChgRatio = 0 ; } RSIValue = 50 * ( ChgRatio + 1 ); //---------------------------开仓条件为MTM 金叉MTM均值意味着行情呈现强势, //并且同时RSI 也突破做多边界,反之亦然---------------------------- if (marketposition==0 && CrossOver(mtm[1],mtmma[1]) && RSIValue[1]>=longband ) { buy (lots,Open); } if (marketposition==0 && CrossUnder(mtm[1],mtmma[1]) && RSIValue[1]<=shoryband) { sellshort(lots,Open); } if (barssinceentry==0) { longstop=min(low,low[1])-stoppoint; //入场的当跟k线的最低价与前一根k线的最低价进行比较,谁低作为出场止损价 Highafterentry=high; } //-------------------------多头出场模块-------------------------------------- if (high>Highafterentry) { Highafterentry=high; //如果不断创新高Highafterentry 这个变量值就是新高 } if (barssinceentry>0) { if (c[1]>Highafterentry[2]) { longstop=min(low,low[1])-stoppoint; //如果收盘价比前一个新高要高,那么止损价格就变为这一根k线和前低的最低价-10为止损点 } } if (marketposition==1 && Low<=longstop) { sell(lots,longstop); //止损操作止损价格为longstop,计算方法见上一句 } //-------------------------空头出场模块-------------------------------------- if (low<lowafterentry) { lowafterentry=low; //如果不断创新低lowafterentry 这个变量值就是新低 } if (barssinceentry==0) { shortstop=max(high,high[1])+stoppoint;//入场的当跟k线的最高价与前一根k线的最高价进行比较,谁低作为出场止损价 lowafterentry=low; } if (barssinceentry>0) { if (c[1]<lowafterentry[2]) { shortstop=max(high,high[1])+stoppoint; //入场的当跟k线的最高价与前一根k线的最高价进行比较,谁高作为出场止损 } } if (marketposition==-1 && high>=shortstop) { buytocover(lots,shortstop); //止损操作止损价格为longstop,计算方法见上一句 } }

检查错误的主要步骤有两部分 第一部分,观察图表上的信号,确认信号是否与策略思路一致 第二部分,模拟交易,检查实际报单的时间价格手数是否和图表信号一致