綜合交易平臺API開發(fā)簡介.doc
《綜合交易平臺API開發(fā)簡介.doc》由會員分享,可在線閱讀,更多相關(guān)《綜合交易平臺API開發(fā)簡介.doc(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
綜合交易平臺API開發(fā)簡介 大綱 ? Api概述 ? 通用規(guī)則 ? 交易業(yè)務(wù) ? 行情業(yè)務(wù) ? 參考資料 ? 綜合交易平臺Api包括交易Api和行情Api ? 交易Api建立在Tcp協(xié)議上,實現(xiàn)了客戶端和綜合交易平臺之間的雙向異步通訊。行情Api可以運(yùn)行在Tcp或者在Udp協(xié)議上。 ? 下面把綜合交易平臺簡稱為Thost,交易Api簡稱為TraderApi ,行情Api簡稱為MdUserApi。上述2種Api統(tǒng)稱為Api 概述 - 通訊模式 Api有3種通訊模式: ? 對話通訊模式:由客戶端主動發(fā)起請求。Thost收到請求、處理請求后,返回1條或者多條響應(yīng)紀(jì)錄。例如登入、各項查詢、報單、撤單等操作。 ? 私有通訊模式:由Thost主動向客戶端發(fā)出的相關(guān)信息。例如委托回報、成交回報、錯單回報等 ? 廣播通訊模式:由Thost主動向所有客戶端發(fā)出的公共信息,例如行情等。 ? 有3種方式訂閱公有流和私有流 enum THOST_TE_RESUME_TYPE { // 從當(dāng)天的第一條記錄開始接收數(shù)據(jù)流 THOST_TERT_RESTART = 0, // 接收上次斷線以后的數(shù)據(jù)流 THOST_TERT_RESUME, // 接收本次登入以后的數(shù)據(jù)流 THOST_TERT_QUICK }; 概述 - 初始化過程 MdUserApi的初始化過程比較簡單, 默認(rèn)按照Quick的方式訂閱公有流和私有流。 概述 - 樣例代碼 ? TraderApi樣例代碼: testTraderApi – 初始化,登入,確認(rèn)結(jié)算結(jié)果,查詢合約,查詢資金,查詢持倉,報單,收委托回報,撤單 ? MdUserApi樣例代碼: testMdUserApi – 初始化,登入,訂閱,收行情 概述 - 接口文件 TraderApi接口文件: ? ThostFtdcTraderApi.h: 定義了請求接口CThostFtdcUserApi,事件處理接口CThostFtdcUserSpi。 ? ThostFtdcUserApiStruct.h: 定義了接口方法中用到的數(shù)據(jù)結(jié)構(gòu)。 ? ThostFtdcUserApiDataType.h: 定義了數(shù)據(jù)結(jié)構(gòu)中用到數(shù)據(jù)類型,枚舉描述。 ? thosttraderapi.lib:靜態(tài)連接庫 ? thosttraderapi.dll:動態(tài)鏈接庫 MdUserApi接口文件: ? ThostFtdcMdApi.h: 定義了請求接口CThostFtdcMdApi,事件處理接口CThostFtdcMdSpi。 ? ThostFtdcUserApiStruct.h,ThostFtdcUserApiDataType.h:和TraderApi公用。 ? thostMdapi.lib:靜態(tài)連接庫 ? thostMdapi.dll:動態(tài)鏈接庫 通用規(guī)則 - 命名規(guī)則 Api的方法都是遵循一定的命名規(guī)則來設(shè)定。 ? 請求指令:Req***, OnRsp***。如ReqUserLogin,OnRspUserLogin。 ? 查詢指令:ReqQry***,OnRspQry***。如ReqQryInstrument,OnRspQryInstrument。 ? 回報消息:OnRtn***,如OnRtnOrder,OnRtnTrade。 ? 錯誤回報:OnErrRtn***,如OnErrRtnOrderInsert,OnErrRtnOrderAction。 通用規(guī)則 – 查詢/請求 ? 請求查詢合約 virtual int ReqQryInstrument(CThostFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0; ? 請求查詢合約響應(yīng) virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; ? 查詢參數(shù) 如果查詢參數(shù)為空,說明需要查詢所有數(shù)據(jù)。如果需要查詢某個交易所的合約,就在查詢參數(shù)中指定ExchangeID。 ? 請求編號RequestID 發(fā)送請求時需要設(shè)定RequestID,TraderApi返回響應(yīng)時返回相關(guān)請求的RequestID。 因為TraderApi是異步實現(xiàn)的,終端程序可能連續(xù)發(fā)出多個請求和查詢指令。RequestID可以把請求/查詢指令和相關(guān)的回報關(guān)聯(lián)起來。 ? 指令返回值 如果調(diào)用方法成功,返回0。否則表示不成功。 ? 響應(yīng)信息RspInfo 如果RspInfo為空,或者RspInfo的錯誤代碼為0,說明查詢成功。 否則RspInfo中會保存錯誤編碼和錯誤信息。 ? ? 查詢響應(yīng)數(shù)據(jù) 查詢響應(yīng)方法每次返回1條記錄。如果沒有查詢結(jié)果,就返回空指針。 ? ? 結(jié)束標(biāo)志IsLast 無論是否有查詢響應(yīng)數(shù)據(jù)沒,只要查詢響應(yīng)結(jié)束,IsLast為true。 交易業(yè)務(wù) – 交易序列號 從報單到成交的交易過程中,會產(chǎn)生如下幾組交易序列號: ? FrontID + SessionID + OrderRef 用戶使用這組交易序列號可以按照自己的方式來唯一標(biāo)示發(fā)出的任何一筆委托。 用戶登入成功后,會收到前置機(jī)編號FrontID, 會話編號SessionID 和最大報單引用MaxOrderRef。 用戶在報單時設(shè)定報單引用OrderRef。 OrderRef可以從MaxOrderRef開始遞增。 如果用戶沒有設(shè)定OrderRef,在報單響應(yīng)中,Thost會為用戶設(shè)置一個的OrderRef。使得每個報單的這組序列號保持唯一。 因為這組交易序列號是由用戶設(shè)定的。所以在沒有得到報單響應(yīng)前,就可以使用這組交易序列號進(jìn)行撤單操作。 ? ? BrokerID + BrokerOrderSeq Thost收到用戶報單后,為每個經(jīng)紀(jì)公司的報單生成1組交易序列號。 ? ? exchangeID + traderID + OrderLocalID 交易席位在向交易所報單時,產(chǎn)生這組交易序列號,標(biāo)示每一筆發(fā)往交易所的報單。 ? ? exchangeID + OrderSysID 交易所接受了投資者報單,產(chǎn)生這組交易序列號,標(biāo)示每一筆收到的報單。 用戶撤單時也可以使用這組交易序列號 ? 注意:服務(wù)器在觸發(fā)服務(wù)器預(yù)埋單、條件單時,會發(fā)送新的委托指令到交易所,需要設(shè)置新的OrderRef和OrderSysID。 交易業(yè)務(wù) – 用戶登入 ? 用戶登入指令是ReqUserLogin。 用戶登入時需要輸入:經(jīng)紀(jì)公司代碼,用戶代碼(就是投資者代碼),密碼,用戶端產(chǎn)品信息(就是終端程序的名稱) ? ? 登入成功后,Thost返回: 當(dāng)前會話的參數(shù)。用戶可以用這些參數(shù)定義自己的交易序列號FrontID+SessionID+MaxOrderRef 當(dāng)前各個交易所的時間。終端程序依此可以估計未來各個交易所的時間。 交易業(yè)務(wù) – 準(zhǔn)備交易 ? 在1個交易日中: ? 為了讓投資者了解當(dāng)前的交易風(fēng)險。終端程序要在第一次發(fā)送交易指令之前,查詢投資者結(jié)算結(jié)果(ReqQrySettlementInfo)和確認(rèn)投資者結(jié)算結(jié)果(ReqSettlementInfoConfirm),才能正常發(fā)送交易指令,包括報單、撤單、服務(wù)器預(yù)埋單等指令。 ? 如果投資者已經(jīng)確認(rèn)過了結(jié)算結(jié)果,以后登入Thost,不再需要確認(rèn)結(jié)算結(jié)果,就可以發(fā)送交易指令了。 ? 可以通過請求查詢結(jié)算信息確認(rèn)(ReqQrySettlementInfoConfirm)方法了解今天是否做了確認(rèn)結(jié)算結(jié)果的操作。 交易業(yè)務(wù) – 報單指令 ? 報單指令是:ReqOrderInsert。 ? 報單指令中如下字段需要如下設(shè)置: ///成交量類型:任何數(shù)量 fldOrder.VolumeCondition = THOST_FTDC_VC_AV; /// 最小成交量:1 fldOrder.MinVolume = 1; /// 強(qiáng)平原因:非強(qiáng)平 fldOrder.ForceCloseReason = THOST_FTDC_FCC_NotForceClose; /// 自動掛起標(biāo)志:是 fldOrder.IsAutoSuspend = 1; ///用戶強(qiáng)評標(biāo)志:否 fldOrder.UserForceClose = 0; ? 如果發(fā)送立即限價單: /// 報單價格條件類型:限價 OrderPriceType = THOST_FTDC_OPT_LimitPrice; /// 價格:用戶設(shè)定 LimitPrice = ……; /// 有效期類型類型:當(dāng)日有效 TimeCondition = THOST_FTDC_TC_GFD; ? ? 如果發(fā)送立即市價單 /// 報單價格條件類型:任意價 fldOrder.OrderPriceType = THOST_FTDC_OPT_AnyPrice; ///價格:0 fldOrder.LimitPrice = 0; ///有效期類型類型:立即完成,否則撤銷 fldOrder.TimeCondition = THOST_FTDC_TC_IOC; ? 如果發(fā)送觸發(fā)單 ///觸發(fā)條件:用戶設(shè)定 ContingentCondition = ……; ///止損價:用戶設(shè)定 StopPrice = ……; /// 報單價格條件類型:限價 OrderPriceType = THOST_FTDC_OPT_LimitPrice; /// 價格:用戶設(shè)定 LimitPrice = ……; /// 有效期類型類型:當(dāng)日有效 TimeCondition = THOST_FTDC_TC_GFD; ? 關(guān)于平倉 上期所區(qū)分昨倉和今倉。 平昨倉時,開平標(biāo)志類型設(shè)置為平倉THOST_FTDC_OF_Close 平今倉時,開平標(biāo)志類型設(shè)置為平今倉THOST_FTDC_OF_CloseToday ? 其他交易所不區(qū)分昨倉和今倉。 開平標(biāo)志類型統(tǒng)一設(shè)置為平倉THOST_FTDC_OF_Close ? ? 報單響應(yīng)和回報 Thost收到報單指令,如果沒有通過參數(shù)校驗,拒絕接受報單指令。用戶就會收到OnRspOrderInsert消息,其中包含了錯誤編碼和錯誤消息。 如果Thost接受了報單指令,用戶不會收到OnRspOrderInser,而會收到OnRtnOrder,用來更新委托狀態(tài)。 交易所收到報單后,通過校驗。用戶會收到OnRtnOrder、OnRtnTrade。 如果交易所認(rèn)為報單錯誤,用戶就會收到OnErrRtnOrder。 交易業(yè)務(wù) – 撤單指令 ? 撤單指令是:ReqOrderAction。 ? 撤單輸入?yún)?shù): /// 報單操作引用, /// OrderRef相似,由用戶自己設(shè)定,保持遞增。如果用戶不設(shè)定的話,由Thost來設(shè)定。 OrderActionRef /// 操作標(biāo)志類型:撤單 ActionFlag = THOST_FTDC_AF_Delete /// 交易序列號 FrontID +SessionID+OrderRef, ExchangID+OrderSysID。 /// 其他參數(shù) BrokerID, UserID, InvestorID, InstrumentID, ? 撤單響應(yīng)和回報:和報單響應(yīng)和回報相似。 ? Thost收到撤單指令,如果沒有通過參數(shù)校驗,拒絕接受撤單指令。用戶就會收到OnRspOrderAction消息,其中包含了錯誤編碼和錯誤消息。 ? 如果Thost接受了撤單指令,用戶不會收到OnRspOrderAction,而會收到OnRtnOrder,用來更新委托狀態(tài)。 ? 交易所收到撤單后,通過校驗,執(zhí)行了撤單操作。用戶會收到OnRtnOrder。 ? 如果交易所認(rèn)為報單錯誤,用戶就會收到OnErrRtnOrderAction。 注意:2階段提交的指令都是這個規(guī)律,包括銀期轉(zhuǎn)賬。 交易業(yè)務(wù)- 委托回報 ? 委托回報的事件處理方法是:OnRtnOrder()。 ? 委托回報描述了報單的當(dāng)前狀態(tài),其中包括: ? 原始的報單指令 ? 上述幾組交易序列號: FrontID + SessionID + OrderRef, BrokerID + BrokerOrderSeq, ExchangeID + TraderID + LocalOrderID ExchangeID + OrderSysID, ? 報單委托狀態(tài) ///TFtdcOrderStatusType是一個報單狀態(tài)類型 ///全部成交 #define THOST_FTDC_OST_AllTraded '0' ///部分成交還在隊列中 #define THOST_FTDC_OST_PartTradedQueueing '1' ///部分成交不在隊列中 #define THOST_FTDC_OST_PartTradedNotQueueing '2' ///未成交還在隊列中 #define THOST_FTDC_OST_NoTradeQueueing '3' ///未成交不在隊列中 #define THOST_FTDC_OST_NoTradeNotQueueing '4' ///撤單 #define THOST_FTDC_OST_Canceled '5' ///未知 #define THOST_FTDC_OST_Unknown 'a' ///尚未觸發(fā) #define THOST_FTDC_OST_NotTouched 'b' 交易業(yè)務(wù)– 成交回報 ? 成交回報的事件處理方法是:OnRtnTrade()。 ? 成交回報描述了報單的成交事件 ? 包括下述幾組交易序列號: BrokerID + BrokerOrderSeq, ExchangeID + TraderID + LocalOrderID ExchangeID + OrderSysID, 交易業(yè)務(wù) – 交易時序 交易業(yè)務(wù) – 其他業(yè)務(wù) ? 查詢基礎(chǔ)數(shù)據(jù):交易所,合約,投資者,手續(xù)費率,保證金率,交易編碼 ? 查詢交易數(shù)據(jù):資金,持倉,(組合)持倉明細(xì) ? 其他交易功能:發(fā)送預(yù)埋單、條件單 ? 查詢/回報:委托,成交,交易所狀態(tài) ? 銀期轉(zhuǎn)賬 行情業(yè)務(wù) – 訂閱/退訂 ? 訂閱 SubscribeMarketData OnRspSubMarketData OnRtnDepthMarketData ? 退訂 UnSubMarketData OnRspUnSubMarketData 參考資料 ? Qq群:59216315,綜合交易平臺API技術(shù) ? 綜合交易平臺API開發(fā)常見問題列表.pdf ? 綜合交易平臺交易API特別說明.pdf ? 持倉各資金項計算規(guī)則.xls ? 綜合交易平臺條件單操作手冊.pdf ? CTP新版銀期轉(zhuǎn)帳TradeApi使用說明.pdf ? 交易/行情開發(fā)實例.rar(windows32/linux 64) ? 綜合交易平臺資料: http://202.109.110.121/api.htm ? 模擬環(huán)境:請參考樣例程序中的配置- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
3 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 綜合 交易平臺 API 開發(fā) 簡介
鏈接地址:http://www.820124.com/p-1561530.html