自從綜合交易平台(
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
成交回報
onrtntrade
**涉及的通訊模式共有兩種: 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的程式化交易系統開發
很多人在綜合交易平台 ctp 的api開放後,開始編寫程式化交易系統。先解讀ctp的介面說明 ctp的api使用建立在tcp協議之上ftd協議與交易託管系統進行通訊,而負責投資者交易業務處理的則是交易託管系統。ftd 協議中規定了所有的通訊都基於某一種通訊模式。ctp的交易api提供了兩個介面 1....
CTP程式化系統開發(C PHP)
2016 12 13 11 03 52 借助ctp的demo 上海 交易公司提供的 需要自己在 上註冊賬號,c 網路程式設計socket的例子 php網路程式設計socket的demo 順帶了解下swoole的使用,但開發中,不必用swoole或workerman 移植到linux系統下,需要用到 ...