请帮忙修改跨周期模型语法不通过,

//------------------------------------------------------------------------

// 简称: KUAHEYUMOX

// 名称: 跨品种集合竞价模型(美原油→沥青)

// 类别: 策略应用

// 类型: 用户应用

// 输出: Void

// 说明:

//   夜盘阶段 (15:00~20:55):

//     记录沥青15:00收盘价、美原油15:00价格

//     若20:49前美原油未跌破15:00价格,则在20:55以沥青收盘价-50跳申报集合竞价多单

//     若跌破则放弃夜盘交易

//   日盘阶段 (23:00~次日08:55):

//     记录美原油23:00价格

//     若08:49前美原油未跌破23:00价格,则在08:55以前日沥青收盘价-50跳申报集合竞价多单

//     若跌破则放弃日盘交易

//   集合竞价开盘后若委托未成交,自动撤单

//------------------------------------------------------------------------


Params

   // ----- 申报价格偏移 -----

   Numeric offsetTicks(50);               // 申报价格偏移量(相对沥青15点收盘价,单位:最小变动价位)

   

   // ----- 定时器间隔 -----

   Numeric checkInterval(60000);          // 美原油监控定时器间隔(毫秒),默认60秒

   

   // ----- 夜盘申报时间 -----

   Numeric nightOrderHour(20);            // 夜盘申报小时

   Numeric nightOrderMinute(55);          // 夜盘申报分钟

   

   // ----- 日盘申报时间 -----

   Numeric dayOrderHour(8);               // 日盘申报小时

   Numeric dayOrderMinute(55);            // 日盘申报分钟

   

   // ----- 夜盘检查截止时间 -----

   Numeric nightCheckEndHour(20);         // 夜盘检查截止小时

   Numeric nightCheckEndMinute(49);       // 夜盘检查截止分钟

   

   // ----- 日盘检查截止时间 -----

   Numeric dayCheckEndHour(8);            // 日盘检查截止小时

   Numeric dayCheckEndMinute(49);         // 日盘检查截止分钟

   

   // ----- 撤单延迟(秒) -----

   Numeric cancelDelaySeconds(5);         // 集合竞价开盘后等待N秒再撤单,给撮合留时间

   

   // ----- 交易手数 -----

   Numeric tradeLots(1);                  // 每次委托手数

Vars

   // ----- 数据记录 -----

   Numeric asphaltClosePrice;             // 沥青15:00收盘价(当日夜盘及次日日盘共用)

   Numeric crudeStartPrice;               // 美原油起点价格(夜盘:15:00价格;日盘:23:00价格)

   

   // ----- 状态标志 -----

   Numeric nightCrudeBroken;              // 夜盘美原油是否已跌破(0=未跌破,1=已跌破)

   Numeric dayCrudeBroken;                // 日盘美原油是否已跌破(0=未跌破,1=已跌破)

   Numeric nightOrderPlaced;              // 夜盘是否已申报(0=未申报,1=已申报)

   Numeric dayOrderPlaced;                // 日盘是否已申报(0=未申报,1=已申报)

   

   // ----- 委托管理 -----

   Numeric orderID;                       // 当前有效委托单ID

   Numeric orderStatus;                   // 委托状态: 0=无委托, 1=已提交未成交, 2=已成交

   Numeric orderPlacedSession;            // 记录当前委托属于哪个时段: 1=夜盘, 2=日盘

   

   // ----- 时段标识 -----

   Numeric isNightSession;                // 1=夜盘时段(15:00~次日凌晨), 0=日盘时段(23:00~次日)

   

   // ----- 定时器ID -----

   Global Integer timerId;

   

   // ----- 辅助变量 -----

   Numeric currentHour;

   Numeric currentMinute;

   Numeric currentSecond;

//------------------------------------------------------------------------

// 自定义函数区

//------------------------------------------------------------------------

