- 精华
- 0
- 在线时间
- 62 小时
- UID
- 155954
- 积分
- 55
- 帖子
- 34
- 阅读权限
- 30
- 注册时间
- 2011-6-12
- 最后登录
- 2021-5-13
- 精华
- 0
- UID
- 155954
- 积分
- 55
- 帖子
- 34
- 主题
- 21
- 阅读权限
- 30
- 注册时间
- 2011-6-12
- 最后登录
- 2021-5-13
|
新版.3 ,888合约在复权后,POSITIONPROFTI有误,请测试,代码如下
Events
OnInit()
{
SubscribeBar("IC888.CFFEX","5m",20190101,0,Enum_Data_RolloverBackWard);
//AddDataFlag(Enum_Data_RolloverRealPrice);//加上自动映射为真实价则positionproft值正确,否则持仓盈亏只要是多单都是亏陨。空单相反。
}
OnReady()
{
}
OnBar(ArrayRef<Integer> indexs)
{
If(Time==0.0930)
Buy(1,Open);
If(Time==0.1330)
Sell(0,Open);
Commentary("PositionProfit= "+Text(PositionProfit));
}
另外一个问题,凡是有设置交易映射到真实价格的,则entryprice,exitprice取到的值就是真实价格,这样是否合理? 因为这样的话,原来写好的函数比如下单手数计算,模块化的开平系统里取到的值就是下单真实价格,但是函数计算时像close,open这些 的值却是复权后的值,这样计算值就会是错误的,这样这些自定义函数就得全部改写,需要乘以rollover比较麻烦。换个方法, 如果虽设置了映射真实价格,但取的值还是图表上复权后的值,只是在测试报告里用真实价计算结果,及实际以真实价下单,这样是不是更方便一些。i下单价可用entryprice/rollover算得。
还有,系统里可以考虑增加HasRolloverBackWard,HasRolloverRealPrice来取得是否有复权和真实价映射状态,这样方便在程序中调用。仅供参考,可能不一定周全。
|
|