大家好,昨天群友提了一个小需求,就是把策略运行在指数上,下单到主连数据上,然后委托映射到主力合约。这个比较简单,我举一个例子就可以说明:
第一步.新建工作区
第二步.新建单元格
第三步.加载案例公式
// 简称: index_trade
// 名称: index_trade
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
Params
Vars Series
ma1;
Series
ma2;
Global Numeric KG;
Series
cond1;
Series
cond2;
Events
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
//与数据源有关
Range[0:DataCount-1]
//=========数据源相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
//AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算 }
OnBar(ArrayRef
indexs)
Range[0:0]
ma1=Average(C,5);
ma2=Average(C,10);
cond1=CrossOver(ma1,ma2);
cond2=CrossUnder(ma1,ma2);
if(cond1[1])
//Buy(1,open);
Data1.Buy(1,Data1.open);
if(cond2[1])
//SellShort(1,open);
Data1.SellShort(1,Data1.open);
-// 编译版本 2024/06/11 172813
// 版权所有 songshu123
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
第四步.查看映射信号,主连数据计算盈亏
通过data关键字,模型的计算数据在data0(图层0),data1在图层1下单到主连数据,这样回测就是基于主连数据计算盈亏了,注意在oninit里加入AddDataFlag(Enum_Data_RolloverRealPrice());映射到主力合约下单。
第五步.实盘映射到主力合约下单
这样实盘跑的话就会映射到真实的主力合约下单,不会出现因为委托合约不对而废单了。
热门跟贴