在对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,测试报告是不可信的
谢谢老师回复,我发现是前面资金亏完了。当时没考虑到这点。发现改了之后入场也没了,所以一直感到困惑