目录

CTP交易部分接口说明

一、请求接口字段说明(未说明则均为必填字段)

1. 登录:acct_login_id = 5000

  • broker_id:经纪公司代码
  • investor_id:投资者代码
  • pwd:密码

1.1 说明

若登陆成功后,会返回FrontID 、SessionID和MaxOrderRef,在下单时可设置OrderRef以MaxOrderRef为基础自增,这样在没有报单回报时也可以撤单,如果不设置OrderRef,交易核心会在报单回报中返回一个OrderRef保证报单唯一。

2. 结算单确认:acct_settle_comfirm_id = 5005

  • broker_id:经纪公司代码
  • investor_id:投资者代码

3.报单录入:trade_insert_order_id = 9000

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 特别说明

  • 交易所收到报单后,通过校验,用户会收到报单委托回报QryOrderResp和成交回报TradeResp。若交易所认为报单错误,就会收到报单错误回报InsertOrderErrResp。

  • 如果发送立即限价单:

/// 报单价格条件类型:限价
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

3.3 报单通知(委托回报)/查询报单 trade_qry_order_id

报单委托回报包含了报单的当前状态,其中包括:

  • (1)原始的报单指令
  • (2)几组交易指令:

FrontID 、SessionID、OrderRef,

BrokerID、BrokerOrderSeq,

ExchangeID 、TraderID 、LocalOrderID

ExchangeID 、OrderSysID,

  • (3)委托报单状态:
///全部成交
#define THOST_FTDC_OST_AllTraded '0'
///部分成交还在队列中
#define THOST_FTDC_OST_PartTradedQueueing '1'
///部分成交不在队列中
#define THOST_FTDC_OST_PartTradedNotQueueing '2'
///未成交还在队列中
#define THOST_FTDC_OST_NoTradeQueueing '3'
///未成交不在队列中
#define THOST_FTDC_OST_NoTradeNotQueueing '4'
///撤单
#define THOST_FTDC_OST_Canceled '5'
///未知
#define THOST_FTDC_OST_Unknown 'a'
///尚未触发
#define THOST_FTDC_OST_NotTouched 'b'
///已触发
#define THOST_FTDC_OST_Touched 'c'

3.4 成交回报/成交通知

成交回报描述了报单的成交事件,包括分笔成交。其中包括:

BrokerID 、BrokerOrderSeq(经纪公司报单编号),

ExchangeID 、TraderID 、LocalOrderID

ExchangeID 、OrderSysID.

已知一笔委托的FrontID、SessionID、OrderRef,要在成交回报中找到相关的成交记

录。可以在委托回报中,从FrontID、SessionID、OrderRef 映射到相关的ExchangeID +

OrderSysID。然后在成交回报中,用ExchangeID 、OrderSysID 找出这笔委托的相关成

交记录。

4. 撤单:trade_order_action_id = 9001

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 特别说明

4.2.1 响应和推送信息
  • 交易核心(CTP)发出报单操作请求响应order_action_p,其中包含了错误编码和错误消息。
  • 如果交易核心接受了撤单指令,用户会收到报单回报qry_order_p,用来更新委托状态。
  • 交易所收到撤单后,通过校验,执行了撤单操作。用户还会收到报单回报qry_order_p
  • 如果交易所认为报单错误,用户就会收到报单操作错误回报order_action_err_p
4.2.2 定位单号
  • 报单未在交易所须用(OrderRef+FrontID+SessionID)定位并撤单。报单回报中包含。
  • 报单停留在交易所,可用(OrderSysID+ExchangeID)定位并撤单。成交回报中包含。
  • 可只填写一个字段,但是若填写字段,则必须正确,否则无法定位报单。
  • 以上报单定位字段可在报单通知、成交通知,或者查询报单、查询成交中获得。

5. 预埋单录入:trade_parked_order_insert_id = 9002

仅在非交易时段报入并在新的交易时段开始时被触发并执行。

字段参考普通下单,触发条件为预埋单类型。

6. 预埋撤单:trade_parked_order_action_id = 9004

仅在非交易时段报入并在新的交易时段开始时被触发并执行。

字段参考普通撤单。

7. 删除预埋单:trade_rm_parked_order_id = 9003

  • broker_id:经纪公司代码
  • investor_id:投资者代码
  • parked_order_id:预埋单编号

