ctp綜合交易平臺教程.doc_第1頁
ctp綜合交易平臺教程.doc_第2頁
ctp綜合交易平臺教程.doc_第3頁
ctp綜合交易平臺教程.doc_第4頁
ctp綜合交易平臺教程.doc_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、CTP綜合交易平臺教程基本介紹一、系統(tǒng)簡介交易托管系統(tǒng) API 是一個基于 C+ 的類庫 , 通過使用和擴展類庫提供的接口來實現(xiàn)相關交易功能,包括報單與報價的錄入、報單與報價的撤銷、報單與報價的掛起、報單與報價的激活、報單與報價的修改、報單與報價的查詢、成交單查詢、投資者查詢、投資者持倉查詢、合約查詢、交易日獲取等。支持 MS VC 6.0 ,MS VC.NET 2003編譯器。需要打開多線程編譯選項/MT 。二、體系結(jié)構(gòu)交易員 API 使用建立在 TCP 協(xié)議之上 FTD 協(xié)議與交易托管系統(tǒng)進行通訊,交易托管系統(tǒng)負責投資者的交易業(yè)務處理。2.1. 通訊模式FTD 協(xié)議中的所有通訊都基于某個通

2、訊模式。通訊模式實際上就是通訊雙方協(xié)同工作的方式。FTD 涉及的通訊模式共有三種:l 對話通訊模式l 私有通訊模式l 廣播通訊模式對話通訊模式是指由會員端主動發(fā)起的通訊請求。該請求被交易所端接收和處理,并給予響應。例如報單、查詢等。這種通訊模式與普通的客戶/ 服務器模式相同。私有通訊模式是指交易所端主動,向某個特定的會員發(fā)出的信息。例如成交回報等。廣播通訊模式是指交易所端主動,向市場中的所有會員都發(fā)出相同的信息。例如公告、市場公共信息等。通訊模式和網(wǎng)絡的連接不一定存在簡單的一對一的關系。也就是說,一個網(wǎng)絡連接中可能傳送多種不同通訊模式的報文,一種通訊模式的報文也可以在多個不同的連接中傳送。無論

3、哪種通訊模式,其通訊過程都如圖1 所示1本接口暫時沒有使用廣播通信方式。2.2. 數(shù)據(jù)流交易托管系統(tǒng)支持對話通訊模式、私有通訊模式、廣播通訊模式:對話通訊模式下支持對話數(shù)據(jù)流和查詢數(shù)據(jù)流:對話數(shù)據(jù)流是一個雙向數(shù)據(jù)流,交易托管系統(tǒng)發(fā)送交易請求,交易系統(tǒng)反饋應答。交易系統(tǒng)不維護對話流的狀態(tài)。系統(tǒng)故障時,對話數(shù)據(jù)流會重置,通訊途中的數(shù)據(jù)可能會丟失。查詢數(shù)據(jù)流是一個雙向數(shù)據(jù)流,交易托管系統(tǒng)發(fā)送查詢請求,交易系統(tǒng)反饋應答。交易系統(tǒng)不維護查詢流的狀態(tài)。系統(tǒng)故障時,查詢數(shù)據(jù)流會重置,通訊途中的數(shù)據(jù)可能會丟失。私有通訊2模式下支持私有數(shù)據(jù)流:私有流是一個單向數(shù)據(jù)流,由交易系統(tǒng)發(fā)向交易托管系統(tǒng),用于傳送交易員私

4、有的通知和回報信息。私有流是一個可靠的數(shù)據(jù)流,交易系統(tǒng)維護每個交易托管系統(tǒng)的私有流,在一個交易日內(nèi),交易托管系統(tǒng)斷線后恢復連接時,可以請求交易系統(tǒng)發(fā)送指定序號之后的私有流數(shù)據(jù)。私有數(shù)據(jù)流向交易托管系統(tǒng)提供報單狀態(tài)報告、成交回報更等信息。廣播通訊模式下支持公共數(shù)據(jù)流:公共數(shù)據(jù)流是一個單向數(shù)據(jù)流,由交易系統(tǒng)發(fā)向交易托管系統(tǒng),用于發(fā)送市場公共信息;公共數(shù)據(jù)流也是一個可靠的數(shù)據(jù)流,交易系統(tǒng)維護整個系統(tǒng)的公共數(shù)據(jù)流,在一個交易日內(nèi),交易托管系統(tǒng)斷線恢復連接時,可以請求交易系統(tǒng)發(fā)送指定序號之后的公共數(shù)據(jù)流數(shù)據(jù)。接口模式交易 員 API 提供 了二 個接口,分別為 CThostFtdcTraderApi和

