綜合交易平臺API技術開發指南

綜合交易平臺API技術開發指南 
(草稿) 
第一章 CTP 產品特性...................................................................................................................... 2 
第二章 CTP-API 技術基礎 ............................................................................................................... 4 
第三章 CTP-API 證券交易 ............................................................................................................... 9 
模擬交易系統 ........................................................................................................................... 9 
證券交易實務 ........................................................................................................................... 9 
行情接口函數 ......................................................................................................................... 10 
交易接口函數 ......................................................................................................................... 10 
第四章 CTP-API 期貨交易 ............................................................................................................. 10 
模擬交易系統 ......................................................................................................................... 10 
期貨交易實務 ......................................................................................................................... 11 
行情接口函數 ......................................................................................................................... 11 
交易接口函數 ......................................................................................................................... 11 


 

第一章CTP 產品特性 
1. 如何獲取綜合交易平臺(Comprehensive Transaction Platform 以下簡稱 CTP)證券(期
貨)交易及行情 API 發佈包、文檔以及開發實例? 
【答:】所有 CTP 相關資料都在 CTP_API 開發技術羣(59216315)及 CTP_API 開發技術
2 羣(102497247)羣共享中發佈,請及時獲取最新版本。CTP_API 開發技術羣均遵守實
名制規則,在申請加入時請告知實名並在加入後及時修改羣名片,對於不符合羣公告要

