自从综合交易平台( CTP)的 API开放以来,很多人开始编写自己的程序化交易系统,今天我想说说自己的一些看法。
    首先解读一下 CTP的接口说明, CTP的 API使用建立在 TCP协议之上 FTD协议(《期货交易数据交换协议》)与交易托管系统进行通讯,而交易托管系统负责投资者的交易业务处理。 FTD 协议中规定了所有的通讯都基于某一种通讯模式。

交易涉及的通讯模式共有三种:

1.对话通讯模式,是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理,并给予响应。例如报单、查询等。这种通讯模式与普通的客户/服务器模式相同。

2.私有通讯模式,是指交易所端主动,向某个特定的会员发出的信息。例如成交

回报等。

3.广播通讯模式,是指交易所端主动,向市场中的所有会员都发出相同的信息。

例如公告、市场公共信息等。

CTP的交易API提供了两个接口,分别为CThostFtdcTraderApi 和CThostFtdcTraderSpi

我们自己开发的交易系统通过CThostFtdcTraderApi向CTP发送操作请求,通过CThostFtdcTraderSpi接收CTP的任何响应。

现在把主要的业务举例在下表中

业务举例

通讯模式

CThostFtdcTraderApi

CThostFtdcTraderSpi

登录

对话模式

ReqUserLogin

OnRspUserLogin

报单录入

ReqOrderInsert

OnRspOrderInsert

报单查询

ReqQryOrder

OnRspQryOrder

成交查询

ReqQryTrade

OnRspQryTrade

报单回报

私有模式

OnRtnOrder

成交回报

OnRtnTrade

行情涉及的通讯模式共有两种:

1.对话通讯模式,同交易一样,是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理,并给予响应。例如登录,退订等。

2.广播通讯模式,主要是行情订阅,当订阅行情后交易所端主动向会员连续主动发出行情信息。

业务举例

通讯模式

CThostFtdcMdApi

CThostFtdcMdSpi

登录

对话
模式

ReqUserLogin

OnRspUserLogin

行情订阅

广播

模式

SubscribeMarketData

OnRspQryDepthMarketData

行情退订

对话模式

UnSubMarketData

OnRspUnSubMarketData

可见,通过CTP提供的接口,我们可以向CTP发送业务申请,也不断的按照三种通讯模式中的其中一种接收CTP的响应。因此我们写的交易系统中至少就应该有两个线程,一个称其为主业务线程,负责对CTP发出业务申请;另一个线程为API工作线程,负责接收CTP通过广播通讯模式,对话通讯模式,私有通讯模式其中一种模式对交易系统的响应。

综上所述,我们的程序化交易系统需要完成的业务可以划分为:

1.基本操作,比如登录,订阅等;

2.行情操作,比如对行情数据的接收,存储等

3.订单操作,比如报单;对报单,成交状况的查询;报单,成交状况的私有回报等。

4.数据监听和处理操作,比如接收到新数据之后的统计处理,满足统计条件后的报单处理(其实这里就是我们的策略所在)

那么,我建议将我们的程序化交易系统分为四个线程,分别处理上述业务。程序的主线程就可以完成基本操作,完成登入,订阅等初始化工作。

其它三个线程工作关系如下图所示:

程序化交易系统是一个复杂的多线程网络程序,在开发过程中要特别注意处理很多的线程互斥、数据处理造成的网络丢包等一系列棘手问题。另外,对于CTP开发的资料,大家可以留言给我,我尽量提供,也欢迎大家多多讨论。

