您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

跨期策略,急需高手帮忙! - TradeBlazer公式 [开拓者 TB]

  • 咨询内容: 做股指跨期,允许连续建仓,最大仓位为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

     

  • TB技术人员: 我看到了一大堆的嵌套if语句,呵呵。。。
    我也是菜鸟。。

     

  • TB客服:
    wilsonkor 发表于 2012-5-11 10:45
    我看到了一大堆的嵌套if语句,呵呵。。。
    我也是菜鸟。。

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

     

  • 网友回复:

    基于基差的跨期套利模型啊。。。

     

  • 网友回复:
    wilsonkor 发表于 2012-5-11 12:27
    基于基差的跨期套利模型啊。。。

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

 

如果以上指标公式不适用于您常用的行情软件

或者您想改编成选股公式,以便快速选出某种形态个股的话,

可以联系我们相关技术人员 QQ: 262069696  点击在线交流进行 有偿 改编!

 


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

相关文章

    没有相关内容