1. 程式人生 > >CTP期貨期權交易開發

CTP期貨期權交易開發

3.2 open 期權 immediate level ast 發的 gfs 發布者

CTP交易部分接口說明

綜合交易平臺(Comprehensive Transaction Platform,CTP)是專門為期貨公司開發的一套期貨經紀業務管理系統,由交易、風險控制和結算三大系統組成。其中,交易系統主要負責訂單處理、行情轉發及銀期轉賬業務,系統能夠同時連通國內四家期貨交易所,支持國內商品期貨和股指期貨的交易結算業務,並能自動生成、報送保證金監控文件和反洗錢監控文件。

一、請求接口字段說明(必要字段)

1. 登錄:

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • pwd:密碼

2. 結算單確認:

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼

3.報單錄入:

3.1 必要字段說明

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • instrument_id:合約代碼
  • user_id:若是普通投資者,則同investor_id
  • exchange_id:交易所代碼
  • order_price_type:報單價格條件,
///任意價
#define THOST_FTDC_OPT_AnyPrice ‘1‘
///限價
#define THOST_FTDC_OPT_LimitPrice ‘2‘
///最優價
#define THOST_FTDC_OPT_BestPrice ‘3‘
///最新價
#define THOST_FTDC_OPT_LastPrice ‘4‘
///最新價浮動上浮1個ticks #define THOST_FTDC_OPT_LastPricePlusOneTicks ‘5‘ ///最新價浮動上浮2個ticks #define THOST_FTDC_OPT_LastPricePlusTwoTicks ‘6‘ ///最新價浮動上浮3個ticks #define THOST_FTDC_OPT_LastPricePlusThreeTicks ‘7‘ ///賣一價 #define THOST_FTDC_OPT_AskPrice1 ‘8‘ ///賣一價浮動上浮1個ticks #define THOST_FTDC_OPT_AskPrice1PlusOneTicks ‘9‘ ///賣一價浮動上浮2個ticks
#define THOST_FTDC_OPT_AskPrice1PlusTwoTicks ‘A‘ ///賣一價浮動上浮3個ticks #define THOST_FTDC_OPT_AskPrice1PlusThreeTicks ‘B‘ ///買一價 #define THOST_FTDC_OPT_BidPrice1 ‘C‘ ///買一價浮動上浮1個ticks #define THOST_FTDC_OPT_BidPrice1PlusOneTicks ‘D‘ ///買一價浮動上浮2個ticks #define THOST_FTDC_OPT_BidPrice1PlusTwoTicks ‘E‘ ///買一價浮動上浮3個ticks #define THOST_FTDC_OPT_BidPrice1PlusThreeTicks ‘F‘ ///五檔價 #define THOST_FTDC_OPT_FiveLevelPrice ‘G‘
  • direction:買賣方向,
///買
#define THOST_FTDC_D_Buy ‘0‘
///賣
#define THOST_FTDC_D_Sell ‘1‘
  • comb_offset_flag:組合開平標誌類型,只需填comb_offset_flag[0],
///開倉
#define THOST_FTDC_OF_Open ‘0‘
///平倉
#define THOST_FTDC_OF_Close ‘1‘
///強平
#define THOST_FTDC_OF_ForceClose ‘2‘
///平今
#define THOST_FTDC_OF_CloseToday ‘3‘
///平昨
#define THOST_FTDC_OF_CloseYesterday ‘4‘
///強減
#define THOST_FTDC_OF_ForceOff ‘5‘
///本地強平
#define THOST_FTDC_OF_LocalForceClose ‘6‘
  • comb_hedge_flag:組合投機套保標誌,只需填comb_hedge_flag[0],
///投機
#define THOST_FTDC_HFEN_Speculation ‘1‘
///套利
#define THOST_FTDC_HFEN_Arbitrage ‘2‘
///套期保值
#define THOST_FTDC_HFEN_Hedge ‘3‘
  • limit_price:價格
  • volume_total_original:數量
  • time_condition:有效期類型,如當日有效,
