MQ模型修改 (文华财经wh9)

投资者咨询:MQ模型修改 (文华财经wh9)
来源:文华财经  日期:2018-5-23 11:17
 先一步买量大于卖量的5倍后再卖一价一次性上跳两个价位,买一价连跳两次每次上跳一价位,最后一个价位的买量大于卖量2倍如何写?请加入止模型中谢谢!
Data
   COD:"IF1804";
Vars
   Numeric MINP; //最小变动价位
   Numeric CON; //条件
   Var_TickData TKD; //数据区
Begin
   MINP = Price("MinPrice"); //最小变动价位
   TKD = Def_TickData("IF1804",1,3); //数据区
   If(TKD.State == 1) //如果数据区有效
   {
      If(TKD[2].Ask1 >= TKD[1].Ask1 + 2 * MINP) //卖一价一次性上跳两个价位
      {
         If(TKD[2].Bid1 >= TKD[1].Bid1 + 1 * MINP && TKD[1].Bid1 >= TKD[0].Bid1 + 1 * MINP) //买一价连跳两次每次上跳一价位
         {
            If(TKD[2].BidVol1 > 5 * TKD[2].AskVol1) //最后一个价位的买量大于卖量5倍
            {
               A_SendOrder(Enum_Buy,Enum_Entry,1,Price("Ask1")); 
            }
         }
      }
   }
   If(TKD.State == 1) //如果数据区有效
   {
      If(TKD[2].Bid1 <= TKD[1].Bid1 - 2 * MINP)
      {
         If(TKD[2].Ask1 <= TKD[1].Ask1 - 1 * MINP && TKD[1].Ask1 <= TKD[0].Ask1 - 1 * MINP) 
         {
            If(TKD[2].Ask1 > 5 * TKD[2].Bid1)
            {
               A_SendOrder(Enum_Sell,Enum_Entry,1,Price("Bid1")); 
            }
         }
      }
   }
End
 
技术人员回复
日期:2018-5-23 11:28
这么试试

 /*先一步买量大于卖量的5倍后再卖一价一次性上跳两个价位
,买一价连跳两次每次上跳一价位,
最后一个价位的买量大于卖量2倍如何写?
请加入止模型中谢谢!*/
Data
   COD:"IF1804";
Vars
   Numeric MINP; //最小变动价位
   Numeric CON; //条件
   Var_TickData TKD; //数据区
Begin
   MINP = Price("MinPrice"); //最小变动价位
   TKD = Def_TickData("IF1804",1,3); //数据区
   If(TKD.State == 1) //如果数据区有效
   {
If(TKD[1].BidVol1 > 5 * TKD[1].AskVol1  ) 
      {
         If(TKD[2].Bid1 >= TKD[1].Bid1 + 1 * MINP && TKD[1].Bid1 >= TKD[0].Bid1 + 1 * MINP) //买一价连跳两次每次上跳一价位
         {
           If(TKD[2].Ask1 >= TKD[1].Ask1 + 2 * MINP &&TKD[2].BidVol1 > 2 * TKD[2].AskVol1  ) //卖一价一次性上跳两个价位
            {
               A_SendOrder(Enum_Buy,Enum_Entry,1,Price("Ask1")); 
            }
         }
      }
   }
   If(TKD.State == 1) //如果数据区有效
   {
  If(TKD[1].Ask1 > 5 * TKD[1].Bid1)
      {
         If(TKD[2].Ask1 <= TKD[1].Ask1 - 1 * MINP && TKD[1].Ask1 <= TKD[0].Ask1 - 1 * MINP) 
         {
               If(TKD[2].Bid1 <= TKD[1].Bid1 - 2 * MINP&&TKD[2].BidVol1 *2< TKD[2].AskVol1  ) 
            {
               A_SendOrder(Enum_Sell,Enum_Entry,1,Price("Bid1")); 
            }
         }
      }
   }
End
投资者咨询:MQ模型修改 (文华财经wh9)
来源:文华财经  日期:2018-5-23 11:17
 老师请帮我l转为Tick模型"
