基于CTP的程序化交易系统开发(一)
自从综合交易平台( 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的程序化交易系统开发(一)相关推荐
- 基于CTP的程序化交易系统开发
http://blog.sina.com.cn/s/blog_56e7157f01016ri2.html 自从综合交易平台(CTP)的API开放以来,很多人开始编写自己的程序化交易系统,今天我想说说自 ...
- 基于CTP的程序化交易系统开发(二)
本文开始先说说CTP给开发者提供了什么. CTP提供给开发者的文件一共有4个头文件 ThostFtdcTraderApi.h,ThostFtdcMdApi.h,ThostFtdcUserApiS ...
- 基于CTP的程序化交易系统开发(三)
本文讨论一下数据监听线程和订单管理线程做些什么. 一,数据监听线程 数据监听线程,当行情处理线程接收到新的行情数据时,也就是每当一个tick到来时,就向数据监听线程发出信号,触发 ...
- 基于CTP的程序化交易系统开…
原文地址:基于CTP的程序化交易系统开发(一)作者:ronalgao 自从综合交易平台(CTP)的API开放以来,很多人开始编写自己的程序化交易系统,今天我想说说自己的一些看法. 首先解读一下 ...
- 基于Android校园跳蚤市场交易系统的设计与实现
小跳蚤 大用途 前言: 算一算时间又快到了一年一度的毕业设计了吧,我也差不多完成我自己的毕业设计一年了,在此推出我的毕业设计成果以供后来的学弟学妹参考.都说站在巨人肩膀上,更上一层楼,在枯燥的编程期间 ...
- java ctp行情_javaCtp: java版本期货程序化交易系统,包括行情服务,交易服务会逐步完善...
java_vnpy 介绍 java版本期货程序化交易系统,包括行情服务,交易服务会逐步完善,CTP版本上期技术官网下载6.3.15 穿透式, 目前项目无架构设计,只针对ctp进行封装调用,实现基本交易 ...
- 基于MT4的 国内期货交易系统 150ms
基于MT4的 国内期货交易系统 成交速度150ms!!!!! 开发试用中,联系方式Q群:459504288 需提交模拟CTP账户 密码 全品种开放
- 交易系统开发之行情数据总结
一.行情数据简介 1.行情数据简介 行情数据是交易过程中最基本.最重要的部分.一次完整的交易通常分为三个步骤:接收行情.分析行情(策略部分).发出买卖指令并成交(算法交易部分).对于高频交易和低延迟交 ...
- 基于Java毕业设计在线交易系统源码+系统+mysql+lw文档+部署软件
基于Java毕业设计在线交易系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计在线交易系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...
最新文章
- linux内存管理 之 内存节点和内存分区(Zone)
- POJ 1679 The Unique MST(次小生成树)
- Vue父子组件之间的传值
- iOS中持久化存储SQLite(一)
- 动态规划 —— 线性 DP —— 最大和问题
- vue请求PHP接口报错provisional headers are shown
- python excel插件_django使用插件下载excel的方法
- Deno 会取代 Node.js 吗?
- NLP学习------HanLP使用实验
- idea导入java项目步骤_idea导入javaweb项目
- Java 数据库基本操作
- 按键精灵根据图片查找技巧
- pad怎么远程服务器,iphone和ipad如何远程控制局域网电脑
- 美国大大学计算机排名2015,2015年美国计算机专业大学排名TOP20
- 在哪里能学到计算机基础知识,电脑基础知识学习
- win10的怎么调计算机亮度,Win10系统调节屏幕亮度的三种方法【图文】
- Android 手机连接电脑
- 啊哈添柴挑战Java1829. 逆序输出(难)
- 达人评测 索尼8K电视Z9J、4K电视X95J和83英寸A90J 怎么样
- 从零开始搭建智能客服
热门文章
- 5G NR SIB1介绍
- 2021-08-27 网安实验-Windows系统渗透测试之.NET框架0Day漏洞(CVE-2017-8759)
- IE访问HTTPS链接下载文件,IE提示无法下载
- Symbian技巧-安装sisx或sis后实现应用程序的自动启动
- Windows Server2012 KB2919355 补丁无法安装
- .text‘ will not fit in region `ROM‘, region `ROM‘ overflowed by 3056 bytes问题记录
- 地平线机器人Waymo Open Dataset Challenge中2D目标检测赛道第二名方案解析
- 一个限流电路,求大神解答
- 数值分析:复化公式求解定积分
- RC522详解(RC522arduino读写函数的详细解析)