///立即完成,否則撤銷
#define THOST_FTDC_TC_IOC ‘1‘
///本節有效
#define THOST_FTDC_TC_GFS ‘2‘
///當日有效
#define THOST_FTDC_TC_GFD ‘3‘
///指定日期前有效
#define THOST_FTDC_TC_GTD ‘4‘
///撤銷前有效
#define THOST_FTDC_TC_GTC ‘5‘
///集合競價有效
#define THOST_FTDC_TC_GFA ‘6‘
  • volume_condition:成交量類型,一般填任何數量,
///任何數量
#define THOST_FTDC_VC_AV ‘1‘
///最小數量
#define THOST_FTDC_VC_MV ‘2‘
///全部數量
#define THOST_FTDC_VC_CV ‘3‘
  • min_volume:最小成交量1
  • contingent_condition:觸發條件,
///立即
#define THOST_FTDC_CC_Immediately ‘1‘
///止損
#define THOST_FTDC_CC_Touch ‘2‘
///止贏
#define THOST_FTDC_CC_TouchProfit ‘3‘
///預埋單
#define THOST_FTDC_CC_ParkedOrder ‘4‘
///最新價大於條件價
#define THOST_FTDC_CC_LastPriceGreaterThanStopPrice ‘5‘
///最新價大於等於條件價
#define THOST_FTDC_CC_LastPriceGreaterEqualStopPrice ‘6‘
///最新價小於條件價
#define THOST_FTDC_CC_LastPriceLesserThanStopPrice ‘7‘
///最新價小於等於條件價
#define THOST_FTDC_CC_LastPriceLesserEqualStopPrice ‘8‘
///賣一價大於條件價
#define THOST_FTDC_CC_AskPriceGreaterThanStopPrice ‘9‘
///賣一價大於等於條件價
#define THOST_FTDC_CC_AskPriceGreaterEqualStopPrice ‘A‘
///賣一價小於條件價
#define THOST_FTDC_CC_AskPriceLesserThanStopPrice ‘B‘
///賣一價小於等於條件價
#define THOST_FTDC_CC_AskPriceLesserEqualStopPrice ‘C‘
///買一價大於條件價
#define THOST_FTDC_CC_BidPriceGreaterThanStopPrice ‘D‘
///買一價大於等於條件價
#define THOST_FTDC_CC_BidPriceGreaterEqualStopPrice ‘E‘
///買一價小於條件價
#define THOST_FTDC_CC_BidPriceLesserThanStopPrice ‘F‘
///買一價小於等於條件價
#define THOST_FTDC_CC_BidPriceLesserEqualStopPrice ‘H‘
  • force_close_reason:強平原因,一般填非強平,
///立即
#define THOST_FTDC_CC_Immediately ‘1‘
///止損
#define THOST_FTDC_CC_Touch ‘2‘
///止贏
#define THOST_FTDC_CC_TouchProfit ‘3‘
///預埋單
#define THOST_FTDC_CC_ParkedOrder ‘4‘
///最新價大於條件價
#define THOST_FTDC_CC_LastPriceGreaterThanStopPrice ‘5‘
///最新價大於等於條件價
#define THOST_FTDC_CC_LastPriceGreaterEqualStopPrice ‘6‘
///最新價小於條件價
#define THOST_FTDC_CC_LastPriceLesserThanStopPrice ‘7‘
///最新價小於等於條件價
#define THOST_FTDC_CC_LastPriceLesserEqualStopPrice ‘8‘
///賣一價大於條件價
#define THOST_FTDC_CC_AskPriceGreaterThanStopPrice ‘9‘
///賣一價大於等於條件價
#define THOST_FTDC_CC_AskPriceGreaterEqualStopPrice ‘A‘
///賣一價小於條件價
#define THOST_FTDC_CC_AskPriceLesserThanStopPrice ‘B‘
///賣一價小於等於條件價
#define THOST_FTDC_CC_AskPriceLesserEqualStopPrice ‘C‘
///買一價大於條件價
#define THOST_FTDC_CC_BidPriceGreaterThanStopPrice ‘D‘
///買一價大於等於條件價
#define THOST_FTDC_CC_BidPriceGreaterEqualStopPrice ‘E‘
///買一價小於條件價
#define THOST_FTDC_CC_BidPriceLesserThanStopPrice ‘F‘
///買一價小於等於條件價
#define THOST_FTDC_CC_BidPriceLesserEqualStopPrice ‘H‘
  • is_auto_suspend:自動掛起標誌,1是,0否,一般填0
  • user_force_close:用戶強平標誌,1是,0否,一般填0

