OnBar里实时止损后仓位没更新
// 全局变量Vars // ===== 结构价格 ===== Series<Numeric> StructPrice1(0); Series<Numeric> StructPrice2(0); // ===== 止损价格 ===== Series<Numeric> StopLossLong(0); Series<Numeric> StopLossShort(0); // ===== 当前bar状态 ===== Numeric ExitLongThisBar(0); Numeric ExitShortThisBar(0); // ===== 全局状态 ===== Global Bool PendingOpen(False); Global Bool PendingClose(False); // ===== 日志 ===== String LogPath("D:\\strategy_log.txt");// 主事件Events// Bar收盘逻辑(信号层)OnBarClose(ArrayRef<Integer> indexes){ // bar初始化 ExitLongThisBar = 0; ExitShortThisBar = 0; // 时间过滤 If(交易时间过滤) { // 数据长度保护 If(BarCount() < 最小bar数量) Return; // 更新结构价格 If(满足某结构) { StructPrice2 = StructPrice1; StructPrice1 = 某价格; } // 多头平仓逻辑 If(MarketPosition == 1 And 满足多头离场条件) { Sell(0, Close); ExitLongThisBar = 1; StopLossLong = 0; FileAppend(LogPath, "多头平仓日志"); } // 空头平仓逻辑 If(MarketPosition == -1 And 满足空头离场条件) { BuyToCover(0, Close); ExitShortThisBar = 1; StopLossShort = 0; FileAppend(LogPath, "空头平仓日志"); } // 开多逻辑 If(MarketPosition == 0 And 满足开多条件) { Buy(1, Close); StopLossLong = 某止损价; FileAppend(LogPath, "开多日志"); } // 开空逻辑 If(MarketPosition == 0 And 满足开空条件) { SellShort(1, Close); StopLossShort = 某止损价; FileAppend(LogPath, "开空日志"); } }// Tick逻辑(实时风控层)OnBar(ArrayRef<Integer> indexes){ // tick级收盘强平 If(进入tick收盘区间) { If(MarketPosition == 1) { Sell(0, Close); } If(MarketPosition == -1) { BuyToCover(0, Close); } } // 多头实时止损 If(MarketPosition == 1 And 满足多头实时止损) { Sell(0, Close); ExitLongThisBar = 1; StopLossLong = 0; } // 空头实时止损 If(MarketPosition == -1 And 满足空头实时止损) { BuyToCover(0, Close); ExitShortThisBar = 1; StopLossShort = 0; } // 多头结构破坏止损 If(MarketPosition == 1 And 满足结构破坏) { Sell(0, Close); ExitLongThisBar = 1; StopLossLong = 0; } // 空头结构破坏止损 If(MarketPosition == -1 And 满足结构破坏) { BuyToCover(0, Close); ExitShortThisBar = 1; StopLossShort = 0; }}这是我的整体的架构,在OnbarClose里面满足条件用close开仓和平仓,在Onbar里面也用close实时止损。现在碰到个问题,当Onbar里面止损之后仓位不会实时更新,导致在OnbarClose里面读取到仓位还不是0就不会开仓。请问这个问题有没有好的办法。还有我一直碰到信号闪烁导致不成交,现在不知道是在OnbarClose还是Onbar在里面出现的,要怎么优化。请问老师问有好的建议吗?