5、CThostFtdcTraderSpi 。這兩個接口對FTD 協(xié)議進行了封裝,方便客戶端應用程序的開發(fā)??蛻舳藨贸绦蚩梢酝ㄟ^CThostFtdcTraderApi發(fā)出操作請求,通繼承CThostFtdcTraderSpi并重載回調(diào)函數(shù)來處理后臺服務的響應。1. 對話流和查詢流編程接口通過對話流進行通訊的編程接口通常如下:請求: int CThostFtdcTraderApi:ReqXXX(CThostFtdcXXXField *pReqXXX,int nRequestID)響應: void CThostFtdcTraderSpi:OnRspXXX(CThostFtdcXXXField*pRs

6、pXXX,CThostFtdcRspInfoField *pRspInfo,int nRequestID,bool bIsLast)其中請求接口第一個參數(shù)為請求的內(nèi)容,不能為空。第二個參數(shù)為請求號。請求號由客戶端應用程序負責維護,正常情況下每個請求的請求號不要重復。在接收交易托管系統(tǒng)的響應時,可以得到當時發(fā)出請求時填寫的請求號,從而可以將響應與請求對應起來。當收到后臺服務應答時, CThostFtdcTraderSpi 的回調(diào)函數(shù)會被調(diào)用。如果響應數(shù)據(jù)不止一個,則回調(diào)函數(shù)會被多次調(diào)用?;卣{(diào)函數(shù)的第一個參數(shù)為響應的具體數(shù)據(jù),如果出錯或沒有結(jié)果有可能為 NULL 。第二個參數(shù)為處理結(jié)果,表明本次請

7、求的處理結(jié)果是成功還是失敗。在發(fā)生多次回調(diào)時,除了第一次回調(diào),其它的回調(diào)該參數(shù)都可能為 NULL 。第三個參數(shù)為請求號,即原來發(fā)出請求時填寫的請求號。第四個參數(shù)為響應結(jié)束標志,表明是否是本次響應的最后一次回調(diào)。2. 私有流編程接口私有流中的數(shù)據(jù)中會員的私有信息,包括報單回報、成交回報等。通過私有流接收回報的編程接口通常如下:3void CThostFtdcTraderSpi:OnRtnXXX(CThostFtdcXXXField *pXXX)或 void CThostFtdcTraderSpi:OnErrRtnXXX(CThostFtdcXXXField*pXXX,CThostFtdcRspI

8、nfoField *pRspInfo)當收到交易托管系統(tǒng)通過私有流發(fā)布的回報數(shù)據(jù)時,CThostFtdcTraderSpi的回調(diào)函數(shù)會被調(diào)用?;卣{(diào)函數(shù)的參數(shù)為回報的具體內(nèi)容。運行模式工作線程交易員客戶端應用程序至少由兩個線程組成,一個是應用程序主線程,一個是交易員API 工作線程。應用程序與交易系統(tǒng)的通訊是由API 工作線程驅(qū)動的。CThostFtdcTraderApi提供的接口是線程安全的,可以有多個應用程序線程同時發(fā)出請求。CThostFtdcTraderSpi提供的接口回調(diào)是由API 工作線程驅(qū)動,通過實現(xiàn)SPI 中的接口方法,可以從交易托管系統(tǒng)收取所需數(shù)據(jù)。如果重載的某個回調(diào)函數(shù)阻塞,

9、則等于阻塞了API 工作線程, API 與交易系統(tǒng)的通訊會停止。因此,在CThostFtdcTraderSpi派生類的回調(diào)函數(shù)中,通常應迅速返回,可以利用將數(shù)據(jù)放入緩沖區(qū)或通過Windows的消息機制來實現(xiàn)。本地文件交易員API在運行過程中,會將一些數(shù)據(jù)寫入本地文件中。調(diào)用 CreateFtdcTraderApi 函數(shù),可以傳遞一個參數(shù),指明存貯本地文件的路徑。該路徑必須在運行前已創(chuàng)建好。本地文件的擴展名都是.con 。開發(fā)接口通用規(guī)則客戶端和交易托管系統(tǒng)的通訊過程分為2 個階段:初始化階段和功能調(diào)用階段。在初始化階段,程序必須完成如下步驟(具體代碼請參考開發(fā)實例):1, 產(chǎn)生一個 CThos

10、tFtdcTraderApi實例2, 產(chǎn)生一個事件處理的實例3, 注冊一個事件處理的實例44, 訂閱私有流5, 訂閱公共流6, 設置交易托管服務的地址在功能調(diào)用階段,程序可以任意調(diào)用交易接口中的請求方法,如 ReqOrderInsert等。同時按照需要響應回調(diào)接口中的。其他注意事項:1 ,API 請求的輸入?yún)?shù)不能為NULL。 2,API 請求的返回參數(shù),0 表示正確,其他表示錯誤,詳細錯誤編碼請查表。CThostFtdcTraderSpi接口CThostFtdcTraderSpi實現(xiàn)了事件通知接口。用戶必需派生CThostFtdcTraderSpi接口,編寫事件處理方法來處理感興趣的事件。由

