主连链回测

1、适用场景

针对主力合约进行连续交易的模型回测。
模型加载在主连合约上,信号根据当前主力合约进行计算显示。
主力换月时,模型对新旧二个主力合约分别进行计算,旧主力合约理论持仓,与当前主力合约理论持仓比较,
若理论持仓相同:旧主力平仓,新主力开仓
若理论持仓不同:旧主力平仓,新主力不开仓,根据新主力重新计算信号

注:新主力合约理论持仓与旧主力合约理论持仓不相等的情况有哪些?
(1)持仓方向相同,手数不同
(2)持仓方向相反
(3)一个有持仓,一个无持仓

2、机制具体说明

(1)信号的计算与显示:
模型根据具体合约数据进行计算信号
主连合约:只显示信号,不计算信号;显示当前主力合约计算的信号
具体合约:信号计算开始时间开始计算信号
①当前合约成为主力合约时的理论持仓与前一主力合约的当前的理论持仓相等,则保留之前的历史信号,继续计算信号
②当前合约成为主力合约时的理论持仓与前一主力合约的当前理论持仓不相等,则清空之前的历史信号,从主力切换时间开始重新计算信号

(2)合约、合约数据显示:
具体合约的列表,是包信号计算开始时间到数据结束时间范围内包含的所有年度的主力合约
具体合约的k线数据显示时间范围:当前合约的挂牌上市日~主力切换到下一个合约的日期

3、编写要点

模型必须含有Trade_Chain函数

编写示例:
setting
    Trade_Chain:Auto;
 Vars  
       Numeric MA5;  
       Numeric MA10;  
   Begin  
        MA5 = Ma(CLOSE,5);  
        MA10 = Ma(CLOSE,10);  
   If (Cross(MA5,MA10))  
     {  
        BPK;  
     }  
   If(Cross(MA10,MA5))  
     {  
        SPK;  
     }  
 PlotNumeric("MA5",MA5);
 PlotNumeric("MA10",MA10);
   End