什么是CTP程序化交易:系统入门

计划学习一下C语言,本着以可运行项目拆解方式学习,购买了一个C开发CTP程序的课程,无奈讲师思路清奇,没交代前因后果,故他处补充下背景。

  • CTP(Comprehensive Transaction Platform)

    综合交易平台。是上期技术专门为期货公司开发的一套期货经纪业务管理系统,由交易、风险控制、结算三大系统组成。

    1. 交易系统

      交易系统主要负责订单处理、行情转发及银期转账业务。

    2. 结算系统

      结算系统负责交易管理、帐户管理、经纪人管理、资金管理、费率设置、日终结算、 信息查询以及报表管理。

    3. 风控系统

      风控系统则主要在盘中进行高速的实时试算,以及时揭示并控制风险。

    详细的技术文档在上海期货信息技术有限公司。

    目前对外发布的是交易系统接口,通过该接口可以接收交易所行情和下达交易指令。结算和风控系统由期货公司管理人员通过上期技术提供的CTP管理平台完成,个人投资者无需关心。交易、风控和结算系统完全独立部署在上期技术机房内,由上期技术负责维护。

  • 期货公司与期货交易所

    上面提到,CTP是上期技术期货公司开发的。这里由两个主体。而市场上同等级的主体还有很多,其关系如下。目前国内由三个商品期货交易所(大连商品交易所、上海期货交易所、郑州商品交易所),一个中国金融期货交易所。各大期货交易所均有信息技术子公司对外提供行情交易接口服务,小结如下:

    • 郑商所下属子公司 郑州易盛信息技术有限公司 接口代表:启明星API
    • 大商所下属子公司 大连飞创信息技术有限公司 接口代表:XSpeed
    • 上期所下属子公司 上海期货信息技术有限公司,接口代表:CTP、CTPMini
    • 中金所下属子公司 上海金融期货信息技术有限公司,接口代表:飞马

    上述四家公司是整个期权期货行情市场的一手批发商,有些二级批发商从上述四家公司申请接口授权,在提供行情资讯(基本行情、Level2、延时)和数据服务(历史数据、统计数据)的基础上提供增值服务(综合资讯服务、行情交易软件等),再打包按年付费,对外提供服务。这类衍生品资讯信息商

    • 上海文华财经
    • 上海大智慧
    • 深圳国泰安
    • 万德资讯
    • 深圳财富趋势
    • 东方财富网
    • 同花顺
    • 恒生电子

    开发者除了直接对接交易所下属技术子公司提供的接口服务外,还可以对接第三方接口服务商,国内主要有以下几家:

    • 金仕达
    • 飞鼠
    • 量投科技 的 QDP接口
    • 盈透证券
    • 通联数据

    而此处关注的CTP,就是上期所下属子公司上期技术提供的一手行情数据批发接口,此接口有三大系统,不过只开放一个交易系统实现交易信息查询与订单提交。

    关于CTP是什么的深入案例理解参见:

    1. 中金所的飞马与上期所的CTP有何区别?孰优孰劣?
    2. 个人使用上期CTP接口开发期货程序化交易平台可行吗?
    3. 国内有哪些顶级高频交易 (HFT) 团队?
  • Simnow

    CTP是实盘用的,测试一般采用SimNow提供的虚拟盘。Simnow即提供实时数据(有延迟),也可以提供历史数据,CTP是不提供历史数据的。

  • CTP系统架构

    • 交易员终端:基于CTP系统给期货公司提供的UserAPI接口实现的管理终端,主要为期货公司服务,暂不对个人投资者开放
    • FTD通讯协议:期货交易数据交换协议
    • 交易前置:连接外部接入终端和内部FIB总线,提供:链路管理、协议转换和数据路由功能。
    • 行情前置:通过FIB总线从报盘管理订阅所有行情数据,按需转发给外部接入终端。
  • 通讯模式

    CTP内部封装了网络相关逻辑,使用基于TCP协议的FTD协议与CTP后台进行通讯,具体通讯模式有三种:

    • 请求应答模式:客户端主动发起请求,CTP后台接收并响应请求

    • 广播通讯模式:客户端订阅合约行情后,CTP通过广播对外推送行情信息。

    • 私有通讯模式:客户端对某合约进行委托等操作后,报单信息、成交回报等由CTP点对点的推送。

  • 行情数据

    国内CTP平台的行情数据tick级别是 1秒2个tick,免费提供一档行情报价。

    CTP接口不提供历史行情,历史行情需通过行情商解决。如果未登陆或者登陆断线造成行情数据丢失,CTP不提供行情回补机制。

    主动查询行情指令,有流量限制,如果有在途查询,不允许新发查询,CTP对于数据查询操作请求(ReqQryxxx),1秒最多允许发送1个查询,对报单、撤单、报价、询价等操作没有流量限制。

    L2行情需要付费购买:

    • 大商所 L2 行情每秒4个tick
    • 郑商所 L2 行情每秒4个tick
    • 中金所 L2 行情每秒2个tick,L2是五档报价。
  • CTP用到的文件

    1. ThostFtdcTraderApi.h C++头文件,包含交易相关的指令,如报单。
    2. ThostFtdcMdApi.h C++头文件,包含获取行情相关的指令。
    3. ThostFtdcUserApiStruct.h 包含了所有用到的数据结构。
    4. ThostFtdcUserApiDataType.h 包含了所有用到的数据类型。
    5. thosttraderapi.dll 交易部分的动态链接库和静态链接库。
    6. thostmduserapi.dll 行情部分的动态链接库和静态链接库。
    7. thosttraderapi.lib
    8. thostmduserapi.lib
    9. error.dtd 包含所有可能的错误信息。
  • CTP使用流程

    1. 创建SPI 和API 实例。
      这里的SPI 是指开发者创建的自己的类,该类已经继承了接口中的SPI 接口类(CThostFtdcTraderSpi 或
      CThostFtdcMdSpi)。而API 即接口中提供的CThostFtdcMdApi 或CThostFtdcTraderApi。

    2. 向API 实例注册SPI 实例。

    3. 向API 实例注册前置地址。

      交易接口需要注册交易前置地址,行情接口需要注册行情前置地址。

    4. 订阅公有流(仅限交易接口,行情接口不需要)。

      用于接收公有数据,如合约在场上的交易状态。默认模式是从上次断开连接处继续收取交易所发布数据(Resume 模式)开发者还可以指定全部重新获取(Restart),或从登陆后获取(Quick)。

    5. 订阅私有流(仅限交易接口,行情接口不需要)。

      用于接收私有数据,如报单回报。默认模式是从上次断开连接处继续收取交易所发布数据(Resume 模式)开发者还可以指定全部重新获取(Restart),或从登陆后获取(Quick)。

    6. 初始化(Init)

    7. 等待线程退出(Join)

  • 相关开源学习程序

    1. C++ CTP-MarketDataMachine
    2. C++ CTP-TradeServer
    3. C++ thunder-trader
    4. Python CTP接口Python版本
    5. Python vnpy
    6. C++连接CTP接口实现简单量化交易(行情、交易、k线、策略)
    7. 程序化交易二三事-CTP程序化交易开发入门系列
  • Reference

  1. 百度百科
  2. 期货期权交易行情接口
  3. 章志强-CTP开发总结,包括(初始化、登录、查询、交易、账户管理、出入金管理、新增期权操作)
  4. 小白期货CTP程序化交易开发入门(一)–CTP开发基础
  5. ronalgao的博客-基于CTP的程序化交易系统开发(一)
  6. Tick 数据在技术上究竟是什么东西?

你可能感兴趣的:(#,小白学量化交易,#,期货,期权,CTP,#,C,C++,Cython)