手动交易+算法交易案例二:追价算法交易模型确保成交

模型满足开仓条件发出委托信号后,因行情变动快,加之下单手数多等原因,可能无法快速成交。通过加载追价算法交易模型,可及时将没有成交的部分进行自动撤单,然后自动按照编写的价格方式重新发出委托,如果出现价差过大或长时间无法成交等情况则放弃本次交易。源码如下:

//追价示例 
Data 
    data0:"m1709"; 
Vars 
    Numeric N;//下单手数 
    Numeric T; //时间间隔 
    Numeric KC; //开仓条件 
    Numeric NOW; //当前时间 
    Global_Numeric BKID; //买开委托 
    Global_Numeric BKFLG; //买开标志 
    Global_Numeric BKDEL; //买开撤单标志 
    Global_Numeric BKM; //买开委托手数 
    Global_Numeric BKT; //买开委托发出时间 
Begin 
    //----------------------变量赋值--------------------// 
    N = 2; //下单手数 
    T = 3; //时间间隔 
    KC = 1; //开仓条件设为1 
    NOW = CurrentTime(); //当前时间 
    //----------------------成交判断--------------------// 
    If(BKFLG == 1) //如果有买开委托 
    { 
       If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交 
       { 
          Commentary("【做多:买开委托成交!】"); 
          BKFLG = 0; //买开标志归0 
          BKDEL = 0; //买开撤单标志归0 
       } 
       Else If(F_OrderStatus(BKID) == Enum_Canceled) //如果买开委托被撤单 
       { 
          If(F_OrderFilledLot(BKID) > 0) //如果买开委托部分成交 
          { 
             BKM = BKM - F_OrderFilledLot(BKID); //买开委托手数自减成交手数 
          } 
          If(BKM > 0) //如果买开委托手数大于0 
          { 
             Commentary("【做多:买开委托追价!】"); 
             BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,Price("Ask1")); //以对价发出买开委托手数的买开委托 
             BKT = NOW; //买开委托发出时间设为当前时间 
          } 
          BKDEL = 0; //买开撤单标志归0 
       } 
       Else If(F_OrderStatus(BKID) == Enum_Declared || F_OrderStatus(BKID) == Enum_FillPart) //如果买开委托全部挂单或部分成交 
       { 
          If(TimeDiff(BKT,NOW) > T && BKDEL == 0) //如果时间间隔T秒,且未撤单 
          { 
             Commentary("【做多:买开委托撤单!】"); 
             F_DeleteOrder(F_OrderContractNo(BKID)); //撤掉买开委托挂单 
             BKDEL = 1; //已发出撤掉买开委托挂单 
          } 
       } 
    } 
    //----------------------委托处理--------------------// 
    If(BKFLG == 0) //如果没有买开委托 
    { 
       If(KC == 1) //如果满足开仓条件 
       { 
          Commentary("【做多:买开委托发出!】"); 
          BKM = N; //买开委托手数设为N手 
          BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,Price("Bid1")); //以排队价发出买开委托手数的买开委托 
          BKT = NOW; //买开委托发出时间设为当前时间 
          BKFLG = 1; //已发出买开委托 
       } 
    } 
End

算法交易模型执行效果如下图所示,在第一次委托没有成交时,算法交易模型对委托进行了撤单,撤单后重新追价,确保了委托的成交。

手动交易+算法交易案例二:追价算法交易模型确保成交
超长k线数据案例一:超长k线数据测试 量化交易

超长k线数据案例一:超长k线数据测试

前言 问题一:超长的K线数据有什么用? 以上期所的螺纹钢合约为例,螺纹钢2009年挂牌交易至今,已经有超过10年的历史数据。前8年的历史数据囊括了2009年的急涨急跌行情、2011年的震荡行情、201...