实盘不能成功下单。头寸挂上了,编译了。也可以成功回测

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

// 简称: test

// 名称: 上线卖开并22:55平仓策略

// 类别: 公式应用

// 类型: 用户应用

// 输出: Void

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

Params

   // 此处添加参数

   Numeric millsecs(1000);

Vars

   // 此处添加变量

   Numeric avg;

   Global Integer timerId;

   Global Integer hasSoldOpen; // 标记是否已经卖开

   Global Integer hasClosed;   // 标记是否已经平仓


Defs

   // 此处添加公式函数

   Numeric calcAvg(Numeric a, Numeric b)

   {

       return (a + b) / 2;

   }


Events

   // 此处实现事件函数


   // 初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作

   OnInit()

   {

       timerId = createTimer(millsecs);

       hasSoldOpen = 0;

       hasClosed = 0;

       // 与数据源有关

       Range[0:DataCount - 1]

       {

           //=========数据源相关设置==============

           //AddDataFlag(Enum_Data_RolloverBackWard());    // 设置后复权


           //AddDataFlag(Enum_Data_RolloverRealPrice());    // 设置映射真实价格


           //AddDataFlag(Enum_Data_AutoSwapPosition());    // 设置自动换仓


           //AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());    // 设置忽略换仓信号计算


           //AddDataFlag(Enum_Data_OnlyDay());        // 设置仅日盘


           //AddDataFlag(Enum_Data_OnlyNight());    // 设置仅夜盘


           //AddDataFlag(Enum_Data_NotGenReport());    // 设置数据源不参与生成报告标志


           //=========交易相关设置==============

           //MarginRate rate;

           //rate.ratioType = Enum_Rate_ByFillAmount; // 设置保证金费率方式为成交金额百分比

           //rate.longMarginRatio = 0.1; // 设置保证金率为10%

           //rate.shortMarginRatio = 0.2; // 设置保证金率为20%

           //SetMarginRate(rate);


           //CommissionRate tCommissionRate;

           //tCommissionRate.ratioType = Enum_Rate_ByFillAmount;

           //tCommissionRate.openRatio = 5; // 设置开仓手续费为成交金额的5%%

           //tCommissionRate.closeRatio = 2; // 设置平仓手续费为成交金额的2%%

           //tCommissionRate.closeTodayRatio = 0; // 设置平今手续费为0

           //SetCommissionRate(tCommissionRate); // 设置手续费率


           //SetSlippage(Enum_Rate_PointPerHand, 2);    // 设置滑点为2跳/手


           //SetOrderPriceOffset(2);    // 设置委托价为叫买/卖价偏移2跳


           //SetOrderMap2MainSymbol();    // 设置委托映射到主力


           //SetOrderMap2AppointedSymbol(symbols, multiples); // 设置委托映射到指定合约,symbols是映射合约数组,multiples是映射倍数数组

       }

       // 与数据源无关

       //SetBeginBarMaxCount(10);    // 设置最大起始bar数为10


       //SetBackBarMaxCount(10);    // 设置最大回溯bar数为10


       //=========交易相关设置==============

       //SetInitCapital(1000000);    // 设置初始资金为100万


       //AddTradeFlag(Enum_Trade_Ignore_Buy());    // 设置忽略多开


       //AddTradeFlag(Enum_Trade_Ignore_Sell());    // 设置忽略多平


       //AddTradeFlag(Enum_Trade_Ignore_SellShort());    // 设置忽略空开


       //AddTradeFlag(Enum_Trade_Ignore_Buy2Cover());    // 设置忽略空平

   }


   // 在所有的数据源准备完成后调用,应用在数据源的设置等操作

   OnReady()

   {


   }


   // 基础数据更新事件函数

   OnDic(StringRef dicName, StringRef dicSymbol, DicDataRef dicValue)

   {


   }


   // 在新bar的第一次执行之前调用一次,参数为新bar的图层数组

   OnBarOpen(ArrayRef<Integer> indexs)

   {


   }


   // Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

   OnBar(ArrayRef<Integer> indexs)

   {

if (hasSoldOpen == 0)

       {

           // 上线就卖出开仓一手

           SellShort(1, Open);

           hasSoldOpen = 1;

       }

       

   }


   // 下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组

   OnBarClose(ArrayRef<Integer> indexs)

   {


   }


   // Tick更新事件函数,需要SubscribeTick函数订阅后触发,参数evtTick表示更新的tick结构体

   OnTick(TickRef evtTick)

   {


       if (hasSoldOpen == 1 && hasClosed == 0)

       {

           // 获取当前时间

           //Numeric currentTime = TimeNum;

           // 转换为小时和分钟

           //Numeric hour = Floor(currentTime / 10000);

           //Numeric minute = Floor((currentTime - hour * 10000) / 100);

           if (hour == 22 && minute == 55)

           {

               // 22点55分平仓

               BuyToCover(1, Close);

               hasClosed = 1;

           }

       }

   }


   // 持仓更新事件函数,参数pos表示更新的持仓结构体

   OnPosition(PositionRef pos)

   {


   }


   // 策略账户仓更新事件函数,参数pos表示更新的账户仓结构体

   OnStrategyPosition(PositionRef pos)

   {


   }


   // 委托更新事件函数,参数ord表示更新的委托结构体

   OnOrder(OrderRef ord)

   {


   }


   // 成交更新事件函数,参数ordFill表示更新的成交结构体

   OnFill(FillRef ordFill)

   {


   }


   // 定时器更新事件函数,参数id表示定时器的编号,millsecs表示定时间的间隔毫秒值

   OnTimer(Integer id, Integer intervalMillsecs)

   {


   }


   // 通用事件触发函数,参数evtName为事件名称,参数evtValue为事件内容

   OnEvent(StringRef evtName, MapRef<String, String> evtValue)

   {


   }


   // 当前策略退出时触发

   OnExit()

   {


   }



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

// 编译版本 2025/02/25 214429

// 版权所有 gjqh809202799

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

// 每一版本的TradeBlazer公式修改和重写的权利

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


可以回测,为啥实盘就是没法成功下单呢。

做的标的是豆粕期权,卖出开仓操作。



Buy(1,Open);可以直接下单成功吗?
模拟账户登录不成功,修改密码也不成功
我用chatgtp 编译成功了一个策略,有老师高手请求指点,谢谢!
策略是不是可以实盘了
如何确保A_DeleteOrder(oid[0]撤单成功
实盘和回测的问题
A_SendOrder 返回值不成功
自定义公式可以编译成功,却显示策略运行出错
公式应用编辑页面打不开,不能编译
实时撤单成功,却返回false

是没出信号,还是出了信号不报单,还是报单了没成交,说详细