投资者咨询:MQ模型修改 (文华财经wh9)
来源:文华财经 日期:2018-5-23 11:17
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
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);
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
我的意思是
技术人员回复
日期: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