8. 删除预埋撤单:trade_rm_parked_action_id = 9005

  • broker_id:经纪公司代码
  • investor_id:投资者代码
  • parked_order_action_id:预埋撤单编号

9. 行权委托:trade_exe_order_insert_id = 9007

  • 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.撤销行权委托:trade_exe_order_action_id = 9008

参考普通撤单

  • 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. 登出:acct_logout_id = 5001

  • broker_id:经纪公司代码
  • user_id:用户代码

12. 条件单错误通知:trade_error_conditional_order_notice_id = 9015

条件单校验错误返回该消息。

13. 询价通知:trade_for_quote_notice_id = 9016

14. 合约交易状态通知:trade_instrument_status_notice_id = 9017

15. 查询类:

  • 查询结算单确认信息:acct_qry_settle_comfirm_id = 5004;
  • 查询结算单:acct_qry_settle_info_id = 5006;
  • 查询投资者:acct_qry_investor_id = 5007;
  • 查询报单:trade_qry_order_id = 9101;
  • 查询成交:trade_qry_trade_id = 9102;
  • 查询投资者持仓:trade_qry_investor_position_id = 9103;
  • 查询投资者交易账户:trade_qry_trading_acct_id = 9104;
  • 查询交易通知:trade_qry_trading_notice_id = 9105;
  • 查询交易编号:trade_qry_trading_code_id = 9106;
  • 查询合约保证金率:trade_qry_instr_margin_rate_id = 9107;
  • 查询合约手续费率:trade_qry_instr_comm_rate_id = 9108;
  • 查询交易所:trade_qry_exchange_id = 9109;
  • 查询产品:trade_qry_product_id = 9110;
  • 查询合约:trade_qry_instrument_id = 9111;
  • 查询转账银行:trade_qry_transfer_bank_id = 9113;
  • 查询投资者持仓明细:trade_qry_inv_pos_detail_id = 9114;
  • 查询投资者组合持仓明细:trade_qry_inv_pos_comb_detail_id = 9115;
  • 查询仓单折抵信息:trade_qry_ewarrant_offset_id = 9116;

16. 用户口令更新:acct_user_pwd_update_id = 5002

  • broker_id
  • user_id:用户代码
  • old_password
  • new_password

17. 资金账户口令更新:acct_trade_pwd_update_id = 5003

  • broker_id
  • account_id:投资者账号
  • old_password
  • new_password

18. 获取经纪公司列表:acct_broker_info_id = 8010

8010,属于行情部分

  • client:指定客户端

19. 期货发起银行转期货:trade_from_bank_to_future_by_future_id

  • bank_id:银行代码
  • bank_account:银行帐号
  • bank_password:银行密码
  • broker_id:期商代码
  • account_id:投资者帐号
  • password:期货密码
  • trade_amount:转帐金额

20. 期货发起期货转银行:trade_from_future_to_bank_by_future_id

  • bank_id:银行代码
  • bank_account:银行帐号
  • bank_password:银行密码
  • broker_id:期商代码
  • account_id:投资者帐号
  • trade_amount:转帐金额

21. 期货发起查询银行余额请求:acct_qry_bank_account_money_by_future_id

  • bank_id:银行代码
  • broker_id:期商代码
  • account_id:投资者帐号

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

下面是大致流程图:

1. 通讯模式和数据流

期货交易数据换协议期货交易数据换协议( Futures Trading Data Exchange Protocol,FTD),适用于期货交易系统与其下端交易客户端进行交易所需的数据交换和通讯。

  • 对话通讯模式:客户端发起请求,类似C/S模式。
  • 私有通讯模式:交易系统主动向某个特定的客户端发送信息。例如报单回报。
  • 广播通讯模式:向所有客户端发出相同的信息。例如行情。

需要订阅公有流和私。

  • 公有流:交易所向连接着的客户端发布信息。 比如说合约场上状态公有流:交易所向连接着的客户端发布信息。比如说合约场上状态。
  • 私有流:交易所向特定客户端发送的信息。 如报单回报,成交回报。

一般,CTP系统中对话模式下被返回的消息成为 响应 。而私有模式和广播下被返回的消息称为 回报 。

每个数据流应该对应一种通讯模式,但是一个通讯模式可能有多个数据流。

2.数据交换方式

  • 请求/应答方式:client发出请求,server收到应答。
  • 发布/订阅方式:发布者发布信息至主题,订阅者从主题订阅消息。发布者和订阅者相对独立,低耦合。

