您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

[求助]MQ 手动下单辅助加入Tick问题 [文华财经]

  • 咨询内容:  我想在手动下单辅助中加入Tick数据,以帮助判断是否需要成交,具体如下
    首先定义全局变量COD,然后赋值:COD = M_GetTradeContract(); //合约编码 然后定义Tick数据区并引用Tick数据 VAR_TICKDATA m_TickData; m_TickData = Def_TickData(COD,1,50);
    此时报错:第101行 "COD附近" DEF_TICKDATA函数第一个参数只能是字符常量
    这个该如何解决?在手动下单辅助模型中如何引用Tick数据?







    全部代码如下: //----------------------------------------------------------------------------------------------------------/*【策略】1、取得手动下单的合约、手数、买卖方向、开平方向;自设委托价格。2、如果为开仓:        1)如果为买入开仓:
    3、如果为平仓:       1)如果为买入平仓:
          2)如果为卖出平仓:
    *///----------------------------------------------------------------------------------------------------------

    Vars   Global_String TAC; //账号   Global_String COD; //合约编码   Global_Numeric TBS; //买卖方向   Global_Numeric TEE; //开平方向   Global_Numeric TVL; //交易手数   Global_Numeric BIDP; //买一价   Global_Numeric ASKP; //卖一价   Global_Numeric BIDV; //买一量   Global_Numeric ASKV; //卖一量   Global_Numeric SH; //上海合约标志   Global_Numeric MINP; //最小变动价位   Global_Numeric BRP; //多头可用持仓   Global_Numeric SRP; //空头可用持仓   Global_Numeric BRP0; //多头今仓可用持仓   Global_Numeric SRP0; //空头今仓可用持仓   Global_Numeric BRP1; //多头老仓可用持仓   Global_Numeric SRP1; //空头老仓可用持仓   Global_Numeric BKID; //买开委托   Global_Numeric SKID; //卖开委托   Global_Numeric BPID0; //买平今仓委托   Global_Numeric BPID1; //买平老仓委托   Global_Numeric BPID; //买平委托   Global_Numeric SPID0; //卖平今仓委托   Global_Numeric SPID1; //卖平老仓委托   Global_Numeric SPID; //卖平委托   Global_Numeric BKFLG; //买开标志   Global_Numeric SKFLG; //卖开标志   Global_Numeric BPFLG0; //买平今仓标志   Global_Numeric BPFLG1; //买平老仓标志   Global_Numeric BPFLG; //买平标志   Global_Numeric SPFLG0; //卖平今仓标志   Global_Numeric SPFLG1; //卖平老仓标志   Global_Numeric SPFLG; //卖平标志   Global_Numeric BKM; //买开委托手数   Global_Numeric SKM; //卖开委托手数   Global_Numeric BPM0; //买平今仓委托手数   Global_Numeric BPM1; //买平老仓委托手数   Global_Numeric BPM; //买平委托手数   Global_Numeric SPM0; //卖平今仓委托手数   Global_Numeric SPM1; //卖平老仓委托手数   Global_Numeric SPM; //卖平委托手数   Global_Numeric BKP; //买开委托价格   Global_Numeric SKP; //卖开委托价格   Global_Numeric BPP0; //买平今仓委托价格   Global_Numeric BPP1; //买平老仓委托价格   Global_Numeric BPP; //买平委托价格   Global_Numeric SPP0; //卖平今仓委托价格   Global_Numeric SPP1; //卖平老仓委托价格   Global_Numeric SPP; //卖平委托价格   Global_Numeric KPFLG; //委托处理标志   Global_Numeric KT;                           //开仓委托发出时间 
       Numeric Lost(2);                                 //止损参数   Numeric Win(10);                               //止盈参数   Numeric m_CurrTime;                        //当前时间   Numeric m_BuyAvg;                           //多头持仓均价   Numeric m_New;                                // 最新价   Numeric m_MinPrice;                         // 最小变动价位   Numeric m_isClose;                            //收盘清仓标志,1 = 收盘0 = 盘中   Numeric T(2);                                      //停顿2秒平仓   VAR_TICKDATA m_TickData;
    Begin
    //<1 数据准备>   m_New = COD.Price("New");   m_BuyAvg = A_BuyAvgPrice(); //取得持仓栏中该合约多头持仓均价   m_MinPrice = COD.Price("MinPrice");//取最小变动价   //m_TickData = Def_TickData("m1705",1,4); // 保存最近四笔的tick 数据   m_CurrTime = CurrentTime(); // 获取当前时间   //m_isClose = (m_CurrTime >=0.101430 && m_CurrTime <=0.101510)||(m_CurrTime >=0.112930 && m_CurrTime <=0.113010)||(m_CurrTime >=0.145930 && m_CurrTime <=0.150010);   //</1>

       //------------------------------------委托获取------------------------------------//   If(KPFLG == 0) //如果未开启委托处理   {      TAC = M_GetTradeAccount(0); //账号      COD = M_GetTradeContract(); //合约编码      TBS = M_GetTradeBuySell(); //买卖方向      TEE = M_GetTradeEntryExit(); //开平方向      TVL = M_GetTradeVol(); //交易手数 m_TickData = Def_TickData(COD,1,50);      If(TVL > 0 && COD.A_IsExchangeOpen() == 1) //如果交易手数大于0,且当前状态是开盘      {   If(TBS == Enum_Buy && TEE == Enum_Entry) //如果是买开方向         {            Commentary("【" + COD + "做多:手动买开" + Text(TVL) + "手!】");            KPFLG = 1; //开启买开委托处理         }         Else If(TBS == Enum_Sell && TEE == Enum_Entry) //如果是卖开方向         {            Commentary("【" + COD + "做空:手动卖开" + Text(TVL) + "手!】");            KPFLG = 2; //开启卖开委托处理         }         Else If(TBS == Enum_Buy && TEE == Enum_Exit) //如果是买平方向         {            Commentary("【" + COD + "平空:手动买平" + Text(TVL) + "手!】");            KPFLG = 3; //开启买平委托处理         }         Else If(TBS == Enum_Buy && TEE == Enum_ExitToday) //如果是买平今方向         {            Commentary("【" + COD + "平今空:手动买平" + Text(TVL) + "手!】");            KPFLG = 4; //开启买平今仓委托处理         }         Else If(TBS == Enum_Sell && TEE == Enum_Exit) //如果是卖平方向         {            Commentary("【" + COD + "平多:手动卖平" + Text(TVL) + "手!】");            KPFLG = 5; //开启卖平委托处理         }         Else If(TBS == Enum_Sell && TEE == Enum_ExitToday) //如果是卖平今方向         {            Commentary("【" + COD + "平今多:手动卖平" + Text(TVL) + "手!】");            KPFLG = 6; //开启卖平今仓委托处理         } SH = COD.A_IsSHCode(); //上海合约标志         MINP = COD.Price("MinPrice"); //最小变动价位      }   }
       //------------------------------------委托处理------------------------------------//   If(KPFLG > 0 && COD.A_IsExchangeOpen() == 1) //如果已开启委托处理,且当前状态是开盘   {      BIDP = COD.Price("Bid1"); //买一价      ASKP = COD.Price("Ask1"); //卖一价      BIDV = COD.Price("BidVol1"); //买一量      ASKV = COD.Price("AskVol1"); //卖一量      BRP = COD.A_BuyRemainPosition(); //多头可用持仓      SRP = COD.A_SellRemainPosition(); //空头可用持仓      If(SH == 1) //如果当前合约是上海市场合约 {         BRP0 = COD.A_TodayBuyRemainPosition(); //多头今仓可用持仓         SRP0 = COD.A_TodaySellRemainPosition(); //空头今仓可用持仓         BRP1 = BRP - BRP0; //多头老仓可用持仓         SRP1 = SRP - SRP0; //空头老仓可用持仓   }
    //------------------------------------成交判断------------------------------------//      If(BKFLG == 1) //如果有买开委托      {         If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交         {            Commentary("【" + COD + "做多:买开委托成交!】");            TVL = TVL - BKM; //交易手数自减买开委托手数            BKFLG = 0; //买开标志归0         }      }
          If(SKFLG == 1) //如果有卖开委托      {         If(F_OrderStatus(SKID) == Enum_Filled) //如果卖开委托成交         {            Commentary("【" + COD + "做空:卖开委托成交!】");            TVL = TVL - SKM; //交易手数自减卖开委托手数            SKFLG = 0; //卖开标志归0         }      }
          If(BPFLG0 == 1) //如果有买平今仓委托      {         If(F_OrderStatus(BPID0) == Enum_Filled) //如果买平今仓委托成交         {            Commentary("【" + COD + "平空:买平今仓委托成交!】");            TVL = TVL - BPM0; //交易手数自减买平今仓委托手数            BPFLG0 = 0; //买平今仓标志归0         }      }
          If(BPFLG1 == 1) //如果有买平老仓委托      {         If(F_OrderStatus(BPID1) == Enum_Filled) //如果买平老仓委托成交         {            Commentary("【" + COD + "平空:买平老仓委托成交!】");            TVL = TVL - BPM1; //交易手数自减买平老仓委托手数            BPFLG1 = 0; //买平老仓标志归0         }      }
          If(BPFLG == 1) //如果有买平委托      {         If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交         {            Commentary("【" + COD + "平空:买平委托成交!】");            TVL = TVL - BPM; //交易手数自减买平委托手数            BPFLG = 0; //买平标志归0         }      }
          If(SPFLG0 == 1) //如果有卖平今仓委托      {         If(F_OrderStatus(SPID0) == Enum_Filled) //如果卖平今仓委托成交         {            Commentary("【" + COD + "平多:卖平今仓委托成交!】");            TVL = TVL - SPM0; //交易手数自减卖平今仓委托手数            SPFLG0 = 0; //卖平今仓标志归0         }      }
          If(SPFLG1 == 1) //如果有卖平老仓委托      {         If(F_OrderStatus(SPID1) == Enum_Filled) //如果卖平老仓委托成交         {            Commentary("【" + COD + "平多:卖平老仓委托成交!】");            TVL = TVL - SPM1; //交易手数自减卖平老仓委托手数            SPFLG1 = 0; //卖平老仓标志归0         }      }
          If(SPFLG == 1) //如果有卖平委托      {         If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交         {            Commentary("【" + COD + "平多:卖平委托成交!】");            TVL = TVL - SPM; //交易手数自减卖平委托手数            SPFLG = 0; //卖平标志归0         } }
          //------------------------------------委托处理------------------------------------//      If(KPFLG == 1) //如果已开启买开委托处理      {         If(BKFLG == 0) //如果没有买开委托         {            BKM = Min(ASKV,TVL); //买开委托手数           ASKV卖一量   TVL 下单手数
      /**   *  这里才是需要修改的条件,基于条件就要下单了!~     */            If(BKM > 0) //如果买开委托手数大于0            {               Commentary("【" + COD + "做多:公式买开" + Text(BKM) + "手!】");               Commentary("【" + COD + "做多:买开委托发出!】");               BKP = ASKP; //买开委托价格设为卖一价   KT = CurrentTime();               BKID = COD.A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP,TAC); //以买开委托价格发出买开委托手数的买开委托               BKFLG = 1; //已发出买开委托            }            Else If(BKM == 0) //如果买开委托手数等于0            {               Commentary("【" + COD + "做多:买开委托完成!】");      /** *  这里退出是有疑问的,如果退出,如何止盈止损? */               Exit(); //退出公式            }         }      }   Else If(KPFLG == 2) //如果已开启卖开委托处理      {         If(SKFLG == 0) //如果没有卖开委托         {            SKM = Min(BIDV,TVL); //卖开委托手数
                /**   *  这里才是需要修改的条件,基于条件就要下单了!~     */            If(SKM > 0) //如果卖开委托手数大于0            {               Commentary("【" + COD + "做空:公式卖开" + Text(SKM) + "手!】");               Commentary("【" + COD + "做空:卖开委托发出!】");               SKP = BIDP; //卖开委托价格设为买一价 KT = CurrentTime();               SKID = COD.A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP,TAC); //以卖开委托价格发出卖开委托手数的卖开委托               SKFLG = 1; //已发出卖开委托            }            Else If(SKM == 0) //如果卖开委托手数等于0            {               Commentary("【" + COD + "做空:卖开委托完成!】");  /** *  这里退出是有疑问的,如果退出,如何止盈止损? */               Exit(); //退出公式            }         }      }
     //止损  If(m_BuyAvg-m_New >=Lost*m_MinPrice && BRP >0)  { Commentary("止损"); A_SendOrder(Enum_Sell,Enum_Exit, F_BuyRemainPosition(),COD.Price("bid1")); Commentary("止损完成,准备退出"); Exit(); //退出公式  }   //止盈或平推  If(TimeDiff(m_CurrTime,KT) >= T && (m_BuyAvg-m_New  <=m_MinPrice) && BRP >0) { Commentary(Text(T) + "秒价格不前进就平仓"); A_SendOrder(Enum_Sell,Enum_Exit, F_BuyRemainPosition(),COD.Price("bid1")); Commentary("止盈平推完成,准备退出"); Exit(); //退出公式  }
       }End

     

     来源:程序化99

  • 文华技术人员:  这样调整下:

    Vars    Global_String TAC;  //账号    Global_String COD;  //合约编码    Global_Numeric TBS;  //买卖方向    Global_Numeric TEE;  //开平方向    Global_Numeric TVL;  //交易手数    Global_Numeric BIDP;  //买一价    Global_Numeric ASKP; //卖一价    Global_Numeric BIDV;  //买一量    Global_Numeric ASKV;  //卖一量    Global_Numeric SH;  //上海合约标志    Global_Numeric MINP;  //最小变动价位    Global_Numeric BRP;  //多头可用持仓    Global_Numeric SRP;  //空头可用持仓    Global_Numeric BRP0;  //多头今仓可用持仓    Global_Numeric SRP0;  //空头今仓可用持仓    Global_Numeric BRP1;  //多头老仓可用持仓    Global_Numeric SRP1;  //空头老仓可用持仓    Global_Numeric BKID;  //买开委托    Global_Numeric SKID;  //卖开委托    Global_Numeric BPID0;  //买平今仓委托    Global_Numeric BPID1;  //买平老仓委托    Global_Numeric BPID;  //买平委托    Global_Numeric SPID0;  //卖平今仓委托    Global_Numeric SPID1;  //卖平老仓委托    Global_Numeric SPID;  //卖平委托    Global_Numeric BKFLG;  //买开标志    Global_Numeric SKFLG;  //卖开标志    Global_Numeric BPFLG0;  //买平今仓标志    Global_Numeric BPFLG1;  //买平老仓标志    Global_Numeric BPFLG;  //买平标志    Global_Numeric SPFLG0;  //卖平今仓标志    Global_Numeric SPFLG1;  //卖平老仓标志    Global_Numeric SPFLG;  //卖平标志    Global_Numeric BKM;  //买开委托手数    Global_Numeric SKM;  //卖开委托手数    Global_Numeric BPM0;  //买平今仓委托手数    Global_Numeric BPM1;  //买平老仓委托手数    Global_Numeric BPM;  //买平委托手数    Global_Numeric SPM0;  //卖平今仓委托手数    Global_Numeric SPM1;  //卖平老仓委托手数    Global_Numeric SPM;  //卖平委托手数    Global_Numeric BKP;  //买开委托价格    Global_Numeric SKP;  //卖开委托价格    Global_Numeric BPP0;  //买平今仓委托价格    Global_Numeric BPP1;  //买平老仓委托价格    Global_Numeric BPP;  //买平委托价格    Global_Numeric SPP0;  //卖平今仓委托价格    Global_Numeric SPP1;  //卖平老仓委托价格    Global_Numeric SPP;  //卖平委托价格    Global_Numeric KPFLG;  //委托处理标志    Global_Numeric KT;                           //开仓委托发出时间 
       Numeric Lost(2);                                 //止损参数    Numeric Win(10);                               //止盈参数    Numeric m_CurrTime;                        //当前时间    Numeric m_BuyAvg;                           //多头持仓均价    Numeric m_New;                                // 最新价    Numeric m_MinPrice;                         // 最小变动价位    Numeric m_isClose;                            //收盘清仓标志,1 = 收盘0 = 盘中    Numeric T(2);                                      //停顿2秒平仓   Var_TickData m_TickData; Begin
    //<1 数据准备>    m_New = COD.Price("New");    m_BuyAvg = A_BuyAvgPrice(); //取得持仓栏中该合约多头持仓均价    m_MinPrice = COD.Price("MinPrice");//取最小变动价    //m_TickData = Def_TickData("m1705",1,4); // 保存最近四笔的tick 数据    m_CurrTime = CurrentTime(); // 获取当前时间    //m_isClose = (m_CurrTime >=0.101430 && m_CurrTime <=0.101510)||(m_CurrTime >=0.112930 && m_CurrTime <=0.113010)||(m_CurrTime >=0.145930 && m_CurrTime <=0.150010);     //</1>

       //------------------------------------委托获取------------------------------------//    If(KPFLG == 0) //如果未开启委托处理    {       TAC = M_GetTradeAccount(0); //账号       COD = M_GetTradeContract(); //合约编码       TBS = M_GetTradeBuySell(); //买卖方向       TEE = M_GetTradeEntryExit(); //开平方向       TVL = M_GetTradeVol(); //交易手数
    m_TickData = Def_TickData("COD",1,50);       If(TVL > 0 && COD.A_IsExchangeOpen() == 1) //如果交易手数大于0,且当前状态是开盘       {
       If(TBS == Enum_Buy && TEE == Enum_Entry) //如果是买开方向          {             Commentary("【" + COD + "做多:手动买开" + Text(TVL) + "手!】");             KPFLG = 1; //开启买开委托处理          }          Else If(TBS == Enum_Sell && TEE == Enum_Entry) //如果是卖开方向          {             Commentary("【" + COD + "做空:手动卖开" + Text(TVL) + "手!】");             KPFLG = 2; //开启卖开委托处理          }          Else If(TBS == Enum_Buy && TEE == Enum_Exit) //如果是买平方向          {             Commentary("【" + COD + "平空:手动买平" + Text(TVL) + "手!】");             KPFLG = 3; //开启买平委托处理          }          Else If(TBS == Enum_Buy && TEE == Enum_ExitToday) //如果是买平今方向          {             Commentary("【" + COD + "平今空:手动买平" + Text(TVL) + "手!】");             KPFLG = 4; //开启买平今仓委托处理          }          Else If(TBS == Enum_Sell && TEE == Enum_Exit) //如果是卖平方向          {             Commentary("【" + COD + "平多:手动卖平" + Text(TVL) + "手!】");             KPFLG = 5; //开启卖平委托处理          }          Else If(TBS == Enum_Sell && TEE == Enum_ExitToday) //如果是卖平今方向          {             Commentary("【" + COD + "平今多:手动卖平" + Text(TVL) + "手!】");             KPFLG = 6; //开启卖平今仓委托处理          }
    SH = COD.A_IsSHCode(); //上海合约标志          MINP = COD.Price("MinPrice"); //最小变动价位       }    }
       //------------------------------------委托处理------------------------------------//    If(KPFLG > 0 && COD.A_IsExchangeOpen() == 1) //如果已开启委托处理,且当前状态是开盘    {       BIDP = COD.Price("Bid1"); //买一价       ASKP = COD.Price("Ask1"); //卖一价       BIDV = COD.Price("BidVol1"); //买一量       ASKV = COD.Price("AskVol1"); //卖一量       BRP = COD.A_BuyRemainPosition(); //多头可用持仓       SRP = COD.A_SellRemainPosition(); //空头可用持仓       If(SH == 1) //如果当前合约是上海市场合约
    {          BRP0 = COD.A_TodayBuyRemainPosition(); //多头今仓可用持仓          SRP0 = COD.A_TodaySellRemainPosition(); //空头今仓可用持仓          BRP1 = BRP - BRP0; //多头老仓可用持仓          SRP1 = SRP - SRP0; //空头老仓可用持仓
       }

    //------------------------------------成交判断------------------------------------//       If(BKFLG == 1) //如果有买开委托       {          If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交          {             Commentary("【" + COD + "做多:买开委托成交!】");             TVL = TVL - BKM; //交易手数自减买开委托手数             BKFLG = 0; //买开标志归0          }       }
          If(SKFLG == 1) //如果有卖开委托       {          If(F_OrderStatus(SKID) == Enum_Filled) //如果卖开委托成交          {             Commentary("【" + COD + "做空:卖开委托成交!】");             TVL = TVL - SKM; //交易手数自减卖开委托手数             SKFLG = 0; //卖开标志归0          }       }
          If(BPFLG0 == 1) //如果有买平今仓委托       {          If(F_OrderStatus(BPID0) == Enum_Filled) //如果买平今仓委托成交          {             Commentary("【" + COD + "平空:买平今仓委托成交!】");             TVL = TVL - BPM0; //交易手数自减买平今仓委托手数             BPFLG0 = 0; //买平今仓标志归0          }       }
          If(BPFLG1 == 1) //如果有买平老仓委托       {          If(F_OrderStatus(BPID1) == Enum_Filled) //如果买平老仓委托成交          {             Commentary("【" + COD + "平空:买平老仓委托成交!】");             TVL = TVL - BPM1; //交易手数自减买平老仓委托手数             BPFLG1 = 0; //买平老仓标志归0          }       }
          If(BPFLG == 1) //如果有买平委托       {          If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交          {             Commentary("【" + COD + "平空:买平委托成交!】");             TVL = TVL - BPM; //交易手数自减买平委托手数             BPFLG = 0; //买平标志归0          }       }
          If(SPFLG0 == 1) //如果有卖平今仓委托       {          If(F_OrderStatus(SPID0) == Enum_Filled) //如果卖平今仓委托成交          {             Commentary("【" + COD + "平多:卖平今仓委托成交!】");             TVL = TVL - SPM0; //交易手数自减卖平今仓委托手数             SPFLG0 = 0; //卖平今仓标志归0          }       }
          If(SPFLG1 == 1) //如果有卖平老仓委托       {          If(F_OrderStatus(SPID1) == Enum_Filled) //如果卖平老仓委托成交          {             Commentary("【" + COD + "平多:卖平老仓委托成交!】");             TVL = TVL - SPM1; //交易手数自减卖平老仓委托手数             SPFLG1 = 0; //卖平老仓标志归0          }       }
          If(SPFLG == 1) //如果有卖平委托       {          If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交          {             Commentary("【" + COD + "平多:卖平委托成交!】");             TVL = TVL - SPM; //交易手数自减卖平委托手数             SPFLG = 0; //卖平标志归0          }
     }
          //------------------------------------委托处理------------------------------------//       If(KPFLG == 1) //如果已开启买开委托处理       {          If(BKFLG == 0) //如果没有买开委托          {             BKM = Min(ASKV,TVL); //买开委托手数           ASKV卖一量   TVL 下单手数

       /** 
      *  这里才是需要修改的条件,基于条件就要下单了!~   
      */             If(BKM > 0) //如果买开委托手数大于0             {                Commentary("【" + COD + "做多:公式买开" + Text(BKM) + "手!】");                Commentary("【" + COD + "做多:买开委托发出!】");                BKP = ASKP; //买开委托价格设为卖一价
       KT = CurrentTime();                BKID = COD.A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP,TAC); //以买开委托价格发出买开委托手数的买开委托                BKFLG = 1; //已发出买开委托             }             Else If(BKM == 0) //如果买开委托手数等于0             {                Commentary("【" + COD + "做多:买开委托完成!】");
       
       /**
     *  这里退出是有疑问的,如果退出,如何止盈止损?
     */                Exit(); //退出公式             }          }       }
       Else If(KPFLG == 2) //如果已开启卖开委托处理       {          If(SKFLG == 0) //如果没有卖开委托          {             SKM = Min(BIDV,TVL); //卖开委托手数
                /** 
      *  这里才是需要修改的条件,基于条件就要下单了!~   
      */             If(SKM > 0) //如果卖开委托手数大于0             {                Commentary("【" + COD + "做空:公式卖开" + Text(SKM) + "手!】");                Commentary("【" + COD + "做空:卖开委托发出!】");                SKP = BIDP; //卖开委托价格设为买一价
    KT = CurrentTime();                SKID = COD.A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP,TAC); //以卖开委托价格发出卖开委托手数的卖开委托                SKFLG = 1; //已发出卖开委托             }             Else If(SKM == 0) //如果卖开委托手数等于0             {                Commentary("【" + COD + "做空:卖开委托完成!】");
      /**
     *  这里退出是有疑问的,如果退出,如何止盈止损?
     */                Exit(); //退出公式             }          }       }


      //止损
      If(m_BuyAvg-m_New >=Lost*m_MinPrice && BRP >0) 
      {
     Commentary("止损");
     A_SendOrder(Enum_Sell,Enum_Exit, F_BuyRemainPosition(),COD.Price("bid1"));
     Commentary("止损完成,准备退出");
     Exit(); //退出公式
      }
     
    //止盈或平推
      If(TimeDiff(m_CurrTime,KT) >= T && (m_BuyAvg-m_New  <=m_MinPrice) && BRP >0) {
     Commentary(Text(T) + "秒价格不前进就平仓");
     A_SendOrder(Enum_Sell,Enum_Exit, F_BuyRemainPosition(),COD.Price("bid1"));
     Commentary("止盈平推完成,准备退出");
     Exit(); //退出公式
      }
       } End 

     

     来源: WWW.CXH99.COM

  • 文华客服: 这么厉害, 来源: WWW.CXH99.COM
  • 文华客服:  来源: WWW.CXH99.COM
  • 文华客服:m_TickData = Def_TickData("COD",1,50);  
    引用"COD"字符就能自动匹配到当前手动的合约?请教这是什么机制?

     

  • 网友回复:  是的,这个是根据您当前手动下单页面上所选合约来自动指定的,
    这个是一种常见的写法,您可以参考MQ说明书中算法模型使用这部分来详细了解一下关于算法模型手动下单的使用:
    http://mq.wenhua.com.cn/Solution/index?flag=0





 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容