注:本人开发的期货网格化交易软件,源代码出售,包教包会包功能扩展。有意向留言,或联系qq:610151253

本篇开始介绍我的工程代码。

开发之前要按照上篇所讲获取API接口文档

API截图如下,我们所需的是dll和.h文件。

接口文档,截图如下,需要我们从头到尾看一遍,当然因为我们只是作为个人投资者,里面很多内容可以大概浏览即可。

 一、开发工具

VS和Qt都可,我用的Qt,工程目录截图如下:

至于SPI和API的作用和功能,开发文档已经讲的非常详细,我这里就不说了。

通过查看接口中的.h头文件:

ThostFtdcTraderApi.h

ThostFtdcMdApi.h

看出交易类:CThostFtdcTraderSpi、CThostFtdcTraderApi,和行情类CThostFtdcMdSpi、CThostFtdcMdApi都是虚函数,所以我们要做的就是对其继承,实现所需的接口。

这里可以直接查看官方提供的demo,按照其方法进行继承实现自己的类。

MiddleCTP是我自己实现的一个承上启下的单例类,比如我实际只需要通过CTP的API实现报单和撤单的功能,业务处理层面报单和撤单都调用这个类。

二、内存模型

1、原谅我没安装流程图工具!

 map1

这是一个map,把它想象成一个数据库表。用户每次提交报单,唯一索引+1,报单是个结构体,把他的每个元素想象成数据库表的字段。

里面用字段记录着开仓价格、平仓价格、止损价格和开平标志;

初次报单自然是开仓,成交后通过报单引用查询到此条记录,取出数据进行平仓报单;再次成交后再通过报单引用查询出来进行开仓报单,如此往复循环

map2

报单的时候生成,因为报单的时候需要生成报单引用,每个报单的报单引用是唯一的。

它的目的是把报单引用map1中的key键相关联。因为CTP返回的报单回报中只能通过报单引用来查到原始报单数据。

CTP系统返回后会把数据放到一个队列,上图代码工程中的QDealReportListThread是个线程,处理这个队列,通过报单引用从map1中找到报单数据,进行后续的开、平仓操作。

2、行情

在ctp中行情和报单是完全独立的两个模块。用户提交报单时,虽然是批量提交但都是同一合约,此时取出合约,到行情线程进行行情订阅。

行情订阅的目的是为了止损。

交易接口也提供行情查询,但交易接口的查询是限流的,上限为每秒查询一次。而订阅行情接口后500ms会返回一次深度行情,这样能尽早的拿到行情用来实时止损!

但会用行情的一个潜在问题就是cpu的利用率非常高,在我本机能达到80%多。

CTP行情和交易都是在独立的线程中。

我们在创建行情和交易实例时都进行了Init()函数的调用,其实这里面就创建了线程。因为行情模块每500ms就会给我们行情回报,所以占用cpu高也是有情可原的。

本篇就先说到这里,下篇开始分析我的代码!在下篇之前,希望您通过开发手册及demo可以实现ctp交易实例的创建,并能登录成功!

注:本人源代码出售,有意向请联系qq:610151263

