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