3.2 特別說明

  • 如果發送立即限價單:
/// 報單價格條件類型:限價
OrderPriceType = THOST_FTDC_OPT_LimitPrice;
/// 價格:用戶設定
LimitPrice = ……;
/// 有效期類型類型:當日有效
TimeCondition = THOST_FTDC_TC_GFD;
  • 如果發送立即市價單
/// 報單價格條件類型:任意價
OrderPriceType = THOST_FTDC_OPT_AnyPrice;
///價格:0
LimitPrice = 0;
///有效期類型類型:立即完成,否則撤銷
TimeCondition = THOST_FTDC_TC_IOC;
  • 如果發送觸發單
///觸發條件:用戶設定
ContingentCondition = ……;
///止損價:用戶設定
StopPrice = ……;
/// 報單價格條件類型:限價
OrderPriceType = THOST_FTDC_OPT_LimitPrice;
/// 價格:用戶設定
LimitPrice = ……;
/// 有效期類型類型:當日有效
TimeCondition = THOST_FTDC_TC_GFD;
  • 關於平倉:

上期所區分昨倉和今倉。

平昨倉時,開平標誌類型設置為平倉THOST_FTDC_OF_Close

平今倉時,開平標誌類型設置為平今倉THOST_FTDC_OF_CloseToday

其他交易所不區分昨倉和今倉。

開平標誌類型統一設置為平倉THOST_FTDC_OF_Close

4. 撤單:

4.1 必要字段填寫

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • instrument_id:合約代碼
  • user_id:若是普通投資者,則同investor_id
  • action_flag:只需填action_flag()[0],撤單THOST_FTDC_AF_Delete
///刪除
#define THOST_FTDC_AF_Delete ‘0‘
///修改
#define THOST_FTDC_AF_Modify ‘3‘
  • order_ref:報單引用
  • front_id:前置編號
  • session_id:會話編號

  • order_sys_id:報單編號
  • exchange_id:交易所編號

4.2 特別說明

  • 報單未在交易所須用(OrderRef+FrontID+SessionID)定位並撤單。
  • 報單停留在交易所,可用(OrderSysID+ExchangeID)定位並撤單。
  • 可只填寫一個字段,但是若填寫字段,則必須正確,否則無法定位報單。
  • 以上報單定位字段可在報單通知、成交通知,或者查詢報單、查詢成交中獲得。

5. 預埋單錄入:

僅在非交易時段報入並在新的交易時段開始時被觸發並執行。

字段參考普通下單,觸發條件為預埋單類型。

6. 預埋撤單:trade_parked_order_action_id = 9004

僅在非交易時段報入並在新的交易時段開始時被觸發並執行。

字段參考普通撤單。

7. 刪除預埋單:

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • parked_order_id:預埋單編號

8. 刪除預埋撤單:

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • parked_order_action_id:預埋撤單編號

9. 行權委托:

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • instrument_id:合約代碼
  • volume:數量
  • offset_flag:offset_flag()[0],開平標誌
  • hedge_flag:hedge_flag()[0],投機套保標誌
  • action_type:執行類型,
///執行
#define THOST_FTDC_ACTP_Exec ‘1‘
///放棄
#define THOST_FTDC_ACTP_Abandon ‘2‘
  • posi_direction:保留頭寸申請的持倉方向,
///凈
#define THOST_FTDC_PD_Net ‘1‘
///多頭
#define THOST_FTDC_PD_Long ‘2‘
///空頭
#define THOST_FTDC_PD_Short ‘3‘
  • reserve_position_flag:期權行權後是否保留期貨頭寸的標記,