期货量化交易程序CTP入门指南 三相关推荐

  1. 期货量化交易程序CTP入门指南 一

    周末综合征,周末爬山+跑步导致周一上班困的啥都不想做.正好趁这个时间写一下前两周做的一个期货网格化工具,算是给后面要入门的兄弟尽点微薄之力(虽然网上的资料已经足够多)! 我本对期货一无所知(仅知道&q ...

  2. vn.py开源量化交易程序开发框架

    http://www.vnpy.org/ vn.py 是基于 Python 的开源量化交易程序开发框架,起源于国内私募的自主量化交易系统,目前已经成长为一套全功能的交易程序开发框架. vn.py项目起 ...

  3. Python期货量化交易中常用的数据类型有哪些?

    1 常用内置常量 Python解释器在启动时会创建None.True.False三个常量,None表示"无",True表示"真",False表示"假& ...

  4. python期货量化交易实战_Python期货量化交易实战

    ·了解交易的规则与数据指标,学习正确的金融算法·基于真实的数据进行回测和分析,了解期货交易的内涵·循序渐进的案例式教学,按部就班地操作就能上手·基于Python 3.7进行分析,提供示例代码,可在异步 ...

  5. python版期货量化交易(AlgoPlus)案例(多进程处理子任务)

    python版期货量化交易(AlgoPlus)案例(多进程处理子任务) python因为简单.易上手,所以深受大家的喜爱,并且随着人工智能的不断发展与进步,python也一跃成为了最受欢迎的编程语言之 ...

  6. wii homebrew 程序编程入门指南

    wii homebrew 程序编程入门指南 请尊重原作者的劳动成果,转载请注明出自A9VG和原作者Silenceburn! 本人水平有限,难免错漏,欢迎各路高手拍砖指正,非常感谢! Chapter 1 ...

  7. python:chatGPT 写一个趋势跟踪策略 量化交易程序

    chatGPT:趋势跟踪策略的量化交易程序可能会因语言和框架而异,下面是一个简单的Python代码示例,用于演示如何通过量化编程来实现趋势跟踪策略. 这段代码是一个简单的策略实现,它读取股票数据并计算 ...

  8. 视频教程-程序员入门指南-Python

    程序员入门指南 从事数据科学以及机器学习行业数年 宫聚仁 ¥49.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5元 ↓↓↓ 订阅后 ...

  9. python期货交易策略_GitHub - guyimin/tqsdk-python: 期货量化交易策略程序开发包, 实时行情/历史数据/实盘交易...

    TqSdk 量化交易策略程序开发包 TqSdk 是一个由信易科技发起并贡献主要代码的开源 python 库. 依托快期多年积累成熟的交易及行情服务器体系, TqSdk 支持用户使用极少的代码量构建各种 ...

最新文章

  1. Flink从入门到精通100篇(二十)-跨境电商 Shopee 的实时数仓之路
  2. api如何使用_什么是API, API是如何工作的?
  3. php节点对象,JavaScript_JavaScript中访问节点对象的方法有哪些如何使用,JavaScript中访问节点对象的方法 - phpStudy...
  4. 诸葛io的技术架构图_【总结】MySQL技术内幕二:InnoDB存储引擎技术特性
  5. HarmonyOS之跨设备分布式应用调试
  6. java shp文件_Java读取工作空间下所有shp文件名
  7. 杭电1287破译密码
  8. 如何打出好看的数学公式呢?
  9. C# Winform 自动更新程序实例
  10. 浅析数据中心机房工程
  11. 国培计算机培训奥鹏,3515011349奥鹏国培培训网络研修总结
  12. 详细讲解半加器、全加器、四位全加器,并使用FPGA实现半加器、全加器
  13. UnityShader笔记第三课-MVP矩阵原理-M矩阵
  14. 为什么要用以太网IO模块替代RS485远程IO模块
  15. 模拟集成电路设计与分析——全差分放大器
  16. mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
  17. 在虚拟机关机时,提示Ubuntu-Unattended upgrade in progress during shutdown, please don‘t turn off
  18. LambdaStream
  19. 预处理那些事(定义表示符,定义宏,#define)
  20. npm run dev 和 npm run serve区别

热门文章

  1. win7系统安装sql server 2000 图解全过程
  2. 有色金属行业数字化之路探析
  3. matlab用双重循环实现费诺编码
  4. Windows program design读书笔记第2章
  5. 打造属于你自己的Mac 机器人助手
  6. 决策树ID3、C4.5、CART算法
  7. 2018年4月份自考总结
  8. 【模拟赛】2019 蓝桥杯省赛 A 组模拟赛(一)
  9. 最常见的英文写作问题
  10. 统计二叉树的叶子节点个数