设为首页收藏本站

 找回密码
 注册
楼主: 果子橙
打印 上一主题 下一主题

跨期策略,急需高手帮忙! [复制链接]

Rank: 3Rank: 3

精华
0
UID
40630
积分
129
帖子
88
主题
15
阅读权限
40
注册时间
2011-5-18
最后登录
2014-12-2
跳转到指定楼层
1#
发表于 2012-5-11 10:41:40 |显示全部楼层 |倒序浏览
做股指跨期,允许连续建仓,最大仓位为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
流水高山心自知

Rank: 3Rank: 3

精华
0
UID
40630
积分
129
帖子
88
主题
15
阅读权限
40
注册时间
2011-5-18
最后登录
2014-12-2
2#
发表于 2012-5-11 12:13:41 |显示全部楼层
wilsonkor 发表于 2012-5-11 10:45
我看到了一大堆的嵌套if语句,呵呵。。。
我也是菜鸟。。

呜呜,不要嘲笑,心里明白就行,哈哈!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
40630
积分
129
帖子
88
主题
15
阅读权限
40
注册时间
2011-5-18
最后登录
2014-12-2
3#
发表于 2012-5-11 12:36:50 |显示全部楼层
wilsonkor 发表于 2012-5-11 12:27
基于基差的跨期套利模型啊。。。

您能帮我解决下单腿问题么?我都弄晕了,

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
40630
积分
129
帖子
88
主题
15
阅读权限
40
注册时间
2011-5-18
最后登录
2014-12-2
4#
发表于 2012-5-14 10:04:36 |显示全部楼层
为什么平仓的时候,只有一个品种平仓,而另一个不平仓?谁能帮我解答下?呜呜,没人理啊。。。。。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
40630
积分
129
帖子
88
主题
15
阅读权限
40
注册时间
2011-5-18
最后登录
2014-12-2
5#
发表于 2012-7-15 15:26:04 |显示全部楼层
myimage 发表于 2012-7-15 13:30
不要作了,做出来也不赚钱了

请问,您实盘试过?为啥不赚钱

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
40630
积分
129
帖子
88
主题
15
阅读权限
40
注册时间
2011-5-18
最后登录
2014-12-2
6#
发表于 2012-7-17 08:49:00 |显示全部楼层
rookies 发表于 2012-7-15 19:22
论坛最近新人多学习气氛不太好,不做实验不拿数据的否定或肯定和信口雌黄有什么区别?也是对自己和别人的不 ...

谢谢高手解答!对我有很大帮助,非常感谢!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-18 20:45

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部