实测帮助文件的延迟反手不能实现平仓之后延迟几个tick反手开仓
帮助文件代码原文如下,实测是在下个K线才反手开仓,求解答 Params Numeric FastLength(5); Numeric SlowLength(20); Numeric DelayTicks(5); Vars Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Numeric LastBarTime; Numeric TickCounter; Numeric dataIndex; Events OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close,FastLength); AvgValue2 = AverageFC(Close,SlowLength); LastBarTime = GetGlobalVar(0); TickCounter = GetGlobalVar(1); // 最新Bar第一次生成时,Tick重新开始计数 If(BarStatus == 2 && gValue[0]!= Time) { LastBarTime = Time; TickCounter = 0; } If(MarketPosition <> 1 && AvgValue1[1] > AvgValue2[1]) { If(MarketPosition == 0 || BarStatus != 2) // 无持仓,直接买多仓 // 持空仓且Bar不是实时行情,平空仓,买多仓 { Buy(1,Open); }Else // 持空仓,Bar实时行情,平空仓,通过TickCounter计数,延迟反手 { BuyToCover(1,Open); If(TickCounter == 0) { TickCounter = 1; }Else If(TickCounter < DelayTicks) { TickCounter = TickCounter + 1; }Else { Buy(1,Open); } } } If(MarketPosition <> -1 && AvgValue1[1] < AvgValue2[1]) { If(MarketPosition == 0 || BarStatus != 2) { SellShort(1,Open); }Else // 持多仓且Bar为实时行情,平多,延迟反手 { Sell(1,Open); If(TickCounter == 0) { TickCounter = 1; }Else If(TickCounter < DelayTicks) { TickCounter = TickCounter + 1; }Else { SellShort(1,Open); } } } SetGlobalVar(0,LastBarTime); SetGlobalVar(1,TickCounter); }