转自:http://blog.csdn.net/wowotuo/article/details/43242663
CTP的相关文档告诉我们,中金所和三大商品交易所中,只有上期所区分平今仓和平昨仓。也就是说,其它交易所没有closeToday。但,有二个方面值得我们注意:
1、这说得是交易所层次的委托,而不是CTP层次的委托,CTP层次并没有说,对上期所以外的委托不接受closeToday,或不存在CloseYesterday?
2、值得注意的是CloseYesterday好象被忽略了?
一、关于平仓委托的insert类别
请看CTP开平的类型:
// TFtdcOffsetFlagType是一个开平标志类型
public enum EnumOffsetFlagType
{
Open = 48,
Close = 49,
ForceClose = 50,
CloseToday = 51,
CloseYesterday = 52,
ForceOff = 53,
LocalForceClose = 54,
}
事实上,CTP层次:
(1)如果不是上期所,平今仓可用close或closeToday,平昨仓可用close或closeYesterday。
(2)如果是上期所, 平今仓只可用closeToday,平昨仓可用close或closeYesterday。
但有人认为,在发往相关交易所之前,CloseToday或CloseYesterday在CTP后台会进行相应的转化,尽管这种说法没被得到官方文档认同,但这种说法有实证数据支持。因此,上面的(1)(2)的确是可以用的。注意,上面的写法,也许不是推荐的规范的写法。
二、关于成交回报的委托类型
当然,我们也关心,那成交回报的流水回来的时侯,会有什么区分么?
大部分情况是:CloseYesterday=> insert
=>CloseYesterday;CloseToday=> insert
=>CloseToday; 当然,好象也有其它的成交回报方式,而且每个交易所的成交回报信息,还不太稳定,存在不同的时侯,返回信息不太一致的
情况。即存在:closeToday =>close或closeYesterday =>close的情况。
一个实盘测试账户的LOG数据说话:
(下面每条记录来自于真实的交易数据!)
2015-02-10 11:13:22,330 [5] INFO StrategyTrading.Logger - =>TA505 Sell inputOffset: Open => tradeOffset: Open
2015-02-10 10:00:20,906 [5] INFO StrategyTrading.Logger - =>rb1505
Buy inputOffset: CloseYesterday => tradeOffset: CloseYesterday
2015-02-10 11:13:21,909 [5] INFO StrategyTrading.Logger - =>TA505
Sell inputOffset: CloseYesterday => tradeOffset: Close
2015-02-10 21:59:20,021 [5] INFO StrategyTrading.Logger - =>ru1505 Buy CloseYesterday -> CloseYesterday
2015-02-10 21:59:20,114 [5] INFO StrategyTrading.Logger - =>TA505 Buy CloseYesterday -> Close
2015-02-11 01:54:26,377 [5] INFO StrategyTrading.Logger - => p1505 Sell CloseYesterday -> Close
规律:
(1)如果是上期所,CloseYesterday -> CloseYesterday 。其它:CloseYesterday -> Close 。
(2)如果是中金所:CloseToday -> Close. 其它的,好象不变。(还需进行证实!)
还有没有其它的比如,closeYesterday=>ForceClose 我们也不妨等待一下吧。有的话,我会收集放到这里来的。