AvgEntryPrice()函数在888合约发生换月之后返回值和换月之前的值不一致。以双均线策略威力,发生换月之前AvgEntryPrice返回的是金叉或者死叉是的开盘价(用开盘价发单),这个容易理解。但是发生换月之后的AvgEntryPrice价格我就不知道它怎么计算的了,不知道TB在这块是什么机制。
换月会导致一大堆图表函数失效
自己弄个全局变量统计
Events
OnInit()
{
AddDataFlag(Enum_Data_AutoSwapPosition);
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
if(CurrentBar==0)
{
buy(1,open);
}
Commentary("AvgEntryPrice="+text(AvgEntryPrice));
}
你换月时平仓了,那原来的持仓就不存在了,持仓均价肯定就变了
老师,那发生换月之后AvgEntryPrice()返回的值是什么呢?
换月之后AvgEntryPrice()返回的值是888图表中发生换月时的那个K线对应的价格吗?根据我的观察,其实对应不上。
开仓在哪里均价就是哪里,数值不对就取消复权
也就是说复权状态下,换月时AvgEntryPrice()不会自动获取复权后的价格,如果向获得复权后的价格需要用rollover()进行转换。因为我的策略需要,我需要盘中计算当前持仓的浮盈百分比,所以并不方便取消复权。我想到的解决方案是用Natural类型变量固定住每一次金叉/死叉发生后的AvgEntryPrice(),这样即使发生了换月也不会改变。
老师,我在TBQuant终端测试了一下。上图是1000万资金,下图是2000万资金。其它条件按完全相同,我发现两次的AvgEntryPrice并不相同,请问是什么原因呢?