《綜合交易平臺API簡介》由會員分享,可在線閱讀,更多相關(guān)《綜合交易平臺API簡介(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、綜合交易平臺API簡介 大綱 Api概述通用規(guī)則交易業(yè)務(wù)行情業(yè)務(wù)參考資料 概述綜合交易平臺Api包括交易Api和行情Api交易Api建立在Tcp協(xié)議上,實現(xiàn)了客戶端和綜合交易平臺之間的雙向異步通訊。行情Api可以運行在Tcp或者在Udp協(xié)議上。下面把綜合交易平臺簡稱為Thost,交易Api簡稱為TraderApi ,行情Api簡稱為MdUserApi。上述2種Api統(tǒng)稱為Api。 概述 - 通訊模式Api有3種通訊模式:對話通訊模式:由客戶端主動發(fā)起請求。Thost收到請求、處理請求后,返回1條或者多條響應(yīng)紀(jì)錄。例如登入、各項查詢、報單、撤單等操作。私有通訊模式:由Thost主動向客戶端發(fā)出的
2、相關(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樣例代碼: testTraderA
3、pi初始化,登入,確認(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)連接庫 thost
4、traderapi.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*,OnR
5、spQry*。如ReqQryInstrument,OnRspQryInstrument?;貓笙ⅲ篛nRtn*,如OnRtnOrder,OnRtnTrade。錯誤回報:OnErrRtn*,如OnErrRtnOrderInsert,OnErrRtnOrderAction。 通用規(guī)則 查詢/請求請求查詢合約virtual int ReqQryInstrument(CThostFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0 ;請求查詢合約響應(yīng)virtual void OnRspQryInstrument(CThostFtdcIn
6、strumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; 通用規(guī)則 查詢/請求查詢參數(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)起來。 指令返回值
7、如果調(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
8、, 會話編號SessionID 和最大報單引用MaxOrderRef。用戶在報單時設(shè)定報單引用OrderRef。 OrderRef可以從MaxOrderRef開始遞增。如果用戶沒有設(shè)定OrderRef,在報單響應(yīng)中,Thost會為用戶設(shè)置一個的OrderRef。使得每個報單的這組序列號保持唯一。因為這組交易序列號是由用戶設(shè)定的。所以在沒有得到報單響應(yīng)前,就可以使用這組交易序列號進(jìn)行撤單操作。 BrokerID + BrokerOrderSeqThost收到用戶報單后,為每個經(jīng)紀(jì)公司的報單生成1組交易序列號。 exchangeID + traderID + OrderLocalID交易席位在向交
9、易所報單時,產(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+Ses
10、sionID+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)方法了解今天是否做了
11、確認(rèn)結(jié)算結(jié)果的操作。 交易業(yè)務(wù) 報單指令報單指令是:ReqOrderInsert。報單指令中如下字段需要如下設(shè)置:/成交量類型:任何數(shù)量fldOrder.VolumeCondition = THOST_FTDC_VC_AV;/ 最小成交量:1fldOrder.MinVolume = 1 ;/ 強(qiáng)平原因:非強(qiáng)平fldOrder.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;/ 自動掛起標(biāo)志:是fldOrder.IsAutoSuspend = 1 ;/用戶強(qiáng)評標(biāo)志:否fldOrder.UserForceClose = 0 ; 交易業(yè)務(wù) 報單指令如果
12、發(fā)送立即限價單:/ 報單價格條件類型:限價OrderPriceType = THOST_FTDC_OPT_LimitPrice;/ 價格:用戶設(shè)定LimitPrice = ;/ 有效期類型類型:當(dāng)日有效TimeCondition = THOST_FTDC_TC_GFD; 如果發(fā)送立即市價單/ 報單價格條件類型:任意價fldOrder.OrderPriceType = THOST_FTDC_OPT_AnyPrice; /價格:0fldOrder.LimitPrice = 0 ;/有效期類型類型:立即完成,否則撤銷fldOrder.TimeCondition = THOST_FTDC_TC_IOC
13、; 如果發(fā)送觸發(fā)單/觸發(fā)條件:用戶設(shè)定ContingentCondition = ; /止損價:用戶設(shè)定StopPrice = ;/ 報單價格條件類型:限價OrderPriceType = THOST_FTDC_OPT_LimitPrice;/ 價格:用戶設(shè)定LimitPrice = ;/ 有效期類型類型:當(dāng)日有效TimeCondition = THOST_FTDC_TC_GFD; 交易業(yè)務(wù) 報單指令關(guān)于平倉上期所區(qū)分昨倉和今倉。平昨倉時,開平標(biāo)志類型設(shè)置為平倉THOST_FTDC_OF_Close平今倉時,開平標(biāo)志類型設(shè)置為平今倉THOST_FTDC_OF_CloseToday 其他交易所不
14、區(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ù):/ 報單操作引
15、用,/ 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消息,其中包含了錯誤編碼和錯誤消息
16、。如果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,Excha
17、ngeID + TraderID + LocalOrderIDExchangeID + 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 /未成交不在隊
18、列中#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 + LocalOrderIDExchangeID + Order
19、SysID, 交易業(yè)務(wù) 交易時序 交易業(yè)務(wù) 其他業(yè)務(wù)查詢基礎(chǔ)數(shù)據(jù):交易所,合約,投資者,手續(xù)費率,保證金率,交易編碼查詢交易數(shù)據(jù):資金,持倉,(組合)持倉明細(xì)其他交易功能:發(fā)送預(yù)埋單、條件單查詢/回報:委托,成交,交易所狀態(tài)銀期轉(zhuǎn)賬 行情業(yè)務(wù) 訂閱/退訂訂閱SubscribeMarketDataOnRspSubMarketDataOnRtnDepthMarketData 退訂UnSubMarketDataOnRspUnSubMarketData 參考資料 Qq群:5 9 2 1 6 3 1 5,綜合交易平臺API技術(shù)綜合交易平臺API開發(fā)常見問題列表.pdf綜合交易平臺交易API特別說明.pdf持倉各資金項計算規(guī)則.xls綜合交易平臺條件單操作手冊.pdf CTP新版銀期轉(zhuǎn)帳TradeApi使用說明.pdf交易/行情開發(fā)實例.rar(windows3 2 /linux 6 4)綜合交易平臺資料: http:/2 0 2 .1 0 9 .1 1 0 .1 2 1 /api.htm模擬環(huán)境:請參考樣例程序中的配置