- 精华
- 0
- 在线时间
- 148 小时
- UID
- 40630
- 积分
- 129
- 帖子
- 88
- 阅读权限
- 40
- 注册时间
- 2011-5-18
- 最后登录
- 2014-12-2
- 精华
- 0
- UID
- 40630
- 积分
- 129
- 帖子
- 88
- 主题
- 15
- 阅读权限
- 40
- 注册时间
- 2011-5-18
- 最后登录
- 2014-12-2
|
做股指跨期,允许连续建仓,最大仓位为5.每次同时买卖两个品种,当出现单腿的时候,让另一个品种追单。我没想到什么好办法,只能让其二次发单,但这样结果依然不定。之前还有交易,现在都没交易了,不知道为啥?!呜呜呜。。。。。。
恳求管理员和高手们,帮忙解答下!不胜感激!非常感谢!附代码:
Params
Numeric Bpionts(7.8);//大基差值
Numeric Spionts(7.0);//小基差值
Numeric lots(1);//交易数量
Numeric maxposition(5);
Vars
Bool Entercon;//入场条件
bool Exitcon;//出场条件
Numeric MyFlag(0);//全局变量标识,用来限制每次平仓后开新仓。
Begin
if(BarStatus == 0) //在开始时定义全局变量
{
SetGlobalVar(0,0);
}
//初始化全局变量
MyFlag=GetGlobalVar(0);
//入场和出场条件
Entercon=(Data1.Q_BidPrice-Data0.Q_AskPrice)>=Bpionts;//基差变大时,买近卖远
Exitcon=(Data1.Q_AskPrice-Data0.Q_BidPrice)<=Spionts;//基差变小时,卖近买远
//入场
if (( Entercon&& MyFlag==0))
{
if(Data0.A_BuyPosition>=0 &&Data1.A_SellPosition>=0&&Data0.A_BuyPosition<=maxposition&&Data1.A_SellPosition<=maxposition)
{
Data0.A_SendOrder(Enum_Buy ,Enum_Entry,lots,Q_AskPrice+MinMove*PriceScale);//买近月,以盘口卖一价减一跳
Data1.A_SendOrder(Enum_Sell,Enum_Entry,lots,Q_BidPrice-MinMove*PriceScale);// 卖远月,以盘口买一价加一跳
if(Data0.A_BuyPosition!=0&&Data1.A_SellPosition!=0&&Data0.A_BuyPosition==Data1.A_SellPosition) SetGlobalVar(0,1);
if(Data0.A_BuyPosition-Data1.A_SellPosition==1)
{
Data1.A_SendOrder(Enum_Sell,Enum_Entry,lots,Q_BidPrice-MinMove*PriceScale);
SetGlobalVar(0,1);
}
if(Data0.A_BuyPosition-Data1.A_SellPosition==-1)
{
Data0.A_SendOrder(Enum_Buy ,Enum_Entry,lots,Q_AskPrice+MinMove*PriceScale);
SetGlobalVar(0,1);
}
}
}
//出场
if (Exitcon&& MyFlag==1)
{
if(Data0.A_BuyPosition!=0&&Data1.A_SellPosition!=0&&Data0.A_BuyPosition==Data1.A_SellPosition)
{
Data0.A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice-MinMove*PriceScale);//卖近月,以盘口买一价加一跳
Data1.A_SendOrder(Enum_Buy ,Enum_Exit,A_SellPosition(),Q_AskPrice+MinMove*PriceScale); //买远月,以盘口卖一价减跳
if(Data0.A_BuyPosition==0 &&Data1.A_SellPosition==0)
{ SetGlobalVar(0,0);
MyFlag=GetGlobalVar(0);
}
if(Data0.A_BuyPosition==0 &&Data1.A_SellPosition!=0)
{
Data1.A_SendOrder(Enum_Buy ,Enum_Exit,A_SellPosition(),Q_AskPrice+MinMove*PriceScale);
SetGlobalVar(0,0);
MyFlag=GetGlobalVar(0);
}
if(Data0.A_BuyPosition!=0 &&Data1.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice-MinMove*PriceScale);
SetGlobalVar(0,0);
MyFlag=GetGlobalVar(0);
}
}
}
//14时59分撤掉所有未成交单
if(time>0.1458)
{
Data0.A_DeleteOrder;
Data1.A_DeleteOrder;
}
End |
|