11、于回調(diào)函數(shù)眾多,在此不一一舉例,只說明幾個經(jīng)典函數(shù)的功能與用法,其它函數(shù)可舉一反三。1.OnFrontConnected方法當客戶端與交易托管系統(tǒng)建立起通信連接時(還未登錄前),該方法被調(diào)用。函數(shù)原形: void OnFrontConnected();本方法在完成初始化后調(diào)用,可以在其中完成用戶登錄任務。2.OnFrontDisconnected方法當客戶端與交易托管系統(tǒng)通信連接斷開時,該方法被調(diào)用。當發(fā)生這個情況后,API 會自動重新連接,客戶端可不做處理。自動重連地址,可能是原來注冊的地址,也可能是系統(tǒng)支持的其它可用的通信地址,它由程序自動選擇。函數(shù)原形: void OnFrontDisc

12、onnected (int nReason);參數(shù): nReason :連接斷開原因0x1001網(wǎng)絡讀失敗0x1002網(wǎng)絡寫失敗0x2001接收心跳超時0x2002發(fā)送心跳失敗0x2003收到錯誤報文53.OnRspUserLogin方法當客戶端發(fā)出登錄請求之后,交易托管系統(tǒng)返回響應時,該方法會被調(diào)用,通知客戶端登錄是否成功。函數(shù)原形: void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin,CThostFtdcRspInfoField *pRspInfo,int nRequestID,bool bIsLast) ;參數(shù):

13、pRspUserLogin :返回用戶登錄信息的地址。用戶登錄信息結(jié)構(gòu):struct CThostFtdcRspUserLoginField/ 交易日TThostFtdcDateTypeTradingDay;/ 登錄成功時間TThostFtdcTimeTypeLoginTime;/ 經(jīng)紀公司代碼TThostFtdcBrokerIDTypeBrokerID;/ 用戶代碼 TThostFtdcUserIDType UserID;/ 交易系統(tǒng)名稱 TThostFtdcSystemNameTypeSystemName;pRspInfo :返回用戶響應信息的地址。特別注意在有連續(xù)的成功的響應數(shù)據(jù)時,中間

14、有可能返回 NULL ,但第一次不會,以下同。錯誤代碼為0 時,表示操作成功,以下同。響應信息結(jié)構(gòu):struct CThostFtdcRspInfoField/ 錯誤代碼TThostFtdcErrorIDType ErrorID;/ 錯誤信息TThostFtdcErrorMsgType ErrorMsg;nRequestID :返回用戶登錄請求的ID ,該 ID 由用戶在登錄時指定。bIsLast :指示該次返回是否為針對nRequestID的最后一次返回。64.OnRspOrderInsert方法報單錄入應答。當客戶端發(fā)出過報單錄入指令后,交易托管系統(tǒng)返回響應時,該方法會被調(diào)用。函數(shù)原形:

15、void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder,CThostFtdcRspInfoField *pRspInfo,int nRequestID,bool bIsLast) ;參數(shù): pInputOrder:指向報單錄入結(jié)構(gòu)的地址,包含了提交報單錄入時的輸入數(shù)據(jù),和后臺返回的報單編號。輸入報單結(jié)構(gòu):struct CThostFtdcInputOrderField/ 經(jīng)紀公司代碼TThostFtdcBrokerIDTypeBrokerID;/ 投資者代碼TThostFtdcInvestorIDTypeInvestorID;/

