RelativeSymbol()是怎么使用的?

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

期权,请教RelativeSymbol相关的几个问题
RelativeSymbol问题,请教!
RelativeSymbol函数应用问题
模式策略怎么使用?
工作区的右边是策略编辑是怎么实现的?
基础数据中的holiday是怎么获取
求助:longAvgEntryPrice() shortLastEntryPrice() 这些小写开头的函数怎么使用
c9888换主力了,可是RelativeSymbol没有换,导致发错价格,亏死。
几何到底是怎么算的?
测试报告里面的净值是怎么计算的

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

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

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

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

    OnInit()
    {

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

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

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

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

 

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图层是用来交易的

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