技术人员回复
日期:2018-5-23 20:06
 如截图,修改下源码属性就可以了



图片点击可在新窗口打开查看
投资者咨询:MQ模型修改 (文华财经wh9)
来源:文华财经  日期:2018-5-23 11:17
 老师我是想把"买量大于卖量的5倍"然后再卖一价一次性上跳两个价位,买一价连跳两次每次上跳一价位,最后一个价位的买量大于卖量2倍在Tick模型" 如何写?
Vars
     Numeric B1;
     Numeric S1;
  Numeric CON;
Numeric CON2;
NumericSeries S;
Begin
     B1=Bid1;
     S1=Ask1;
CON = S1>Ref(S1,1)+2*MinPrice&&B1>Ref(B1,1)+MinPrice&&B1>Ref(B1,1)+MinPrice&&bidvol1>=2*askvol1);
CON2= B1<Ref(B1,1)-2*MinPrice&&S1<Ref(S1,1)-MinPrice&&S1<Ref(S1,1)-MinPrice&&bidvol1*2<=askvol1);
技术人员回复
日期:2018-5-23 21:10
核实一下您的思路

买量大于卖量的5倍,是当笔tick满足这个条件?

还是前一笔tick满足这个条件,之后当笔tick在判断买一,卖一价?
投资者咨询:MQ模型修改 (文华财经wh9)
来源:文华财经  日期:2018-5-23 11:17
 前一笔tick满足这个条件,然后再卖一价一次性上跳两个价位,买一价连跳两次每次上跳一价位,最后一个价位的买量大于卖量2倍
技术人员回复
日期:2018-5-24 8:19
分析了下,2楼是调整顺序之后,您在仔细看下
投资者咨询:MQ模型修改 (文华财经wh9)
来源:文华财经  日期:2018-5-23 11:17
 我的意思是

CON = 买量大于卖量的5倍"然后再S1>Ref(S1,1)+2*MinPrice&&B1>Ref(B1,1)+MinPrice&&B1>Ref(B1,1)+MinPrice&&bidvol1>=2*askvol1);
      CON2= B1<Ref(B1,1)-2*MinPrice&&S1<Ref(S1,1)-MinPrice&&S1<Ref(S1,1)-MinPrice&&bidvol1*2<=askvol1);
技术人员回复
日期:2018-5-25 10:12
Data
   COD:"IF1806";
Vars
   Numeric CON1; //条件1
   Numeric CON2; //条件2
   Numeric BIDP; //买一价
   Numeric ASKP; //卖一价
   Numeric BIDV; //买一量
   Numeric ASKV; //卖一量
   Numeric MINP; //最小变动价位
Begin
   ASKP = Ask1; //买一价
   BIDP = Bid1; //卖一价 
   BIDV = BidVol1; //买一量
   ASKV = AskVol1; //卖一量
   MINP = MinPrice; //最小变动价位
   CON1 = ASKP > Ref(ASKP,1) + 2 * MINP && BIDP > Ref(BIDP,1) + MINP && Ref(BIDP,1)  > Ref(BIDP,2) + MINP && BIDV >= 2 * ASKV; //条件1
   CON2 = BIDP < Ref(BIDP,1) - 2 * MINP && ASKP < Ref(ASKP,1) - MINP && Ref(ASKP,1) < Ref(ASKP,2) - MINP && ASKV >= 2 * BIDV; //条件2
   If(BIDV > 5 * ASKV) //如果买一量大于5倍的卖一量
   {
      If(CON1 == 1) //如果满足条件1
      {
         A_SendOrder(Enum_Buy,Enum_Entry,1,ASKP); //发出买开委托
      }
   }
   If(ASKV > 5 * BIDV) //如果卖一量大于5倍的买一量
   {
      If(CON2 == 1) //如果满足条件2
      {
         A_SendOrder(Enum_Sell,Enum_Entry,1,BIDP); //发出卖开委托
      }
   }
End