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

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

    //追价示例 
    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...