///保留
#define THOST_FTDC_EOPF_Reserve ‘0‘
///不保留
#define THOST_FTDC_EOPF_UnReserve ‘1‘
  • close_flag:期權行權後生成的頭寸是否自動平倉,
///自動平倉
#define THOST_FTDC_EOCF_AutoClose ‘0‘
///免於自動平倉
#define THOST_FTDC_EOCF_NotToClose ‘1‘

10.撤銷行權委托:

參考普通撤單

  • broker_id:經紀公司代碼
  • investor_id:投資者代碼
  • instrument_id:合約代碼
  • user_id:若是普通投資者,則同investor_id
  • action_flag:只需填action_flag()[0],撤單THOST_FTDC_AF_Delete

  • exec_order_ref:執行宣告引用
  • front_id:前置編號
  • session_id:會話編號

  • exec_order_sys_id:執行宣告操作編號
  • exchange_id:交易所編號

11. 登出:

  • broker_id:經紀公司代碼
  • user_id:用戶代碼

12. 條件單錯誤通知:

13. 詢價通知:

14. 合約交易狀態通知:

15. 查詢類:

  • 查詢結算單確認信息:acct_qry_settle_comfirm
  • 查詢結算單:acct_qry_settle_info
  • 查詢投資者:acct_qry_investor
  • 查詢報單:trade_qry_order
  • 查詢成交:trade_qry_trade
  • 查詢投資者持倉:trade_qry_investor_position
  • 查詢投資者交易賬戶:trade_qry_trading_acct
  • 查詢交易通知:trade_qry_trading_notice
  • 查詢交易編號:trade_qry_trading_code
  • 查詢合約保證金率:trade_qry_instr_margin_rate
  • 查詢合約手續費率:trade_qry_instr_comm_rate
  • 查詢交易所:trade_qry_exchange
  • 查詢產品:trade_qry_product
  • 查詢合約:trade_qry_instrument
  • 查詢轉賬銀行:trade_qry_transfer_bank
  • 查詢投資者持倉明細:trade_qry_inv_pos_detail
  • 查詢投資者組合持倉明細:trade_qry_inv_pos_comb_detail
  • 查詢倉單折抵信息:trade_qry_ewarrant_offset

16. 用戶口令更新:acct_user_pwd_update

  • broker_id
  • user_id:用戶代碼
  • old_password
  • new_password

17. 資金賬戶口令更新:acct_trade_pwd_update

  • broker_id
  • account_id:投資者賬號
  • old_password
  • new_password

二、CTP交易基本流程和通訊

下面是大致流程圖:
技術分享圖片

1. 通訊模式和數據流

期貨交易數據換協議期貨交易數據換協議( Futures Trading Data Exchange Protocol,FTD),適用於期貨交易系統與其下端交易客戶端進行交易所需的數據交換和通訊。

  • 對話通訊模式:客戶端發起請求,類似C/S模式。
  • 私有通訊模式:交易系統主動向某個特定的客戶端發送信息。例如報單回報。
  • 廣播通訊模式:向所有客戶端發出相同的信息。例如行情。

需要訂閱公有流和私。

  • 公有流:交易所向連接著的客戶端發布信息。 比如說合約場上狀態公有流:交易所向連接著的客戶端發布信息。比如說合約場上狀態。
  • 私有流:交易所向特定客戶端發送的信息。 如報單回報,成交回報。

一般,CTP系統中對話模式下被返回的消息成為 響應 。而私有模式和廣播下被返回的消息稱為 回報 。

每個數據流應該對應一種通訊模式,但是一個通訊模式可能有多個數據流。

2.數據交換方式

  • 請求/應答方式:client發出請求,server收到應答。
  • 發布/訂閱方式:發布者發布信息至主題,訂閱者從主題訂閱消息。發布者和訂閱者相對獨立,低耦合。

其他待續

CTP期貨期權交易開發