期货量化交易程序CTP入门指南 三
注:本人开发的期货网格化交易软件,源代码出售,包教包会包功能扩展。有意向留言,或联系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入门指南 三相关推荐
- 期货量化交易程序CTP入门指南 一
周末综合征,周末爬山+跑步导致周一上班困的啥都不想做.正好趁这个时间写一下前两周做的一个期货网格化工具,算是给后面要入门的兄弟尽点微薄之力(虽然网上的资料已经足够多)! 我本对期货一无所知(仅知道&q ...
- vn.py开源量化交易程序开发框架
http://www.vnpy.org/ vn.py 是基于 Python 的开源量化交易程序开发框架,起源于国内私募的自主量化交易系统,目前已经成长为一套全功能的交易程序开发框架. vn.py项目起 ...
- Python期货量化交易中常用的数据类型有哪些?
1 常用内置常量 Python解释器在启动时会创建None.True.False三个常量,None表示"无",True表示"真",False表示"假& ...
- python期货量化交易实战_Python期货量化交易实战
·了解交易的规则与数据指标,学习正确的金融算法·基于真实的数据进行回测和分析,了解期货交易的内涵·循序渐进的案例式教学,按部就班地操作就能上手·基于Python 3.7进行分析,提供示例代码,可在异步 ...
- python版期货量化交易(AlgoPlus)案例(多进程处理子任务)
python版期货量化交易(AlgoPlus)案例(多进程处理子任务) python因为简单.易上手,所以深受大家的喜爱,并且随着人工智能的不断发展与进步,python也一跃成为了最受欢迎的编程语言之 ...
- wii homebrew 程序编程入门指南
wii homebrew 程序编程入门指南 请尊重原作者的劳动成果,转载请注明出自A9VG和原作者Silenceburn! 本人水平有限,难免错漏,欢迎各路高手拍砖指正,非常感谢! Chapter 1 ...
- python:chatGPT 写一个趋势跟踪策略 量化交易程序
chatGPT:趋势跟踪策略的量化交易程序可能会因语言和框架而异,下面是一个简单的Python代码示例,用于演示如何通过量化编程来实现趋势跟踪策略. 这段代码是一个简单的策略实现,它读取股票数据并计算 ...
- 视频教程-程序员入门指南-Python
程序员入门指南 从事数据科学以及机器学习行业数年 宫聚仁 ¥49.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5元 ↓↓↓ 订阅后 ...
- python期货交易策略_GitHub - guyimin/tqsdk-python: 期货量化交易策略程序开发包, 实时行情/历史数据/实盘交易...
TqSdk 量化交易策略程序开发包 TqSdk 是一个由信易科技发起并贡献主要代码的开源 python 库. 依托快期多年积累成熟的交易及行情服务器体系, TqSdk 支持用户使用极少的代码量构建各种 ...
最新文章
- Flink从入门到精通100篇(二十)-跨境电商 Shopee 的实时数仓之路
- api如何使用_什么是API, API是如何工作的?
- php节点对象,JavaScript_JavaScript中访问节点对象的方法有哪些如何使用,JavaScript中访问节点对象的方法 - phpStudy...
- 诸葛io的技术架构图_【总结】MySQL技术内幕二:InnoDB存储引擎技术特性
- HarmonyOS之跨设备分布式应用调试
- java shp文件_Java读取工作空间下所有shp文件名
- 杭电1287破译密码
- 如何打出好看的数学公式呢?
- C# Winform 自动更新程序实例
- 浅析数据中心机房工程
- 国培计算机培训奥鹏,3515011349奥鹏国培培训网络研修总结
- 详细讲解半加器、全加器、四位全加器,并使用FPGA实现半加器、全加器
- UnityShader笔记第三课-MVP矩阵原理-M矩阵
- 为什么要用以太网IO模块替代RS485远程IO模块
- 模拟集成电路设计与分析——全差分放大器
- mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
- 在虚拟机关机时,提示Ubuntu-Unattended upgrade in progress during shutdown, please don‘t turn off
- LambdaStream
- 预处理那些事(定义表示符,定义宏,#define)
- npm run dev 和 npm run serve区别