这段代码出现跨周期跟踪止损信号闪烁请问问题在哪里?
Data0是选择的1小时周期,在程序里面subscribeBar 1天。 跨周期出现了信号闪烁,信号闪烁可能的原因有1.方向,2价格,3仓位,4买卖,我跟踪止损里面这4点都打印了一遍出来是固定死的,不知道为什么还是会出现信号闪烁,请教老师,谢谢您抽一点时间回答。 OnInit() { SubscribeBar(Symbol, "1d", 20100101); } OnBar() { Range[0:1] { atr = Average(TrueRange, ATRLength); } For layer = 0 To GetArraySize(indexs) - 1 { if(indexs[layer] == 0) { Range[0:0] { // 追踪止损 If(MarketPosition == 1) { If(BarsSinceEntry == 0) // 开仓后第一根bar,直接等于开仓价 { HighestAfterEntry = AvgEntryPrice; } Else If(BarsSinceEntry > 0) // 之后的bar不断用最高和之前最高价做对比,赋值给开仓后最高价 { HighestAfterEntry = Max(HighestAfterEntry[1], high[1]); } Else { HighestAfterEntry = HighestAfterEntry[1]; } //跟踪止损平仓 If(MarketPosition == 1 and BarsSinceEntry > 0 and HighestAfterEntry - AvgEntryPrice > NATRstop*atr[1]) // 有多仓并且最低价已经低于开仓均线的xx 倍atr { If(low <= HighestAfterEntry - NATRstop*atr[1]) { Sell(0, Min(Open, HighestAfterEntry - NATRstop*atr[1])); Normal_trailing_long = True; PlotString("trailing stop", "trailing stop", high*1.01, White); } } // 硬止损平仓 If(MarketPosition == 1 and BarsSinceEntry > 0 and low <= AvgEntryPrice - NATRstop*atr[1]/ts) // 只有硬止损时加上ts系数 { MyExitPrice = Min(Open, AvgEntryPrice - NATRstop*atr[1]/ts); Sell(0, MyExitPrice); PlotString("HardStop", "HardStop", high*1.01, White); } } Else If(MarketPosition == -1) { If(BarsSinceEntry == 0) // 开仓后第一根bar,直接等于开仓价 { LowestAfterEntry = AvgEntryPrice; } Else If(BarsSinceEntry > 0) // 之后的bar不断用最低和之前最低价做对比,赋值给开仓后最低价 { LowestAfterEntry = Min(LowestAfterEntry[1], low[1]); } Else // 没有仓位时,保持上次价格信息,没有其他用途 { LowestAfterEntry = LowestAfterEntry[1]; } //跟踪止损平仓 If(MarketPosition == -1 and BarsSinceEntry > 0 and (AvgEntryPrice - LowestAfterEntry) > NATRstop*atr[1]) // 有空仓并且最高价已经大于开仓均线的xx 倍atr { If(high >= (LowestAfterEntry + NATRstop*atr[1])) { BuyToCover(0, Max(Open, LowestAfterEntry + NATRstop*atr[1])); Normal_trailing_short = True; PlotString("trailing stop", "trailing stop", high*1.01, White); begins = False; big_cond[0] = 0; } } // 硬止损平仓 If(MarketPosition == -1 and BarsSinceEntry > 0 and high >= (AvgEntryPrice + NATRstop*atr[1]/ts)) { MyExitPrice = Max(Open, AvgEntryPrice + NATRstop*atr[1]/ts); Print("MyExitPrice " + Text(MyExitPrice)); BuyToCover(0, MyExitPrice); PlotString("HardStop", "HardStop", high*1.01, White); } } } } } }