除权

通过rollover函数,每根Bar打印出来的除权系数怎么都是1?

 

Params
    /*
    可增加后续交易策略需要的参数
    */
Vars
    Series<Numeric> RealOpen(0,60);                 //真实合约的开盘价
    Series<Numeric> RealHigh(0,60);                 //真实合约的最高价
    Series<Numeric> RealLow(0,60);                  //真实合约的最低价
    Series<Numeric> RealClose;                      //真实合约的收盘价
    Numeric Lots;                                   //交易手数
    Global Numeric i; 
    /*
    可增加后续交易策略需要的变量
    */
Events
 
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[0:DataCount()-1]
        {
            Commentary(Text(Rollover()));
            //除权换月时刻的换仓处理
            If(Rollover<>Rollover[1] And Rollover[1]<>InvalidNumeric)
            {
                PlotBool("换月",True);
                Commentary("原合约收盘价:"+Text(Close[1]/Rollover[1]));
                Commentary("新合约收盘价:"+Text(Close[1]/Rollover));
                lots=Max(1,Round(Abs(CurrentContracts*Rollover/Rollover[1]),IIF(Category==0,-2,0)));
                If(MarketPosition==1)
                {             
                    Sell(0,Close[1]/Rollover[1],Enum_Signal_UnCorrectPrice);
                    Buy(lots,Close[1]/Rollover,Enum_Signal_UnCorrectPrice);
                }Else
                If(MarketPosition==-1)
                {
                    BuyToCover(0,Close[1]/Rollover[1],Enum_Signal_UnCorrectPrice);
                    SellShort(lots,Close[1]/Rollover,Enum_Signal_UnCorrectPrice);
                }
            }
             //真实价格
            If(Rollover<>InvalidNumeric)
            {
                RealOpen=Open/Rollover;
                RealHigh=High/Rollover;
                RealLow=Low/Rollover;
                RealClose=Close/Rollover;
            }   
            Else
            {
                RealOpen=Open;
                RealHigh=High;
                RealLow=Low;
                RealClose=Close;
            }
        /*
        可增加后续交易策略需要的代码
        */
        PlotKline(RealOpen,RealHigh,RealLow,RealClose);
        If(MarketPosition<>1)
            Buy(100,Open/Rollover,Enum_Signal_UnCorrectPrice);
        }
    }

股票除权价格
股票除权除息市值
关于除权换月价格计算
除权换月影响函数
初始值除权设置问题
求学习资料的文章《除权换月的代码实现》
除权代码放在公式里怎么放求指教
老师好,设置后复权以后,哪些数据需要做除权处理?
设置除权换月后当日换月,当日不能平仓,如何规避
除权换仓在实盘是否存在重复执行的问题?

加载到888合约上,启用复权设置,然后输出在观察一下试一试呢

指数合约不得行吗

 

不可以,000没有除权,也不需要

这个可以用于模拟盘换仓或者实盘吗?还有就是换仓时两个合约成交价格是用当时的开盘价,还是其他价格?

OnInit()
    {
        AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
        AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
        Bool ret = SetSwapPosVolType(2); //设置自动换仓量类型
        Commentary("SetSwapPosVolType:" + IIFString(ret, "True", "False"));
        Print("SetSwapPosVolType:" + IIFString(ret, "True", "False"));
    }

不管是实盘还是模拟,只能用于历史回测,实时情况不可以自动换月呢

用这个rollover可以用于实盘或模拟盘移仓换月吗

 

Commentary(Text(Rollover()));
            //除权换月时刻的换仓处理
            If(Rollover<>Rollover[1] And Rollover[1]<>InvalidNumeric)