CTP: 平昨倉與平今倉,log輕輕告訴你.......
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 我們也不妨等待一下吧。有的話,我會收集放到這裡來的。