关于回测过程中以Low和High为平仓条件的一点问题

在对ru888的回测过程中,我使用以下代码。当平仓条件使用LOW和High的时候,就会出现已经满足开仓条件,并且Commentary执行了,但是Buy不执行的情况。如果将LOW和HIGH改为Close,那么就不会出现该情况??想问问这是怎么回事? Params Numeric Length(14); //周期 Numeric AvgLength(9); //平均周期 Vars Global Numeric Lsign; Series<Numeric> TmpValue; Numeric Mean( 0 ); Numeric AvgDev( 0 ); Numeric Counter( 0 ) ; Series<Numeric> CCI(0); Numeric CCIAvg; Numeric MA; Events OnBar(ArrayRef<Integer> indexs) { TmpValue = High + Low + Close; Mean = AverageFC( TmpValue, Length ) ; AvgDev = 0 ; for Counter = 0 to Length - 1 { AvgDev = AvgDev + Abs( TmpValue[Counter] - Mean ) ; } AvgDev = AvgDev / Length ; if( AvgDev == 0) CCI = 0; Else CCI = ( TmpValue - Mean ) / ( 0.015 * AvgDev ) ; CCIAvg = AverageFC(CCI, AvgLength ); If(CCI > CCI[1]) { Lsign = 1; //做多 }Else { Lsign = -1; //做空 } MA = Average(Close[1],10); If(Lsign == 1 And MarketPosition == 0) { //做多 Commentary("做多"); Buy(1,Close); } If(Lsign == -1 And MarketPosition == 0) { //做空 Commentary("做空"); SellShort(1,Close); } If(Low < MA And MarketPosition == 1) { //做多平仓 Commentary("做多平仓"); Sell(1,MA); } If(High > MA And MarketPosition == -1) { //做空平仓 Commentary("做空平仓"); BuyToCover(1,MA); } //} Commentary("CCI:"+Text(CCI)); Commentary("CCI[1]:"+Text(CCI[1])); Commentary("MAR:"+Text(MarketPosition)); PlotAuto("MA",MA); }

第一 你这个cci指标是闪烁的吧?我最近一次课正好讲了这个cci指标,里面应该说过信号闪烁,你可以看看视频回放 第二 开仓信号会不会出现,跟你平仓信号是没有关系的...这完全是独立的两件事,你怎么会觉得有关系? 第三 满足信号条件却不开仓,你确定你还有可用资金?不会是前面历史信号累积下来亏完了? 第四 交易价格用close,测试报告是不可信的

回复:谢谢老师回复,我发现是前面资金亏完了。当时没考虑到这点。发现改了之后入场也没了,所以一直感到困惑