Defs

   // 获取当前系统时间(时、分、秒)

   Void GetCurrentTime(NumericRef hour, NumericRef minute, NumericRef second)

   {

       Numeric now = CurrentTime();

       hour = IntPart(now);

       minute = IntPart((now - hour) * 100);

       second = IntPart((now - hour - minute/100.0) * 10000);

   }

   

   // 检查美原油是否跌破起点价格(取最低价、买一价、收盘价的最小值)

   Bool IsCrudeBroken(Numeric startPrice)

   {

       Numeric currentLow = data1.Low;

       Numeric currentBid = data1.Bid;

       Numeric currentPrice = data1.Close;

       Numeric lowestCurrent = Min(currentLow, Min(currentBid, currentPrice));

       Return lowestCurrent < startPrice;

   }

   

   // 获取沥青申报价格 = 沥青15点收盘价 - 偏移量 * 最小变动价位

   Numeric GetOrderPrice()

   {

       Return asphaltClosePrice - offsetTicks * data0.MinMove;

   }

   

   // 执行集合竞价申报(限价买入开仓)

   Void PlaceAuctionOrder(Numeric price, Numeric session)

   {

       If(orderStatus == 0)

       {

           orderID = A_SendOrder(Enum_Buy, Enum_Entry, tradeLots, price);

           orderStatus = 1;

           orderPlacedSession = session;

           Comment(\"【集合竞价申报】时段=\" + IIfString(session==1,\"夜盘\",\"日盘\") +

                   \", 价格=\" + Text(price) + \", 委托号=\" + Text(orderID));

       }

   }

   

   // 撤销未成交委托

   Void CancelOrder()

   {

       If(orderStatus == 1)

       {

           A_DeleteOrder(orderID);

           orderStatus = 0;

           Comment(\"【撤单】委托号=\" + Text(orderID) + \", 原因=集合竞价超时未成交\");

       }

   }

//------------------------------------------------------------------------

// 事件函数区

//------------------------------------------------------------------------

Events

   OnInit()

   {

       // 初始化所有变量

       asphaltClosePrice = 0;

       crudeStartPrice = 0;

       nightCrudeBroken = 0;

       dayCrudeBroken = 0;

       nightOrderPlaced = 0;

       dayOrderPlaced = 0;

       orderID = 0;

       orderStatus = 0;

       orderPlacedSession = 0;

       isNightSession = 0;

       

       // 创建定时器(美原油监控)

       timerId = CreateTimer(checkInterval);

       

       // 数据源设置(data1为美原油加权,需手动添加)

       Range[1:1]

       {

           AddDataFlag(Enum_Data_RolloverBackWard());   // 后复权,保证连续性

       }

       

       // 交易设置(可选)

       // SetTradeLots(tradeLots);

       // SetSlippage(Enum_Rate_PointPerHand, 1);

   }

   

   OnBar(ArrayRef<Integer> indexs)

   {

       Numeric barTime = data0.CurrentTime();

       Numeric barHour = IntPart(barTime);

       Numeric barMinute = (barTime - barHour) * 100;

       

       // ========= 夜盘阶段初始化(15:00) =========

       If(barHour == 15 And barMinute == 0 And asphaltClosePrice == 0 And isNightSession == 0)

       {

           asphaltClosePrice = data0.Close;        // 记录沥青收盘价

           crudeStartPrice = data1.Close;          // 记录美原油起点价(15:00)

           nightCrudeBroken = 0;

           nightOrderPlaced = 0;

           isNightSession = 1;                     // 进入夜盘模式

           

           Comment(\"【夜盘启动】沥青收盘=\" + Text(asphaltClosePrice) +

                   \", 美原油起点=\" + Text(crudeStartPrice));

       }

       

       // ========= 日盘阶段初始化(23:00) =========

       If(barHour == 23 And barMinute == 0 And isNightSession == 1)

       {

           crudeStartPrice = data1.Close;          // 记录美原油新起点(23:00)

           dayCrudeBroken = 0;

           dayOrderPlaced = 0;

           isNightSession = 0;                     // 切换到日盘模式

           

           Comment(\"【日盘启动】美原油起点=\" + Text(crudeStartPrice));

       }

   }

   

   OnTimer(Integer id, Integer intervalMillsecs)

   {

       // 获取当前时间

       GetCurrentTime(currentHour, currentMinute, currentSecond);

       

       // ========= 一、夜盘申报逻辑 =========

       If(asphaltClosePrice != 0 And isNightSession == 1 And nightOrderPlaced == 0)

       {

           // 检查美原油是否跌破(持续监控)

           If(IsCrudeBroken(crudeStartPrice))

               nightCrudeBroken = 1;

           

           // 到达夜盘检查截止时间(20:49后)进行最终判断

           If(currentHour == nightCheckEndHour And currentMinute >= nightCheckEndMinute)

           {

               If(nightCrudeBroken == 0)

               {

                   Numeric orderPrice = GetOrderPrice();

                   PlaceAuctionOrder(orderPrice, 1);   // 1表示夜盘

                   nightOrderPlaced = 1;

               } Else

               {

                   Comment(\"【夜盘放弃】美原油已跌破起点 \" + Text(crudeStartPrice) + \",不参与交易\");

                   nightOrderPlaced = 1;   // 标记已处理,避免重复判断

               }

           }

       }

       

       // ========= 二、日盘申报逻辑 =========

       If(asphaltClosePrice != 0 And isNightSession == 0 And dayOrderPlaced == 0)

       {

           // 检查美原油是否跌破(持续监控)

           If(IsCrudeBroken(crudeStartPrice))

               dayCrudeBroken = 1;

           

           // 到达日盘检查截止时间(08:49后)进行最终判断

           If(currentHour == dayCheckEndHour And currentMinute >= dayCheckEndMinute)

           {

               If(dayCrudeBroken == 0)

               {

                   Numeric orderPrice = GetOrderPrice();

                   PlaceAuctionOrder(orderPrice, 2);   // 2表示日盘

                   dayOrderPlaced = 1;

               } Else

               {

                   Comment(\"【日盘放弃】美原油已跌破起点 \" + Text(crudeStartPrice) + \",不参与交易\");

                   dayOrderPlaced = 1;

               }

           }

       }

       

       // ========= 三、集合竞价未成交撤单逻辑 =========

       If(orderStatus == 1)

       {

           // 根据委托所属时段确定开盘时间

           Numeric auctionOpenHour = (orderPlacedSession == 1) ? 21 : 9;

           Numeric auctionOpenMinute = 0;

           

           // 判断是否已过开盘时间 + 延迟秒数

           Bool isAfterOpen = False;

           If(currentHour > auctionOpenHour)

               isAfterOpen = True;

           Else If(currentHour == auctionOpenHour And currentMinute > auctionOpenMinute)

               isAfterOpen = True;

           Else If(currentHour == auctionOpenHour And currentMinute == auctionOpenMinute And currentSecond >= cancelDelaySeconds)

               isAfterOpen = True;

           

           If(isAfterOpen)

           {

               CancelOrder();

               Comment(\"【未成交撤单】开盘后等待 \" + Text(cancelDelaySeconds) + \" 秒仍未成交,已撤销\");

           }

       }

   }

   

   OnFill(FillRef ordFill)

   {

       // 成交时更新状态

       If(ordFill.IsBuy And ordFill.OrderID == orderID)

       {

           orderStatus = 2;

           Comment(\"【成交确认】集合竞价委托已成交,委托号=\" + Text(orderID));

       }

   }

   

   OnOrder(OrderRef ord)

   {

       // 委托被撤销时重置状态

       If(ord.IsDeleted And ord.OrderID == orderID)

       {

           orderStatus = 0;

           Comment(\"【委托撤销确认】委托号=\" + Text(orderID));

       }

   }

   

   OnExit()

   {

       // 策略退出时撤销所有未成交委托

       If(orderStatus == 1)

           CancelOrder();

       Comment(\"【策略退出】清理完毕\");

   }

//------------------------------------------------------------------------

// 编译版本    2026/5/12

// 版权所有    wangrenquan

// 更改声明    TradeBlazer Software保留对TradeBlazer平台

//            每一版本的TradeBlazer策略修改和重写的权利

//------------------------------------------------------------------------

跨周期模型
跨周期模型编写
跨周期量化模型
语法修改
跨周期帮忙写
跨周期模型回测问题
请帮忙修改,提示错误
跨周期模型编写
指标模型可以帮忙修改吗
请帮忙修改,提示错误

请用TBQ3这个内容帮我编写一套完整的全自动交易模型
美原油加权15点价格到20点49价格不跌破15点价格,内盘沥青期货15点收盘价为准到晚上20点55分自动提交集合竞价比15点收盘价低50个点申报挂单,要是美原油跌破了就不参与交易
早上以是一样,美原油23点到早上8点49分不跌破沥青8点55分参与集合竞价申报跌破了就不参与交易
要是集合竞价开盘后没有成交,就自动撤单。老师你说的对呀我还没有学会呀,我想用这个我自己的策略实现全自动交易。这个模型怎么写呀、老师帮帮忙呗

社区置顶帖里有收费代写服务的说明,根据说明操作

什么乱七八糟AI写的玩意,狗屁不通