自從綜合交易平台(ctp)的api開放以來,很多人開始編寫自己的程式化交易系統,今天我想說說自己的一些看法。
首先解讀一下ctp的介面說明,ctp的api使用建立在tcp協議之上ftd協議(《**交易資料交換協議》)與交易託管系統進行通訊,而交易託管系統負責投資者的交易業務處理。ftd 協議中規定了所有的通訊都基於某一種通訊模式。
交易涉及的通訊模式共有三種:
1.對話通訊模式,是指由會員端主動發起的通訊請求。該請求被交易所端接收和處理,並給予響應。例如報單、查詢等。這種通訊模式與普通的客戶/伺服器模式相同。
2.私有通訊模式,是指交易所端主動,向某個特定的會員發出的資訊。例如成交
回報等。
3.廣播通訊模式,是指交易所端主動,向市場中的所有會員都發出相同的資訊。
例如公告、市場公共資訊等。
ctp的交易api提供了兩個介面,分別為cthostftdctraderapi 和cthostftdctraderspi
我們自己開發的交易系統通過cthostftdctraderapi向ctp傳送操作請求,通過cthostftdctraderspi接收ctp的任何響應。
現在把主要的業務舉例在下表中
業務舉例
通訊模式
cthostftdctraderapi
cthostftdctraderspi
登入對話模式
requserlogin
onrspuserlogin
報單錄入
reqorderinsert
onrsporderinsert
報單查詢
reqqryorder
onrspqryorder
成交查詢
reqqrytrade
onrspqrytrade
報單回報
私有模式
onrtnorder
成交回報
onrtntr
**涉及的通訊模式共有兩種:
1.對話通訊模式,同交易一樣,是指由會員端主動發起的通訊請求。該請求被交易所端接收和處理,並給予響應。例如登入,退訂等。
2.廣播通訊模式,主要是**訂閱,當訂閱**後交易所端主動向會員連續主動發出**資訊。
業務舉例
通訊模式
cthostftdcmdapi
cthostftdcmdspi
登入對話
模式requserlogin
onrspuserlogin
**訂閱
廣播模式
subscribemarketdata
onrspqrydepthmarketdata
**退訂
對話模式
unsubmarketdata
onrspunsubmarketdata
可見,通過ctp提供的介面,我們可以向ctp傳送業務申請,也不斷的按照三種通訊模式中的其中一種接收ctp的響應。因此我們寫的交易系統中至少就應該有兩個執行緒,乙個稱其為主業務執行緒,負責對ctp發出業務申請;另乙個執行緒為api工作執行緒,負責接收ctp通過廣播通訊模式,對話通訊模式,私有通訊模式其中一種模式對交易系統的響應。
綜上所述,我們的程式化交易系統需要完成的業務可以劃分為:
1.基本操作,比如登入,訂閱等;
2.**操作,比如對**資料的接收,儲存等
3.訂單操作,比如報單;對報單,成交狀況的查詢;報單,成交狀況的私有回報等。
4.資料監聽和處理操作,比如接收到新資料之後的統計處理,滿足統計條件後的報單處理(其實這裡就是我們的策略所在)
那麼,我建議將我們的程式化交易系統分為四個執行緒,分別處理上述業務。程式的主線程就可以完成基本操作,完成登入,訂閱等初始化工作。
其它三個執行緒工作關係如下圖所示:
CTP的程式化交易系統開發
很多人在綜合交易平台 ctp 的api開放後,開始編寫程式化交易系統。先解讀ctp的介面說明 ctp的api使用建立在tcp協議之上ftd協議與交易託管系統進行通訊,而負責投資者交易業務處理的則是交易託管系統。ftd 協議中規定了所有的通訊都基於某一種通訊模式。ctp的交易api提供了兩個介面 1....
基於CTP的程式化交易系統開發(一)
自從綜合交易平台 ctp 的 api開放以來,很多人開始編寫自己的程式化交易系統,今天我想說說自己的一些看法。首先解讀一下 ctp的介面說明,ctp的 api使用建立在 tcp協議之上 ftd協議 交易資料交換協議 與交易託管系統進行通訊,而交易託管系統負責投資者的交易業務處理。ftd 協議中規定了...
CTP程式化系統開發(C PHP)
2016 12 13 11 03 52 借助ctp的demo 上海 交易公司提供的 需要自己在 上註冊賬號,c 網路程式設計socket的例子 php網路程式設計socket的demo 順帶了解下swoole的使用,但開發中,不必用swoole或workerman 移植到linux系統下,需要用到 ...