16、 合約代碼TThostFtdcInstrumentIDTypeInstrumentID;/ 報單引用TThostFtdcOrderRefTypeOrderRef;/ 用戶代碼TThostFtdcUserIDType UserID;/ 報單價格條件TThostFtdcOrderPriceTypeTypeOrderPriceType;/ 買賣方向TThostFtdcDirectionTypeDirection;/ 組合開平標志TThostFtdcCombOffsetFlagType CombOffsetFlag;/ 組合投機套保標志7TThostFtdcCombHedgeFlagType Comb

17、HedgeFlag;/ 價格TThostFtdcPriceTypeLimitPrice;/ 數(shù)量TThostFtdcVolumeType VolumeTotalOriginal;/ 有效期類型TThostFtdcTimeConditionTypeTimeCondition;/GTD日期TThostFtdcDateTypeGTDDate;/ 成交量類型TThostFtdcVolumeConditionType VolumeCondition;/ 最小成交量TThostFtdcVolumeType MinVolume;/ 觸發(fā)條件TThostFtdcContingentConditionTypeC

18、ontingentCondition;/ 止損價TThostFtdcPriceTypeStopPrice;/ 強平原因TThostFtdcForceCloseReasonTypeForceCloseReason;/ 自動掛起標志TThostFtdcBoolTypeIsAutoSuspend;/ 業(yè)務單元 TThostFtdcBusinessUnitTypeBusinessUnit;/ 請求編號 TThostFtdcRequestIDTypeRequestID;pRspInfo :指向響應信息結(jié)構(gòu)的地址。響應信息結(jié)構(gòu):struct CThostFtdcRspInfoField/ 錯誤代碼TTho

19、stFtdcErrorIDType ErrorID;/ 錯誤信息 TThostFtdcErrorMsgTypeErrorMsg;8nRequestID :返回報單錄入操作請求的ID ,該 ID 由用戶在報單錄入時指定。bIsLast :指示該次返回是否為針對nRequestID的最后一次返回。5.OnRspOrderAction方法/ 報單操作請求響應virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction,CThostFtdcRspInfoField *pRspInfo, int nReq

20、uestID, bool bIsLast) ;6./ 請求查詢交易通知響應virtual void OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice,CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;7./ 請求查詢交易通知響應virtual void OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice,CThostFtdcRspInfoField *

21、pRspInfo, int nRequestID, bool bIsLast) ;CThostFtdcTraderApi接口CThostFtdcTraderApi 接口提供給用戶的功能包括,報單與報價的錄入、報單與報價的撤銷、報單與報價的掛起、報單與報價的激活、報單與報價的修改、報單與報價的查詢、成交單查詢、會員客戶查詢、會員持倉查詢、客戶持倉查詢、合約查詢、合約交易狀態(tài)查詢、交易所公告查詢等功能。以下簡單舉些例子說明函數(shù)的用法,其它函數(shù)可舉一反三。1.CreateFtdcTraderApi方法產(chǎn)生一個 CThostFtdcTradeApi的一個實例,不能通過new 來產(chǎn)生。函數(shù)原形:stat

22、ic CThostFtdcTradeApi *CreateFtdcTradeApi(const char *pszFlowPath = );參數(shù):pszFlowPath :常量字符指針,用于指定一個文件目錄來存貯交易托管系統(tǒng)發(fā)布消息的狀態(tài)。默認值代表當前目錄。9返回值:返回一個指向CThostFtdcTradeApi實例的指針。2.ReqUserLogin方法用戶發(fā)出登陸請求。函數(shù)原形:int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField,int nRequestID);參數(shù):pReqUserLoginField :指

23、向用戶登錄請求結(jié)構(gòu)的地址。用戶登錄請求結(jié)構(gòu):struct CThostFtdcReqUserLoginField/ 交易日TThostFtdcDateTypeTradingDay;/ 經(jīng)紀公司代碼TThostFtdcBrokerIDTypeBrokerID;/ 用戶代碼TThostFtdcUserIDType UserID;/ 密碼TThostFtdcPasswordTypePassword;/ 用戶端產(chǎn)品信息TThostFtdcProductInfoType UserProductInfo;/ 接口端產(chǎn)品信息TThostFtdcProductInfoType InterfaceProduct

