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

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

  • CTP(Comprehensive Transaction Platform)

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

    1. 交易系统

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

    2. 结算系统

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

    3. 风控系统

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

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

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

  • 期货公司与期货交易所

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

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

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

    而此处关注的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 数据在技术上究竟是什么东西?
在Linux环境下使用C语言来完成ctp期货量化交易系统,首先需要安装相应的开发工具和环境,例如gcc编译器和相关的开发库。然后,可以通过ctp官方提供的API来进行开发。 接下来,需要编写C语言程序来连接ctp交易接口,包括登录行情服务器、连接交易服务器、订阅行情数据、下单交易等相关功能。在编写程序时,需要充分了解ctp交易接口的相关文档和示例代码,以便正确地调用接口函数。 在交易系统的开发过程中,需要考虑到错误处理、数据处理、交易策略的实现等方面。对于错误处理,可以通过编写日志来记录程序的运行情况,以便排查错误。对于数据处理,可以通过编写算法来对行情数据进行分析和处理,以支持量化交易策略的实现。 在编写交易策略时,需要根据具体的量化交易策略来实现相应的买卖逻辑,可以通过编写条件判断语句和相关算法来实现交易决策。 最后,在完成ctp期货量化交易系统的开发后,还需要进行充分的测试和优化。通过模拟交易和回测来验证交易系统的稳定性和盈利性,通过优化代码和算法来提高系统的性能和效率。 总之,在Linux环境下使用C语言完成ctp期货量化交易系统的开发,需要充分的了解ctp接口和API,编写对应的功能程序,实现量化交易策略,并进行测试和优化,以确保系统的稳定性和盈利性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值