本文开始先说说CTP给开发者提供了什么。 CTP提供给开发者的文件一共有4个头文件 ThostFtdcTraderApi.h,ThostFtdcMdApi.h,ThostFtdcUserApiStruct.h,ThostFtdcUserApiDataType.h 和2个dll:thosttraderapi.dll,thostmduserapi.dll(动态链接库,如果是静态库 则是thosttraderapi.lib,thostmduserapi.lib )。
    其中 ThostFtdcTraderApi.h 定义了交易请求接口CThostFtdcUserApi和交易事件处理接口CThostFtdcUserSpi;
    ThostFtdcMdApi.h 定义了行情请求接口CThostFtdcMdApi,行情事件处理接口CThostFtdcMdSpi;
    ThostFtdcUserApiStruct.h定义了接口方法中用到的数据结构。
    ThostFtdcUserApiDataType.h定义了数据结构中用到数据类型,枚举描述。
    开发者通过 CThostFtdcUserApi就可以完成交易接口的 初始化,登入,确认结算结果,查询合约,查询资金,查询持仓,报单,撤单等业务操作;通过 CThostFtdcUserSpi获取相应回报
    开发者也可以通过 CThostFtdcMdApi完成行情接口的初始化,登入,订阅,收行情等业务;通过 CThostFtdcMdSpi获取相应的行情业务操作的回报。
   上文提到了基于CTP的程序化交易系统开发最好要有四个线程:
1.完成初始化及退出操作的主线程;
2.行情接受和处理线程;
3.新行情数据监听和处理线程;
4.订单管理线程
现在先讨论一下主线程的初始化工作。初始化工作包括交易接口和行情接口两部分,对于交易接口的初始化,程序必须完成如下步骤:
1, 产生一个CThostFtdcTraderApi实例
2, 产生一个事件处理的实例
3, 注册一个事件处理的实例
4, 订阅私有流
5, 订阅公共流
6, 设置交易托管服务的地址。
初始化过程的时序图如下:

对于行情接口的初始化工作要简单一些,因为接口默认就订阅了公有流和私有流,初始化过程的时序图如下:

接下来就是行情接收和处理线程,行情的接收是通过 CThostFtdcMdApi::SubscribeMarketData()完成对行情的订阅,通过 CThostFtdcMdSpi::OnRtnDepthMarketData()完成对于行情数据的接收。此线程的工作主要要完成如下三个方面:
1.行情数据的存储:由于SubscribeMarketData()可以对多个合约行情进行订阅,所以在接收到数据后的处理首先要考虑对不同合约的数据分别以合适的方式(这里合适的方式是指存取,遍历,查询,增删等操作最为稳定快速的算法)存储。
2.行情数据的补齐:这是一个相当重要的问题。当tick数据为空的时候,必须以合适的方式补齐(因为缺失的数据对后来的统计指标计算有较大的影响,所以数据补齐是相当考究的)。
3.最新行情数据到来时向数据监听线程发出信号。
    在下一文中我将讨论一下剩余的数据监听和处理线程和订单管理线程。

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

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

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

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

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

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

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

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

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

  5. 基于MTD的NAND驱动开发(二)

    基于MTD的NAND驱动开发(二) 基于MTD的NAND驱动开发(三) http://blog.csdn.net/leibniz_zsu/article/details/4977853 http:// ...

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

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

  7. 校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程

    校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程 完整代码下载地址:校园二手书商城源代码基于微信小程序云开发 欢迎使用,下面是配置教程 长话短说,下面直接说配置流程 一.小程序 ...

  8. “安居客“住房系统-基于Python-Django前后端分离开发(二)——基于RESTful架构的数据接口配置以及Redis高速缓存

    "安居客"住房系统-基于Python-Django前后端分离开发(二) 基于Django-Rest-Framework创建接口数据(二) 文章目录 "安居客"住 ...

  9. php 数据采集模板,基于PHP实战帝国CMS系统二次开发(标签、模板、快速仿站、数据采集)...

    基于帝国CMS的网站开发是一套从入门至精通的帝国视频教程,该教程细腻入微的由服务器配置.帝国CMS安装.DIV+CSS模版制做,通过帝国CMS去实现模版的功... 基于帝国CMS的网站开发是一套从入门 ...

最新文章

  1. 从B 树、B+ 树、B* 树谈到R 树
  2. unfold3d自动展uv_Maya2018超实用建模及UV展开功能视频教程
  3. sql 取重复key中的第一条_SQL每日一题
  4. 在Linux系统安装Nginx及配置https加密访问
  5. SpringBoot中使用Mybatis-plus整合PageHelper分页插件踩坑
  6. 条件指示符 #ifdef 的用法
  7. lwip协议栈实现服务器端主动发送,《LwIP协议栈源码详解——TCP/IP协议的实现》IP层输入...
  8. HTML5期末大作业:书店商城系统网站设计——响应式图书电商HTML 网上书店模板 (25页) HTML+CSS+JavaScript
  9. html转word 图片格式,html转word处理图片 java
  10. RFC 文档中文目录
  11. BlowFish算法Java实现
  12. 微信多订单合并付款_拼多多只能微信支付吗?拼多多合并支付有什么优势?
  13. bootstrap框架之面包屑导航(Breadcrumbs)
  14. LOOP AT SCREEN ABAP
  15. 以太坊经典的现状- Anthony Lusardi
  16. python好用的编程工具
  17. ubuntu下开启/禁用笔记本触摸板
  18. 「 机器人学 」“Human-aware机器人导航技术”浅谈
  19. 运行时绘制Gizmo——关于unity3D的GL图像库的使用(非常详细)
  20. 差分详细讲解(C++)

热门文章

  1. ‘gbk‘ codec can‘t decode byte 0xa4 in position 4: illegal multibyte sequence
  2. 优盘格式化工具,U盘修复格式化卡死问题
  3. SaaS:独立应用创新向全程电子商务蜕变
  4. C语言小项目——通讯录的存储系统(静态版,动态版,文件版)
  5. 清华大学张长水教授:机器学习和图像识别(附视频、PPT下载)
  6. 千寻魔方MC180M——厘米/分米级高精度定位
  7. 计算机一级wpsoffice知识点,2016年计算机一级《WPS Office》考试大纲
  8. android音视频开发!写给安卓软件工程师的3条建议,已整理成文档
  9. 360搜索引擎html代码,360搜索引擎取真实地址-python代码
  10. 【无标题】使用Ping命令制作的批量Ping工具,可对指定Ip进行ping测试,并将结果记录到txt文件