获取不到开盘基准价 大神们帮帮我几天没睡觉了

Params

   // 原策略参数

   Numeric OffsetShort(50);

   Numeric OffsetLong(30);

   Numeric FirstLoss(50);

   Numeric SecondLoss(100);

   Numeric StopLoss(150);


Vars

   Bool IsNightSession(true);

   Bool IsBasePriceSet(false);

   Numeric OpenPositionCount(0);

   Numeric TotalPositionCount(0);

   Numeric lastTradeDate;

   Numeric basePrice; // 用于存储基准价


Events

   OnInit()

   {

       IsNightSession = true;

       OpenPositionCount = 0;

       TotalPositionCount = 0;

       lastTradeDate = TrueDate(0);

   }


   OnBar(ArrayRef<Integer> indexs)

   {

       Numeric currentTradeDate = TrueDate(0);

       // 如果是新的交易日,重置相关变量

       if(currentTradeDate!= lastTradeDate)

       {

           IsBasePriceSet = false;

           OpenPositionCount = 0;

           TotalPositionCount = 0;

           lastTradeDate = currentTradeDate;

       }


       // 在 13:30 点开盘时确定基准价

       If (Hour == 13 && Minute == 30 && Second == 0)

       {

           // 添加调试语句,标记即将获取开盘价并赋值

           Print("即将在13:30获取开盘价并赋值");

           Numeric openPrice = Q_Open();  // 获取开盘价

           // 添加调试语句,打印获取到的开盘价

           Print("13:30获取到的开盘价:" + Text(openPrice));

           If (openPrice!= InvalidNumeric)  // 检查是否有效

           {

               basePrice = openPrice;  // 将有效的开盘价存储到 basePrice 变量

               IsBasePriceSet = true;

           }

           Else

           {

               // 处理获取开盘价无效的情况

               Commentary("获取开盘价无效,无法确定基准价");

           }

       }


       // 每天 21:00 重置相关标记(此部分逻辑与上面新交易日重置不冲突,可按需保留)

       If (Hour == 21 && Minute == 00 && Second == 0)

       {

           IsBasePriceSet = false;

           OpenPositionCount = 0;

           TotalPositionCount = 0;

       }


       // 添加调试语句,标记即将打印基准价

       Print("即将打印基准价");

       // 打印相关信息,使用 basePrice 变量显示基准价

       Print("当前日期:" +(DateTimeTostring(currentdate+currenttime)));

       Print("当前价格:" + Text(Close));

       Print("基准价格:" + Text(basePrice));

       Print("市场仓位:" + Text(MarketPosition));


       // 比较当前价格与基准价进行交易判断

       If (IsBasePriceSet)

       {

           // 开仓逻辑

           Numeric askPrice = Q_AskPrice();  // 获取卖一价

           Numeric bidPrice = Q_BidPrice();  // 获取买一价


           If (askPrice!= InvalidNumeric && bidPrice!= InvalidNumeric)  // 检查是否有效

           {

               If (MarketPosition == 0)

               {

                   If (askPrice >=  basePrice + OffsetShort)

                   {

                       SellShort(1, askPrice);

                       OpenPositionCount = 1;

                       TotalPositionCount = 1;

                       Commentary("做空,卖一价高于基准价 " + Text(OffsetShort, 2) + " 点");

                   }

                   Else If (bidPrice <=  basePrice - OffsetLong)

                   {

                       Buy(1, bidPrice);

                       OpenPositionCount = 1;

                       TotalPositionCount = 1;

                       Commentary("做多,买一价低于基准价 " + Text(OffsetLong, 2) + " 点");

                   }

               }

               // 持仓中处理补仓和止损逻辑

               Else

               {

                   Numeric Loss = Abs(Close -  basePrice);

                   If (MarketPosition == -1)

                   {

                       If (Loss >= FirstLoss && OpenPositionCount == 1)

                       {

                           SellShort(1, Close);

                           OpenPositionCount = 2;

                           TotalPositionCount = 2;

                           Commentary("空仓第一次补仓,亏损达到 " + Text(FirstLoss, 2) + " 点");

                       }

                       Else If (Loss >= SecondLoss && OpenPositionCount == 2)

                       {

                           SellShort(1, Close);

                           OpenPositionCount = 3;

                           TotalPositionCount = 3;

                           Commentary("空仓第二次补仓,亏损达到 " + Text(SecondLoss, 2) + " 点");

                       }

                       Else If (Loss >= StopLoss)

                       {

                           BuyToCover(TotalPositionCount, Close);

                           OpenPositionCount = 0;

                           TotalPositionCount = 0;

                           Commentary("空仓止损,亏损达到 " + Text(StopLoss, 2) + " 点");

                       }

                   }

                   Else If (MarketPosition == 1)

                   {

                       // 多头补仓逻辑

                       If (Loss >= FirstLoss && OpenPositionCount == 1)

                       {

                           Buy(1, Close);

                           OpenPositionCount = 2;

                           TotalPositionCount = 2;

                           Commentary("多仓第一次补仓,亏损达到 " + Text(FirstLoss, 2) + " 点");

                       }

                       Else If (Loss >= SecondLoss && OpenPositionCount == 2)

                       {

                           Buy(1, Close);

                           OpenPositionCount = 3;

                           TotalPositionCount = 3;

                           Commentary("多仓第二次补仓,亏损达到 " + Text(SecondLoss, 2) + " 点");

                       }

                       Else If (Loss >= StopLoss)

                       {

                           Sell(TotalPositionCount, Close);

                           OpenPositionCount = 0;

                           TotalPositionCount = 0;

                           Commentary("多仓止损,亏损达到 " + Text(StopLoss, 2) + " 点");

                       }

                   }

               }

           }

           Else

           {

               // 处理获取买一价或卖一价无效的情况

               Commentary("获取买一价或卖一价无效,无法进行交易判断");

           }

       }

   }

https://www.tbquant.net/TrainDetail?id=232这里提到的网格策略哪里获取?求大神们赐予!
IOS版-智大领峰APP最近几天收不到通知了
经常获取不到历史数据,是服务器限制了?
请教大神们,TBQuant 中最多能定义几个“全局变量”?
尾盘自动平仓失败了,求大神解答一下
我的极速版实盘这几天k线数据丢失,现在模型马上要开仓了,怎么没有这几天的k线了 急等!!白银指数的! 怎么办啊 我很急啊 ,我电话15172005523
【求助大神】为什么这段没执行
TB旗舰版的广州期货交易所数据这几天怎么没了,不更新了?
向大神求教,我在程序中添加了如下止损代码,虽然没头没脑的貌似解决了,但是始终没明白原因。
老师大神们帮我看看这个怎么修改 ,弄了好长时间都不行

你这发了一大段代码,到底是要问那个地方的业务逻辑?

乱七八糟,完全瞎写。先去看看基础教学吧。

直接用Q_Open可以print 基准价(开盘价) 赋值了以后就没了