全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
RelativeSymbol()是怎么使用的?
2021-06-05 10:18

该函数没有使用说明方法,请求一个范例,在当前000或者888合约状态下,如何映射主力合约

kyover

第一种是外部设置 在策略单元设置里进行映射

第二种是在oninit里 加入代码 SetOrderMap2MainSymbol()表示映射到主力合约

或者SetOrderMap2AppointedSymbol(relativesymbol)也可以达到同样效果

具体函数说明请移步函数列表

2021-06-07 14:20
gtja83605366
@kyover

    OnInit()
    {

         SubscribeBar("IF888.CFFEX","5m",20210520);     
         SetOrderMap2MainSymbol();    
      
    }

这种写法不正确,无法映射主力合约,应该如何改?

2021-06-09 00:40
kyover
@gtja83605366

实测是可以设置映射过去的,建议你完整的发一个详细操作说明,包括图文,看看你是不是哪里操作错了。

顺便提一句,这个设置是分图层的,不加前缀就是默认设置第一个图层映射。如果你是多图层,可以用range处理

 

2021-06-09 09:36
gtja83605366
@kyover

Params
    Numeric AfStep( 0.02);
    Numeric AfLimit( 0.2 ) ;
      
    Numeric a(0.006);
    Numeric initcapital(100);    //单位:万
    Numeric moneyrate(80);         //资金使用比例:单位%    
    Numeric money(100);             //固定市值开仓:单位万 
Vars

    Series<Numeric> lots(0);        //下单手数   


Events
    OnInit()
    {

         SubscribeBar("rb888.SHFE","10m",20210101);     
         SubscribeBar("rb888.SHFE","10m",20210101);     
        data1.SetOrderMap2MainSymbol();    
        
        //SetOrderMap2AppointedSymbol(relativesymbol);
    }
    OnBarclose(ArrayRef<Integer> indexs)
    {
        Range[0:DataSourceSize() - 1]
        {

                                                                        
              lots=IntPart(Portfolio_CurrentEquity*0.8/(data1.Close*contractunit*BigPointValue*0.1)); //计算开仓手数    
            If(MarketPosition == 0 And Portfolio_CurrentEquity == Portfolio_CurrentCapital )
            {

             If( data0.Close > data0.OpenD(0) )                
              {
                 data1.buy(lots,data1.Open);

              }
             If( data0.Close < data0.OpenD(0) )                        
              {
                 data1.SellShort(lots,data1.Open);

              }
            }
            If(MarketPosition == 1 )
            {
             If(data0.Close < data0.OpenD(0)  )                
              {
                 data1.sell(0,data1.Open);

              }
            }
            If(MarketPosition == -1 )
            {
             If(data0.Close > data0.OpenD(0) )                
              {
                 data1.BuyToCover(0,data1.Open);

              }
            }

            }
            
        }

增加了前缀data1,但仍无法映射到主力合约,第0图层是出信号的,第1图层是用来交易的

2021-06-09 13:22
kyover
@gtja83605366

你是怎么看出来没映射成功的?就用你的代码打开测了单元设置,data0是没映射,data1是映射了的

2021-06-09 14:04
您未登录,请先 登录注册 后发表评论
顶部