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收到应答。
- 发布/订阅方式:发布者发布信息至主题,订阅者从主题订阅消息。发布者和订阅者相对独立,低耦合。