基于CTP的程序化交易系统开发(一)相关推荐

  1. 基于CTP的程序化交易系统开发

    http://blog.sina.com.cn/s/blog_56e7157f01016ri2.html 自从综合交易平台(CTP)的API开放以来,很多人开始编写自己的程序化交易系统,今天我想说说自 ...

  2. 基于CTP的程序化交易系统开发(二)

     本文开始先说说CTP给开发者提供了什么. CTP提供给开发者的文件一共有4个头文件 ThostFtdcTraderApi.h,ThostFtdcMdApi.h,ThostFtdcUserApiS ...

  3. 基于CTP的程序化交易系统开发(三)

     本文讨论一下数据监听线程和订单管理线程做些什么.     一,数据监听线程     数据监听线程,当行情处理线程接收到新的行情数据时,也就是每当一个tick到来时,就向数据监听线程发出信号,触发 ...

  4. 基于CTP的程序化交易系统开…

    原文地址:基于CTP的程序化交易系统开发(一)作者:ronalgao 自从综合交易平台(CTP)的API开放以来,很多人开始编写自己的程序化交易系统,今天我想说说自己的一些看法.     首先解读一下 ...

  5. 基于Android校园跳蚤市场交易系统的设计与实现

    小跳蚤 大用途 前言: 算一算时间又快到了一年一度的毕业设计了吧,我也差不多完成我自己的毕业设计一年了,在此推出我的毕业设计成果以供后来的学弟学妹参考.都说站在巨人肩膀上,更上一层楼,在枯燥的编程期间 ...

  6. java ctp行情_javaCtp: java版本期货程序化交易系统,包括行情服务,交易服务会逐步完善...

    java_vnpy 介绍 java版本期货程序化交易系统,包括行情服务,交易服务会逐步完善,CTP版本上期技术官网下载6.3.15 穿透式, 目前项目无架构设计,只针对ctp进行封装调用,实现基本交易 ...

  7. 基于MT4的 国内期货交易系统 150ms

    基于MT4的 国内期货交易系统 成交速度150ms!!!!! 开发试用中,联系方式Q群:459504288 需提交模拟CTP账户 密码 全品种开放

  8. 交易系统开发之行情数据总结

    一.行情数据简介 1.行情数据简介 行情数据是交易过程中最基本.最重要的部分.一次完整的交易通常分为三个步骤:接收行情.分析行情(策略部分).发出买卖指令并成交(算法交易部分).对于高频交易和低延迟交 ...

  9. 基于Java毕业设计在线交易系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计在线交易系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计在线交易系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

最新文章

  1. linux内存管理 之 内存节点和内存分区(Zone)
  2. POJ 1679 The Unique MST(次小生成树)
  3. Vue父子组件之间的传值
  4. iOS中持久化存储SQLite(一)
  5. 动态规划 —— 线性 DP —— 最大和问题
  6. vue请求PHP接口报错provisional headers are shown
  7. python excel插件_django使用插件下载excel的方法
  8. Deno 会取代 Node.js 吗?
  9. NLP学习------HanLP使用实验
  10. idea导入java项目步骤_idea导入javaweb项目
  11. Java 数据库基本操作
  12. 按键精灵根据图片查找技巧
  13. pad怎么远程服务器,iphone和ipad如何远程控制局域网电脑
  14. 美国大大学计算机排名2015,2015年美国计算机专业大学排名TOP20
  15. 在哪里能学到计算机基础知识,电脑基础知识学习
  16. win10的怎么调计算机亮度,Win10系统调节屏幕亮度的三种方法【图文】
  17. Android 手机连接电脑
  18. 啊哈添柴挑战Java1829. 逆序输出(难)
  19. 达人评测 索尼8K电视Z9J、4K电视X95J和83英寸A90J 怎么样
  20. 从零开始搭建智能客服

热门文章

  1. 5G NR SIB1介绍
  2. 2021-08-27 网安实验-Windows系统渗透测试之.NET框架0Day漏洞(CVE-2017-8759)
  3. IE访问HTTPS链接下载文件,IE提示无法下载
  4. Symbian技巧-安装sisx或sis后实现应用程序的自动启动
  5. Windows Server2012 KB2919355 补丁无法安装
  6. .text‘ will not fit in region `ROM‘, region `ROM‘ overflowed by 3056 bytes问题记录
  7. 地平线机器人Waymo Open Dataset Challenge中2D目标检测赛道第二名方案解析
  8. 一个限流电路,求大神解答
  9. 数值分析:复化公式求解定积分
  10. RC522详解(RC522arduino读写函数的详细解析)