24、Info;/ 協(xié)議信息TThostFtdcProtocolInfoType ProtocolInfo;nRequestID :用戶登錄請求的ID ,該 ID 由用戶指定,管理。用戶需要填寫UserProductInfo字段,即客戶端的產(chǎn)品信息,如軟件開發(fā)商、版本號等,例如:SFITTraderV100 。InterfaceProductInfo和 ProtocolInfo只須占位,不必有效賦值。100,代表成功。-1 ,表示網(wǎng)絡連接失??;-2 ,表示未處理請求超過許可數(shù);-3 ,表示每秒發(fā)送請求數(shù)超過許可數(shù)。3.ReqOrderAction方法客戶端發(fā)出報單操作請求,包括報單的撤銷、報單的掛起

25、、報單的激活、報單的修改。函數(shù)原形:int ReqOrderAction(CThostFtdcOrderActionField *pOrderAction,int nRequestID);參數(shù):pOrderAction :指向報單操作結(jié)構(gòu)的地址。報單操作結(jié)構(gòu):/ 報單操作struct CThostFtdcOrderActionField/ 經(jīng)紀公司代碼TThostFtdcBrokerIDType BrokerID;/ 投資者代碼TThostFtdcInvestorIDType InvestorID;/ 報單操作引用TThostFtdcOrderActionRefType OrderAction

26、Ref;/ 報單引用TThostFtdcOrderRefType OrderRef;/ 請求編號TThostFtdcRequestIDType RequestID;/ 前置編號TThostFtdcFrontIDType FrontID;/ 會話編號TThostFtdcSessionIDType SessionID;/ 交易所代碼TThostFtdcExchangeIDType ExchangeID;/ 報單編號11TThostFtdcOrderSysIDType OrderSysID;/ 操作標志TThostFtdcActionFlagType ActionFlag;/ 價格TThostFtd

27、cPriceType LimitPrice;/ 數(shù)量變化TThostFtdcVolumeType VolumeChange;/ 操作日期TThostFtdcDateType ActionDate;/ 操作時間TThostFtdcTimeType ActionTime;/ 交易所交易員代碼TThostFtdcTraderIDType TraderID;/ 安裝編號TThostFtdcInstallIDType InstallID;/ 本地報單編號TThostFtdcOrderLocalIDType OrderLocalID;/ 操作本地編號TThostFtdcOrderLocalIDType A

28、ctionLocalID;/ 會員代碼TThostFtdcParticipantIDType ParticipantID;/ 客戶代碼TThostFtdcClientIDType ClientID;/ 業(yè)務單元TThostFtdcBusinessUnitType BusinessUnit;/ 報單操作狀態(tài)TThostFtdcOrderActionStatusType OrderActionStatus;/ 用戶代碼TThostFtdcUserIDType UserID;/ 狀態(tài)信息TThostFtdcErrorMsgType StatusMsg;/ 合約代碼12TThostFtdcInstru

29、mentIDType InstrumentID;nRequestID :用戶報單操作請求的ID ,該 ID 由用戶指定,管理。返回值:0,代表成功。-1 ,表示網(wǎng)絡連接失?。?2 ,表示未處理請求超過許可數(shù);-3 ,表示每秒發(fā)送請求數(shù)超過許可數(shù)。4.ReqQryInstrument方法請求查詢合約。函數(shù)原形:int ReqQryInstrument(CThostFtdcQryInstrumentField *pQryInstrument,int nRequestID);參數(shù):pQryInstrument:指向查詢查詢合約結(jié)構(gòu)的地址。查詢合約結(jié)構(gòu):struct CThostFtdcQryInstrumentField/ 合約代碼TThostFtdcInstrumentIDType InstrumentID;/ 交易所代碼TThostFtdcExchangeIDType ExchangeID;/ 合約在交易所的代碼TThostFtdcExchangeInstIDType ExchangeInstID;/ 產(chǎn)品代碼TThostFtdcInstrumentIDType ProductID;13nRequestID :合約查詢請求的ID ,該 ID 由用戶指定,管理。返回值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論