求的羣成員將不定期予以清除。


 
2. CTP 提供哪些證券(期貨)投資者交易客戶端軟件? 
【答:】CTP 向全市場免費開放投資者交易及行情 API,並不提供任何投資者使用的交易
客戶端產品。
目前市場上使用的客戶端產品都由第三方廠商提供(基於免費開放的 API
接入 CTP),此類第三方廠商與上期技術無任何關聯關係。較爲成熟的客戶端產品包括
手工交易客戶端(如快期:http://www.kuaiqi.net/)及程序化交易客戶端(如盈佳
http://winnerfutures.com.cn/) 
 
3. 請問國內證券(期貨)公司有哪些使用 CTP 系統? 
【答:】截至到 2012 年 10 月 19 日,期貨公司主用系統用戶 11 家(部分公司同時部署
一套或多套 CTP 次用系統),期貨公司次用系統用戶 23 家,證券公司次用系統用戶 1
家。 
CTP 期貨公司主用系統用戶:中國國際、華泰長城、海通期貨、申銀萬國、上海中
期、廣發期貨、恆泰期貨、美爾雅期貨、中證期貨、華元期貨、瑞龍期貨、天鴻期貨。 
CTP 期貨公司次用系統用戶:華西期貨、華鑫期貨、興業期貨、渤海期貨、金源期
貨、宏源期貨、新湖期貨、國泰君安、東證期貨、南華期貨、浙商期貨、銀河期貨、經
易期貨、西部期貨、光大期貨、中信建投、瑞達期貨、久恆期貨、國海良石、永安期貨、
國金期貨、方正期貨。 
CTP 證券公司次用系統用戶:華寶證券。 
 【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 3 頁 共 17 頁
 
4. CTP 中的 BrokerID 是什麼意思,在使用 CTP-API 時如何填寫? 
【答:】CTP 最初設計時考慮了一套 CTP 系統供多家經紀公司使用的情形,CTP 則使用
BrokerID 從業務層面完全隔離不同經紀公司的交易、風控及結算用戶的接入。BrokerID
的具體取值請諮詢開戶的經紀公司。 
 
5. CTP 中 UserIDInversterID 的區別是什麼? 
【答:】經紀公司交易員爲投資者下單時,UserID 爲操作員代碼,InversterID 爲投資者
代碼;投資者自己下單時,兩者同爲投資者代碼。 
 
6. CTP-API 中的 OrderRefOrderActionRef 是什麼意思,在客戶端開發時如何填寫? 
【答:】OrderRef 是 CTP 後臺提供給客戶端標識一筆報單的字段,客戶端可以通過關鍵
字組(FrontID 、SessionID 、OrderRef)唯一確定一筆報單,客戶端在報單發出時未填
寫 OrderRef 字段,CTP 後臺會自動爲該報單的 OrderRef 字段賦值並返回給客戶端。
OrderActionRef 與 OrderRef 功能類似,它是提供給客戶端來標識一筆撤單。OrderRef 的
數據類型爲字符數組,必須是阿拉伯數字字符。OrderRef(OrderActionRef)的取值必須
保證在同一會話內後發送的報(撤)單的 OrderRef(OrderActionRef)值大於之前的最
大值,在開發多線程的客戶端時需要特別注意。 
 
7. CTP 是否提供 Level2 行情? 
【答:】CTP 期貨交易系統僅提供各交易所發佈的普通一階行情。部分證券公司部署的
CTP 證券交易系統提供 level2 行情,請聯繫證券公司獲取 CTP-level2-API 發佈包及 level2
行情服務器配置參數。 
 
8. CTP 是否提供歷史行情,實際交易時需要取歷史數據做相應計算,比如 atr(30)等,如
何處理?是否只能客戶端通過別的接口自己補數據? 
【答:】歷史數據需要通過行情商解決。對於未及時登錄及斷線造成的行情數據丟失,
CTP 也不提供行情回補機制,因爲行情的實時性對 CTP 的系統延時要求非常高,行情數
據的回補邏輯增加的系統延時以及網絡資源的消耗限制了其在高速系統內部實現的空
間。程序化交易客戶端可以通過多路連接的方式降低斷線風險,或是託管策略服務器的【綜合交易平臺 API 技術開發指南】 
方式以提高到 CTP 連接的保障級別。 
 
第二章CTP-API 技術基礎 
9. CTP-API 庫包含哪些文件,分別包含什麼內容? 

【答:】

1. 錯誤定義文件(error.dtd、error.xml)

2. 行情接口類定義文件(ThostFtdcMdApi.h)、

3. 交易接口類定義文件(ThostFtdcTraderApi.h)、

4. 客戶端接口使用的業務數據結構定義文件 ( ThostFtdcUserApiStruct.h )、 

5. 客 戶 端 接 口 使 用 的 業 務 數 據 類 型 定 義 文 件( ThostFtdcUserApiDataType.h )、 

6. 行 情 接 口 庫 文 件 ( thostmduserapi.lib ,thostmduserapi.dll)、

7. 交易接口庫文件(thosttraderapi.lib,thosttraderapi.dll)。

交易和行情接口類定義文件都包含 API 和 SPI 類定義,

客戶端使用 API 向 CTP 後臺發送請求,

CTP後臺則使用 SPI 向客戶端回傳響應及回報。 

 CTP 證券接口庫文件基本類似,文件名中使用“SSE”標識爲證券接口。 


 
10. CTP-API 與 CTP 後臺才何種協議通訊,如何通訊? 
【答:】CTP-API 使用建立在 TCP 協議之上 FTD 協議與 CTP 後臺進行通訊,FTD 協議中
的所有通訊都基於某個通訊模式。通訊模式實際上就是通訊雙方協同工作的方式。

CTP-API 涉及的通訊模式共有三種:

○1 對話通訊模式,是指由客戶端主動發起的通訊請求,該請求被 CTP 後臺接收和處理,並給予響應,

如報單、撤單及查詢等,這種通訊模式與普通的客戶/服務器模式相同。

○2 私有通訊模式,是指 CTP 後臺主動向某個特定的客戶端發出的信息,如報單回報、成交回報等。

○3 廣播通訊模式,是指 CTP 後臺主動向有客戶端都發出相同的信息,如合約交易狀態通知等。

 

通訊模式和網絡的連接不一定存在簡單的一對一的關係。也就是說,一個網絡連接中可能傳送多種不同通訊模式的報文,一種通訊模式的報文也可以在多個 
不同的連接中傳送。 
 CTP-API 與 CTP 後臺通訊,不同的通訊模式對應不同的通訊數據流,對話通訊模式
對應對話數據流(DialogRsp)和查詢數據流(QueryRsp),CTP 後臺不維護對話數據流
(查詢數據流)的狀態,通訊故障時,對話數據流(查詢數據流)會重置,通訊途中的數據可能會丟失。 
私有通訊模式對應私有數據流(Private),私有數據流是一個可靠的數據流,CTP
後臺維護每個登錄用戶的私有流,在一個交易日內,CTP-API 與 CTP 後臺斷線後恢復連
接時,CTP 後臺會向使用 restart 或 resume 模式訂閱私有數據流的用戶重傳全部(restart)
或斷線期間(resume)的私有數據流。 
廣播通訊模式對應公共數據流(Public),公共數據流與私有數據流類似,也是一個可靠的數據流。 
 
11. CTP-API 的實例會在客戶端生成哪些流文件?如何指定流文件存放路徑? 

【答:】行情接口實例生成(DialogRsp.con,QueryRsp.con,TradingDay.con),

交易接口實例(DialogRsp.con,Private.con,Public.con,QueryRsp.con,TradingDay.con)。

以上流文件的存放路徑都是通過接口實例創建函數(CreateFtdcTraderApi\CreateFtdcMdApi)參

數指定,如 CreateFtdcTraderApi(".\\flow\\")將會在當前目錄的 flow 文件夾存放流文件。
客戶端無法決定是否生成以上流文件,因此,在開發多 CTP-API 實例的客戶端時需要注
意操作系統的文件句柄限制。另外,流文件中存儲了客戶端與後臺的數據交互進度標識,
因此,多賬號共用接口實例(或多實例共用流文件)將會造成數據紊亂或缺失。 
 
12. 基於 CTP-API 的客戶端交易軟件在每個交易日開始之前需要執行哪些必要的步驟? 

【答:】

○1 創建 API 實例(CreateFtdcTraderApi)併爲其註冊對應的回調接口類的實例( RegisterSpi ) → 

○2 訂 閱 私 有 流 ( SubscribePrivateTopic ) → 

○3 訂閱公有流(SubscribePublicTopic)→

○4 註冊名字服務器網絡地址(RegisterNameServer)或註冊前置機網絡地址(RegisterFront)→

○5 初始化 API 與 CTP 前置服務器連接(Init),連接成功後回調 OnFrontConnected→

○5 發起客戶端認證請求(ReqAuthenticate),客戶端認證結果由 OnRspAuthenticate 返回;在 CTP 後臺開啓強制客戶端認證(或客戶端在本次會

話主動發起認證)後,只有通過客戶端認證才能接入 CTP 後臺→

○6 發起用戶登錄請求(ReqUserLogin),登錄請求響應(OnRspUserLogin)返回登錄結果→

○6 登錄成功後,客戶 端 在當前交易日 必 須 成功執行 一 次 “投資者結算結果確認(ReqSettlementInfoConfirm)”後才能開始交易。 


 
13. CTP 的客戶端怎樣實現對代理服務器的支持? 
【答:】CTP 的 API 提供了對代理服務器的支持,包括 socks4、socks4a 及 socks5,客戶

端開發時只需通過傳遞給 API 不同的連接字符串就可實現,

例如: 

RegisterFront("socks5:// IP 地址或域名:端口號/user:[email protected]:10001"); 


 
14. 什麼是動態密碼(OneTimePassword),在 ReqUserLogin 請求中如何填寫該字段的值? 
【答:】動態令牌(時間令牌 TOTP)是 CTP 後臺提供給證券(期貨)公司投資者網上交
易使用的一種更強的身份驗證工具,該功能目前由投資者和證券(期貨)公司選擇使用。
爲 CTP 供應動態令牌的廠商有堅石誠信和飛天誠信。證券(期貨)公司購買動態令牌後
將隨附的種子文件導入 CTP 後臺,並將各令牌及種子分配給到指定的投資者,使用動態
令牌的投資者在登錄 CTP 時需要將動態令牌當時顯示的字符填寫到 OneTimePassword
字段,通過用戶名/密碼以及動態密碼校驗後方可登錄成功。 
 
15. 什麼是客戶端認證,怎樣獲取認證碼(AuthCode)? 
【答:】客戶端認證是爲了保證證券(期貨)公司的投資者只能使用該公司認可的客戶
端產品接入 CTP 後臺進行交易。投資者在使用第三方提供或是自行開發的客戶端產品接
入指定的證券(期貨)公司 CTP 交易系統之前,必須向該公司提交用戶端產品信息
( UserProductInfo )並 獲得 認證碼 ( AuthCode );之 後在發起 客戶端 認證請 求時
(ReqAuthenticate)填寫正確的用戶端產品信息及對應的認證碼即可完成客戶端認證。 
 
16. CTP 的名字服務器是做什麼用的,如何使用? 
【答:】上線 CTP 的證券(期貨)公司可以選擇部署名字服務器,客戶端可以通過註冊
名字服務器(RegisterNameServer)自動選擇 CTP 後臺分配的前置機地址接入 CTP 交易
系統,不再需要客戶端直接註冊 CTP 前置地址(RegisterFront)。 
 
17. CTP 是否提供加密手段以保護通過互聯網傳送的交易數據的安全? 
【答:】上線 CTP 的證券(期貨)公司可以選擇部署 ssl 前置供投資者客戶端以 SSL 加密
方式接入 CTP 交易系統。客戶端選擇接入 ssl 前置時使用如下方式註冊 ssl 前置地址: 
RegisterFront("ssl:// ssl 前置 IP 地址或域名:端口號"); 【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 7 頁 共 17 頁
 
 
18. 如何接入 CTP 提供的 UDP 行情? 
【答:】創建行情 API 實例函數 CreateFtdcMdApi(const char *pszFlowPath = "", const bool 
bIsUsingUdp=false) 中,參數 bIsUsingUdp:爲行情模式,該參數缺省或置爲 false 時使用
TCP 行情,否則爲 UDP 行情。無論使用 TCP 或是 UDP 行情,都必須註冊相對應的 TCP
或 UDP 行情服務器地址。一般來說,CTP 的普通行情前置都爲 TCP 行情服務器,使用
UDP 行情服務器需要向證券(期貨)公司申請,且僅限專線或內網接入的投資者使用。 
 在註冊行情前置服務器時,無論是 tcp 還是 udp,都必須使用 RegisterFront("tcp://
行情前置服務器 IP 地址或域名:端口號")的格式,因爲 udp 傳輸存在不可靠性,所以在
登錄、訂閱及接收第一次行情時仍然使用 tcp 方式;並且無需爲 udp 方式提供配置節點
參數,udp 仍然使用相同的地址和端口號。 
 
19. CTP 對每秒發送查詢數量的限制是多少? 
【答:】CTP 僅對查詢進行流量限制,對交易指令沒有限制。如果有在途的查詢,不允
許發新的查詢。1 秒鐘最多允許發送 1 個查詢。返回值“-2”表示“未處理請求超過許
可數”,“-3”表示“每秒發送請求數超過許可數”。 
 
20. 程序使用 TradeApi 和 MdApi,並且把這 2 個 dll 放在同一個目錄下。程序再次啓動後,
如果某個 api 採用 Resume 模式訂閱公有流/私有流,就會去參考相關的本地流文件。可
能會導致數據異常? 
【答:】相同目錄下的 2 個 dll 會把數據寫入相同本地流文件,導致 2 個 dll 不斷的覆蓋
對方寫下的流文件。程序再次啓動時,TradeApi 可能去參考 MdApi 寫下的流文件,所以
導致數據流不連續。解決方法:如果一定要把 2 個 dll 放在相同的目錄下,可以在創建
api 時指定流文件的路徑。使得不同的 dll 寫入不同流文件。 
static CThostFtdcUserApi *CreateFtdcUserApi(const char *pszFlowPath = "", const bool 
bIsUsingUdp=false); 
 
21. 請問 api 是否多線程安全的(linux 以及 windows 平臺)? 
【答:】api,spi 是不同的線程、api 可以同時被多個線程調用、也就是你說的線程安全性、
這些特性和平臺無關。 【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 8 頁 共 17 頁
 
 
22. 測試時發現 CThostFtdcMdSpi 有個比較嚴重的問題,就是使用 Release()退出清理對象時
會出現死機,並且頻率很高,怎樣解決? 
【答:】請參考以下代碼的釋放順序。 
template <class TUserApi> 
void CUserApiEnv<TUserApi>::UnInitialUserApi() 

 // 釋放 UserApi 
 if (m_pUserApi) 
 { 
 m_pUserApi->RegisterSpi(NULL); 
 m_pUserApi->Release(); 
 m_pUserApi = NULL; 
 } 
 // 釋放 UserSpi 實例 
 if (m_pUserSpiImpl) 
 { 
 delete m_pUserSpiImpl; 
 m_pUserSpiImpl = NULL; 
 } 

 
23. CTP 的 LIB,是幾字節對齊的,是一字節,還是八字節,還是其它的? 
【答:】是標準的 8 個字節對齊。 
 
24. 使用查詢函數時怎樣設置查詢條件? 
【答:】CTP 提供了查詢函數及查詢相應函數,客戶端可以使用這些函數向後臺查詢投
資者以及基礎數據信息,查詢條件各字段不設置時多數查詢函數會返回對應經紀公司所
有記錄。如查詢合約信息: 
 
CThostFtdcQryInstrumentField req; 
 memset(&req, 0, sizeof(req)); 
int iResult = pApi->ReqQryInstrument(&req, ++iRequestID); 
這樣,在對應的查詢響應 OnRspQryInstrument 中將會獲得所有有效的合約。 
 
第三章CTP-API 證券交易 
模擬交易系統 
25. CTP 提供證券模擬交易系統供投資者開發、測試試用: 
交易前置: ctp24-front1.financial-trading-platform.com:41205 
 ctp24-front2.financial-trading-platform.com:41205 
行情前置: ctp24-front3.financial-trading-platform.com:41213 
 ctp24-front4.financial-trading-platform.com:41213 
經紀公司代碼:2011 
 
26. 怎樣申請上期技術證券模擬交易系統測試賬號? 
【答:】可以使用以下賬號接入上期技術提供的證券模擬交易系統:1000021-1000030
(共 10 個公用帳號,請勿修改密碼),密碼均爲 1。 
證券交易業務 
27. CTP 證券交易系統支持哪些業務類型? 
【答:】CTP 證券交易系統支持普通股票買賣、ETF 買賣及申購贖回、國債回購賣出、融
資融券等業務類型。 
 
28. CTP 證券交易系統支持哪些交易指令? 
【答:】CTP 證券交易系統支持市價、限價報單及撤單等交易指令。報單(買、賣、申
購及贖回)使用ReqOrderInsert函數,市價單(報單價格條件:THOST_FTDC_OPT_AnyPrice,
有效期類型:THOST_FTDC_TC_IOC,價格:不需要),限價單(報單價格條件:
 
THOST_FTDC_OPT_LimitPrice,有效期類型:THOST_FTDC_TC_GFD,價格:指定價格)。 
 ReqOrderAction 函數完成撤單操作,使用數據序列(BrokerID、InvestorID、OrderRef、
FrontID、SessionID、InstrumentID、ActionFlag=THOST_FTDC_AF_Delete)或(BrokerID、
InvestorID、exchangeID、traderID、OrderLocalID、ActionFlag=THOST_FTDC_AF_Delete)
定位報單完成撤銷。 
 
行情接口函數 
交易接口函數 
第四章CTP-API 期貨交易 
模擬交易系統 
29. CTP 提供期貨模擬交易系統供投資者開發、測試試用: 
交易前置: asp-sim2-front1.financial-trading-platform.com:26205 
行情前置: asp-sim2-md1.financial-trading-platform.com:26213 
經紀公司代碼:2030 
 
30. 怎樣申請期貨模擬交易系統測試賬號? 
【答:】準備爲 CTP 開發交易客戶端的軟件廠商,期貨投資者可以聯繫國內任意一家期
貨公司向上期技術服務檯提出申請。 
 
31. 請問模擬交易系統交易時間? 
【答:】國內證券、期貨市場正常交易時間均可交易,每個交易日晚 17:30 到凌晨 5:
00 也可進行交易,節假日正常情況下都可進行交易。 
 
32. 請問期貨模擬環境上期所是非交易狀態,可其它交易所沒有,爲何其它交易所的品種也
不動,沒有交易了? 【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 11 頁 共 17 頁
 
【答:】模擬環境只有上期所的交易所繫統,其他交易所的合約也是在上期所繫統模擬。 
 
33. 我 9 點前就開機了,但不知爲何到 9 點 4 分左右期貨模擬環境纔開始接收到行情數據 
【答:】期貨模擬環境行情轉發在狀態從“連續交易”切換到“非交易狀態”時會停止行情
轉發 5 分鐘,主要是爲了保證在收盤後 5 分鐘內行情靜止以方便德邦期貨提取模擬大賽
的客戶權益數據。這種狀態切換髮生在集合競價結束時,由於“非交易狀態”僅一分鐘,
所以休息 5 分鐘就到了 9:04 分,而且模擬環境並不像生產環境每天校時(而是一個月),
所以就有可能看到的延時會更長。 
 
期貨交易業務 
行情接口函數 
交易接口函數 
34. 下單交易是否需要經過期貨公司的服務器?期貨公司服務器壞了是否會影響到 CTP 的
正常交易? 
【答:】CTP 是一套多期貨公司共用的交易、結算系統,全部系統部署在上期技術的機
房內。因此,期貨公司的服務器狀況對其沒有任何影響;而且,CTP 系統是由上期技術
統一運行維護,所以穩定性應該沒有問題! 
 
35. 我們搞接口與其他的軟件連接,只要符合 ctp 的接口。結算的問題我們不需要考慮了吧? 
【答:】CTP 交易、風控和結算子系統完全獨立,現在公開發布的是交易接口。開銷戶、
風控及結算等管理工作由期貨公司管理人員通過上期技術提供給期貨公司的 CTP 管理
平臺和風險控制客戶端完成。 
 
 
36. 請問投資者結算結果確認是什麼意思?有什麼用? 
【答:】投資者在登錄後首先需要確認自己的結算單(即賬單),結算單確認後纔可以進
行交易操作。客戶端可以使用 ReqSettlementInfoConfirm 請求確認結算單,請求時只需【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 12 頁 共 17 頁
 
要填寫經紀公司代碼和投資者代碼。查詢結算單使用 ReqQrySettlementInfo,不填日期,
表示取上一交易日結算單。使用 ReqQrySettlementInfoConfirm 可以查詢當天客戶結算單
確認情況,無記錄返回表示當天未確認結算單,爲避免客戶當天多次登陸多次重複確認
結算單,建議在確認前先查詢當天是否已經確認,如果客戶已經確認過則不需要再次重
復確認。 
37. 可以設置止損否,限價止損、市價止損及 gtc 止損之類的? 
【答:】止盈止損等條件單將在 V4.1 版本推出。gtc 不會支持,現在國內的期貨交易所
還不支持過夜掛單!CTP 目前也只是 7:30 起動系統,早的話 8:00 可以掛預埋單了。 
 
38. 可以在 CTP 上面設置保證金的算法--結算價/昨結算價/成交均價/開倉價 
四種算法分別都是什麼意思? 
【答:】保證金算法:歷史倉用昨結算價計算,今倉可以選擇(成交均價/開倉價/結算
價),這裏的結算價是指最新價,該項配置由期貨公司管理人員在後臺進行配置,客戶
端可以通過API查到該配置的內容(v4.1 版本將支持該項查詢,所以現在快期是在前
端自己做配置)。 
 
39. 逐筆報單的預凍結資金哪裏可以看到?需要自己計算的話如何計算? 
【答:】凍結保證金=(成交均價|開倉價|最新價) * 未成交手數 * 合約乘數 * 保證金率
(按金額)+ 未成交手數* 保證金率(按手),參與計算的價格選擇參照保證金算法設置。 
 
40. 可提比例怎麼查,基本保證金是什麼? 
【答:】可提資金等實時性要求不高的數據可以直接從後臺查詢,客戶端無需知道“可
提比例”。“基本保證金”又叫“保底資金”和“基本準備金”,TThostFtdcMoneyType 
Reserve。 
 
41. 平倉盈虧和持倉盈虧是在計入“可用資金”並應用算法時是彙總後統一計算還是分筆計
算? 
【答:】彙總計算後再應用相應算法,如“浮盈可開倉”是把所有的持倉浮盈浮虧加總
後再計入“可用資金”。 
42. 下午開盤前是否有集合競價?集合競價時是否會收到行情更新?集合競價時是否可以【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 13 頁 共 17 頁
 
發市價單? 
【答:】下午沒有集合競價。集合競價時不更新買賣價/量。集合競價時發送的市價單會
被交易所認爲沒有對手方,作爲交易不成功來自動撤單。 
43. 請問報單狀態中的在隊列中是什麼意思? 
【答:】表示報單已經在交易所的撮合隊列中。 
44. 真 實 環 境 中 的 OnRtnDepthMarketData() 返 回 的 成交金額 Turnover 及 當日均價
AveragePrice 兩個字段是不是不正確? 
【答:】是的,交易客戶端用到該數據時需要自行調整,調整規則如下: 
交易所 當日均價 成交金額 
鄭商所 正確 乘以合約乘數 
大商所 除以合約乘數 正確 
上期所 除以合約乘數 正確 
 
45. 查詢歷史平倉明細是哪個函數? 
【答:】查歷史結算單,CTP 的歷史報單隻能通過期貨公司管理人員在管理平臺查詢,
客戶端需要歷史交易記錄可以通過查詢歷史結算單的方式獲取。 
 
46. 通過 ReqQryInstrumentMarginRate 獲取保證金率時,在返回的數據中,是不是全部都是
絕對值?如果是相對交易所的費率的話,那麼交易所保證金率通過什麼方法獲取? 
【答:】ReqQryInstrumentMarginRate 返回的保證金率已經包含了交易所保證金率及保證
金率調整,也就是說返回最終的比率,即絕對值。 
 
47. 持倉查詢記錄中的昨持倉是今天開盤前的一個初始值,不會因爲平昨或者平倉而減少。
當前時侯的昨持倉=總持倉-今持倉。YdPosition := Position - TodayPosition。 
 
48. OnHeartBeatWarning 在什麼情況下發生?我試了自己斷線,路由器斷線,狂開 bt 下載
都沒發生過這個事件。 
【答:】永遠不會發生,已經對 API 用戶屏蔽了該響應。 
 
49. 委託單的狀態中怎麼沒有“部成部撤”這個狀態呢?“未成交不在隊列中”與“撤單”的區別
是什麼? 
【答:】“部成部撤”即“部分成交不在隊列中”。CTP 有一個自動掛起標誌,如果設置
了該標誌,那麼斷線客戶的未成交報單將被自動掛起,這時該報單的狀態就是“未成交
不在隊列中”。自動掛起標誌是從上期所繫統沿用過來的東西,原來設計的“自動掛起”
報單,可以撤單也可以通過“激活”指令讓報單重新進入隊列。目前請客戶端將“自動掛
起標誌”設置爲 0,永遠不掛起。 
 
50. 爲什麼每次連接服務器時,最大報單引用(MaxOrderRef)都是 1 開始的? 
【答:】FrontID + SessionID + OrderRef,作爲主鍵,當 FrontID + SessionID 變更後
MaxOrderRef 將重置。 
 
51. 報單引用是每發一次單就要遞增,還是該 SESSION 內一直使用 LONGIN 時取得的最大報
單引用? 
【答:】報單引用由客戶端自主管理,後臺僅要求該字段遞增。 
 
52. OnRtnOrder 每次在登陸時都會把上一次的下單結果再重新返回一次,這樣是不是有些
不妥啊? 
【答:】CTP 的公有流和私有流提供三種訂閱方式,TERT_RESTART:從本交易日開始重傳,
TERT_RESUME:從上次收到的續傳,TERT_QUICK:只傳送登錄後的內容。每次都重傳是因
爲在訂閱時(SubscribePrivateTopic/SubscribePublicTopic)選擇了 TERT_RESTART 方式。 
 
53. 我查某個合約的手續費,返回品種,不能認爲所有合約都是按這個設置的?也有可能有
個別合約是按合約設置的? 
【答:】是的,查詢費率時返回品種只說明該合約的費率設置是取自對應品種的費率設
置,後臺沒有對該合約進行特殊的設置。 
 
54. 如果發送一個報單委託價格在停板之外。按道理如果 CTP 校驗失敗,那麼應該從
OnRspOrderInsert 返回錯誤;如果是交易所校驗失敗,那麼應該從 OnErrRtnOrder 來返
回錯誤。現在情況是這兩個地方都不返回錯誤,而是從 OnRtnOrder 返回。然而
OnRtnOrder 卻沒有錯誤代碼,僅是狀態改變,沒法捕捉異常。其實用戶報單後,如果
正確根本不會“馬上收到報單響應 OnRspOrderInsert”,只有報單被 CTP 拒絕才會收到。 【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 15 頁 共 17 頁
 
【答:】超出漲跌停板的判斷是在交易所處理,所以,CTP 收到報單就新增一條記錄,
然後收到交易所的 OnErrRtnOrder 後,修改委託表裏的記錄,觸發 OnRtnOrder。
OnErrRtnOrder 的作用是:CTP 在檢查委託發現錯誤時,會給發出委託的投資者發出
OnRspInsertOrder,同時發出 OnErrRtnOrder 給相關的交易員,所以,作爲投資者可以不
關心 OnErrRtnOrder。 
 
55. 還有就是 OnRtnOrder 有重複推送的問題。比如發一個單,OnRtnOrder 推了一個“已報”
狀態回來。然後我開始撤單,撤單一報入,OnRtnOrder 首先又推一個“已報”的狀態
回來,然後纔是“撤消”的狀態。重複推送當然不會出錯,不過會影響效率。 
【答:】投資者發出 1 個操作,都會收到 2 條回報。具體說,1,發出 1 筆委託,2,CTP
發出“已提交”狀態回報,3,CTP 轉發交易所的“未成交”狀態回報。 
下一個動作:1,用戶發出撤單;2,CTP 修改 active User,再發出“未成交”狀態回報;
3,CTP 轉發交易所的“已撤單”狀態回報。就是 CTP 應答一下,然後交易所又應答一
下。都是把對應的委託狀態從 OnRtnOrder 推回來。 
 
56. 從 OnRtnOrder 中有沒有辦法區分這是從 CTP 返回的包還是從交易所返回的包? 
【答:】對客戶端來說,所有返回包都由 CTP 發出。 
57. 我想請教,報單狀態回報或下單撤單反饋裏面我怎麼區分是不是交易所小結休息引起
的?這樣我好下預埋單。 
【答:】OnRtnInstrumentStatus 會通知當前交易所狀態變化 
58. 哪些報單狀態是報單的最終狀態,不會再改變了的? 
【 答 :】 以 下 狀 態 爲 報 單 的 最 終 狀 態 : THOST_FTDC_OST_AllTraded 、
THOST_FTDC_OST_Canceled 、 THOST_FTDC_OST_NoTradeNotQueueing 、
THOST_FTDC_OST_PartTradedNotQueueing。 
59. ReqOrderAction 裏面的:報單的掛起、報單的激活、報單的修改這幾個功能現在有沒有
實現? 
【答:】目前只支持撤單。 
60. 平今倉的時候,對大連或者鄭州使用 CloseToday 是否有問題? 
【答:】後臺有對應的轉換,對 DCE 和 CZCE 的倉位使用平今或平昨都轉換爲平倉. 
61. 判斷一個合約是否可以交易,如果使用 InstLifePhase 判斷,那麼在上市日和到期日這一【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 16 頁 共 17 頁
 
天,合約生命週期狀態是 1(上市),還是 3(到期)?還是直接用 IsTrading 去判斷? 
【答:】CTP 交易後臺從管理平臺或是交易所取得“合約生命週期狀態”及“當前是否
交易”兩個字段的值,由於跟後臺的設置關聯,且 DCE 及 CZCE 並不會在盤中推送單個
合約的狀態,因此並不能通過這兩個字段及時獲得合約是否交易的信息。要查某個合約
當天是否可以交易,可以查 IsTrading,要看現在是否可以交易,就看合約狀態(僅上期
所)或者交易所狀態。 
62. TThostFtdcCombOffsetFlagType 有幾個類型,分別代表什麼意思啊。 
【 答 :】 TThostFtdcCombOffsetFlagType 是 一 個 數 組 , 元 素 值 的類型 爲
TThostFtdcOffsetFlagType,單腿合約交易只需要填[0]位,組合合約交易時各分腿的開平標誌
從[0]開始,每個元素對應一條分腿,暫定爲 5 位,目前市場上最長的組合合約爲 3 條腿。 
 
63. 銀期轉賬裏,業務功能碼,應該填什麼? 
【答:】 
101001 銀行發起轉帳開戶 
101002 銀行發起簽約銷戶 
101003 銀行發起銀行帳號變更 
102001 銀行發起銀行資金轉期貨 
102002 銀行發起期貨資金轉銀行 
103001 銀行發起衝正銀行轉期貨 
103002 銀行發起衝正期貨轉銀行 
104001 銀行發起查詢資金帳戶餘額 
104003 銀行發起查詢賬戶對應關係 
104005 完成銀行向期貨公司發起驗證期貨投資賬號密碼交易,並可查詢賬戶信息 
104006 銀行發起查詢期貨公司系統狀態 
105099 銀行下傳對帳明細文件 
202001 期貨發起銀行資金轉期貨 
202002 期貨發起期貨資金轉銀行 
203001 期貨發起衝正銀行轉期貨 
203002 期貨發起衝正期貨轉銀行 
204002 期貨發起查詢銀行餘額 【綜合交易平臺 API 技術開發指南】 
 上海期貨信息技術有限公司,2012 第 17 頁 共 17 頁
 
204004 期貨發起個人客戶查詢銀期直通車開通情況 
204005 期貨端發起查詢轉帳明細 
204006 期貨公司發起查詢銀行系統狀態 
204999 期貨端發起查詢客戶平臺當日流水 
206001 期貨發起銀行資金轉期貨資金(入金)通知 
206002 期貨發起期貨資金轉銀行資金(出金)通知 
901001 個人開通銀期直通車 
901002 個人解除銀期直通車 
905001 平臺發起期商簽到 
905002 平臺發起期商簽退 
905003 期貨發起同步密鑰 
 
64. 請問 CTP 支持哪些下單類型?我在文檔裏面看到可以直接在報單的時候設置限價單,市
價單和觸發單。這些好像交易所目前官方還只支持限價單吧? 其他實現都是 CTP 實現
的嗎? 
【答:】CTP 支持國內三家商品交易所正式對外開放的所有下單類型,大商所和鄭商所
提供套利交易指令和市價單,大商所提供止盈止損等條件單。CTP 在後臺提供非交易時
段的預埋單,條件單也將在 v4.1 版本中完成。 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章