其他待续

CTP期货期权交易开发的更多相关文章

  1. CTP程序化系统开发(C++ && PHP)

    2016-12-13 11:03:52 借助CTP的DEMO(上海期货交易公司提供的), 需要自己在 http://www.simnow.com.cn  上注册账号, 再者,需要下载[博易大师]软件, ...

  2. C#下如何用NPlot绘制期货股票K线图(2):读取数据文件让K线图自动更新

    [内容介绍]上一篇介绍了K线图的基本绘制方法,但很不完善,本篇增加了它直接读取数据的功能,这对于金融市场的数据量大且又需要动态刷新功能的实现很重要. [实现方法] 1.需要一个数据文件,这里用的是直接 ...

  3. [你必须知道的.NET]第三十回:.NET十年(下)

    发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  4. sql server的缺陷 将截断字符串或二进制数据 哪个字段

    将截断字符串或二进制数据 哪个字段 消息 8152,级别 16,状态 14,第 2 行将截断字符串或二进制数据. sql server2000 sql server2014 也不能直接提示出哪个字段的 ...

  5. CTP API开发期货自动交易平台概论

    题目比较小众,先介绍一下CTP. 综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台 ...

  6. CTP API开发之一:CTP API简介

    官网下载CTP API 综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台,CTP平 ...

  7. CTP API 开发之二 :制作CTP java版 API

    目前上期技术CTP系统提供的API版本是C++版本 SWIG是一个能将C/C++接口转换为其他语言的工具,目前可以支持Python,Java,R等语言. 本文主要介绍Windows 32/64位平台下 ...

  8. 期货homes平台以及仿ctp接口

    实盘账户或者模拟账户可以下挂多个子账户 子账户也可以是homes母账户,理论上可以一层一层套下去. 所有交易细节全部保存,收盘定时结算. 功能很强大,并且还有很多拓展空间. 连接homes平台,需要用 ...

  9. 上海期货交易所CTP行情和交易接入

    发布时间:2018-09-25   技术:C++11,动态库的制作   概述 CTP的接入Demo 详细 代码下载:http://www.demodashi.com/demo/14125.html 本 ...

随机推荐

  1. hbmy周赛1--E

    E - Combination Lock Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I6 ...

  2. 使用npm install报错-4048 operation not permitted解决

    刚刚使用npm install时一直报错-4048 operation not permitted,也尝试了多种方法,终于使问题得到解决,这里总结几种方法,先贴图: 一:权限问题 首先看到operat ...

  3. 利用nginx 虚拟主机、请求转发实现不同端口web访问

    一个服务器上挂一个网站实在是有点浪费:一个服务器上可以放多个网站:可以开启nginx的虚拟主机功能:利用访问的路径或者域名不同访问不同的文件夹:例如: 1.一台服务器上放多个网站使用nginx的配置文 ...

  4. HDU 1979 Red and Black

    题目: There is a rectangular room, covered with square tiles. Each tile is colored either red or black ...

  5. vue-cli脚手架的.babelrc文件 详解

    { // 此项指明,转码的规则 "presets": [ // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es7,es8进行转码,并 ...

  6. oc 快排算法

    直接复制粘贴就可以用了 - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *M_arr = [[NSMutableArray allo ...

  7. OpenGL+OpenCV实现立方体贴图

    我屮艸芔茻,转眼就7月份了. 今天试了一下立方体贴图,比较简单,大概说下和平面贴图的区别. 1. 平面贴图需要的是纹理坐标vec2:立方体贴图需要的是一个方向向量vec3,长度没有关系,重要的是方向, ...

  8. DALI 2.0解码模块

    DALI2.0调光解码模块使用手册 一.概述(联系人:张先生,电话:13923882807,QQ:813267849) 欢迎使用本公司的DALI 2.0解码模块,该模块支持"DALI第二套协 ...

  9. struts文件异常Included file cannot be found

    1.命名规范,都是采用struts-xxx.xml文件,即以struts开头 2.file的路径不要以/开头,在其他版本是以/开头的 <include file="/com/bjsxt ...

  10. 使用git bash提交代码到github托管

    1.首先登录到https://github.com注册Github帐号,并且创建一个repository.  或者登录到  https://git.oschina.net/注册账号,并且创建一个rep ...