很多人在综合交易平台(CTP)的API开放后,开始编写程序化交易系统。先解读CTP的接口说明:CTP的API使用建立在TCP协议之上FTD协议与交易托管系统进行通讯,而负责投资者交易业务处理的则是交易托管系统。FTD 协议中规定了所有的通讯都基于某一种通讯模式。

CTP的交易API提供了两个接口:

1.CThostFtdcTraderApi,我们开发的交易系统通过它向CTP发送操作请求;

2.CThostFtdcTraderSpi,通过它接收CTP的任何响应。

主要业务举例如下:

行情涉及两种通讯模式:

1.广播通讯模式:主要是行情订阅,交易所端在行情订阅后,将主动连续向会员发出行情信息;

2.对话通讯模式:由会员端主动发起的通讯请求。请求被交易所端接收和处理,并给予响应。

我们可以通过CTP提供的接口向CTP发送业务申请,也不断的按照三种通讯模式中的其中一种接收CTP的响应。所以,至少应该有两个线程在我们所写的交易系统中:1.负责对CTP发出业务申请的主业务线程;2.负责接收CTP通过三种通讯模式中的其中一种对交易系统响应的API工作线程。

综上所述,程序化交易系统需要完成的业务可分为:1.基本操作;2.行情操作;3.订单操作;4.数据监听和处理操作。而我的建议是,将程序化交易系统分为四个线程来分别处理以上业务。其它三个线程工作关系如下图所示:

程序化交易系统在开发过程中,要特别注意处理很多棘手问题,比如,数据处理造成的网络丢包或线程互斥等,因其就是一个复杂的多线程网络程序。

由上海期货信息技术有限公司开发的CTP交易接口,提供C++的接口,C++的Demo版本在网上有很多可直接使用。

1.上期所的接口为两个,dll、两个.lib和四个.h文件,初学者直接使用就好,下载地址:上海期货信息技术有限公司

需要在SIMNOW上注册CTP开发中要使用的模拟账号,BrokerID为9999,账号即investorId,密码为SIMNOW的登陆密码。

2.SIMNOW提供两类数据:

(1)交易时段的地址:比如,09:00-15:00和21:00-02:30,使用第一套地址,虽是真实的行情数据,但与真实的行情会相比,会有30秒左右延迟。

(2)为非交易时段,这时的数据是历史行情的播放,比如昨天的数据之类的,可以用来做程序调试。

注意:其中有MarketFront行情前置,用来做行情接收的地址;TradeFont交易前置,用来做交易的地址。这两个不能弄混,是分开的,否则会登陆失败。

3.行情Demo版,可以到:https://download.csdn.net/download/ranl007/10934692  下载

版下载,用VS2013打开后,点击testMdApi.cpp

运行后的情况:

在MdSpi.cpp中,可以将接收到的数据保存到本地

4.交易Demo下载地址为:https://download.csdn.net/download/ranl007/10935899  下载

,主要是修改MarketFront、BrokerID、TradeFront、个人期货账号和密码即可。

可以加QQ379305007交流

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的程序化交易系统开发(一)

     自从综合交易平台( CTP)的 API开放以来,很多人开始编写自己的程序化交易系统,今天我想说说自己的一些看法.     首先解读一下 CTP的接口说明, CTP的 API使用建立在 TCP协议 ...

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

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

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

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

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

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

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

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

  8. 交易系统开发工程师交易系统开发工程师 - 借此地,招几个人。

    为什么80%的码农都做不了架构师?>>>    交易系统开发工程师交易系统开发工程师-上海-00090 岗位职责: 1.负责股票,基金,期货等各类理财产品的交易系统的开发. 2.快速 ...

  9. 怎么建立一个简单的程序化交易系统?

    怎么建立一个简单的程序化交易系统? 交易系统构成就有好几个部分,主要给大家介绍一个简单的交易系统的构成. 简单的交易系统建立的话至少要包括3个部分,即入市信号系统.离市信号系统.资金风险控制系统. 入 ...

  10. 应该如何进行程序化交易系统的检验?

    都知道程序化交易有许多优势,今天将为大家讲述如何进行程序化交易系统的检验. 一.建模思想 程序化交易系统成功的关键因素,就是该系统的建模思想是否合合乎逻辑,是不是根据市场运作的基本原理来进行建立的. ...

最新文章

  1. AI一分钟 | 比特大陆递交招股书,募资用于AI芯片研发;泰晤士2019全球大学排行榜:清华列亚洲第一...
  2. python数字组合算法_面试宝典_Python.常规算法.0001.在圆圈和框框分别填入1~8数字各一次?...
  3. ECMA Script 6新特性之解构赋值
  4. 转载:掩膜矩阵操作数学解释(权重表,锐化)
  5. Mybatis CRUD注解Annotation的使用
  6. 网页里如何使用js禁用控制台
  7. 2014年5月生日会
  8. 说说说vue.js中的组
  9. java报错:java:xxx包不存在
  10. 长沙学院计算机系课程表,长沙交通学院研究生200—200学年度第学期课程表.doc...
  11. iOS 设计中 网络请求之 同步请求(json 请求--新方法和老方法)
  12. C语言丨求两个正整数的最大公约数
  13. c语言 指针 排序,c – 对指针列表进行排序
  14. 脚本——web_custom_request函数详解
  15. 从ARM裸机看驱动之按键中断方式控制LED(二)
  16. Android性能优化篇——友盟U-APM云真机
  17. 有道无术,术可求;有术无道,止于术
  18. ACM中关于Output Limit Exceeded和Time Limit Exceeded
  19. 解决:ipad QQ可以联网,浏览器不能联网
  20. 国考计算机三级嵌入式,英语初级视频学习

热门文章

  1. 静态页面通过AJAX+asp实现数据查询功能
  2. [读书笔记]Spring中的容器设计详解
  3. XAMPP下的Tomcat 7运行出现“1% 不是有效的 Win32 应用程序。”
  4. 线性代数笔记【特征值】
  5. Flutter持久化存储之使用和封装shared_preferences
  6. GUI 应用:socket 网络聊天室
  7. iOS动画效果合集、飞吧企鹅游戏、换肤方案、画板、文字效果等源码
  8. win32asm写的红警98修改器
  9. OCCT里的Mesh网格计算流程
  10. 安装Cloudera Manager-5.12.2 集成 CHD-5.12.2 问题总结