python期货自动化交易_Python API面纱下的函数——基于CTP的国内期货程序化交易之报单流程讲解...
很多用户已经阅读了真格量化的Python API文档,知道了其是对一些交易柜台,比如CTP C++ API的封装。这里我们可以看看这些API在C++中的原始面貌。
我们还是以CTP柜台为例。与海外市场很多连续交易的品种相比,国内期货市场的期货品种需要考虑更多的规则。
第一就是交易时间段。许多外盘品种能全天23小时连续交易,而国内许多期货品种,全天分四个时间段交易,分别为9:00至10:15、10:30至11:30、13:30至15:00及21:00至次日02:30。交易时间段多,平仓时间段也多,这样无形中就增加了很多业务逻辑。
例如在真格量化中,“收盘事件”包含了小节交易的暂停事件:
第二是今昨仓的区分,例如上期所的期货品种平仓时分平今和平仓,这样平仓报单时就要根据成交时间分别判断,是前一个交易日的单子还是当前交易日的单子,否则报单参数不正确,单子将直接被交易系统拒绝。
在CTP开发过程中主要用到的头文件为:ThostFtdcTraderApi.h、ThostFtdcUserApiDataType.h及ThostFtdcUserApiStruct.h,动态库为:libthosttraderapi.so。下面是一些代码示例:
在C++中创建CTP api的实例:
CThostFtdcTraderApi *pTradeApi = CThostFtdcTraderApi::CreateFtdcTraderApi(dirName);
通过调用CreateFtdcTraderApi()创建API实例——pTradeApi,随后调用该实例发起各种请求,比如连接服务器、用户登录、报单、撤单、查询持仓、查询资金等等。
2. 创建CTP API回调实例:
CFtdcTradeSpi *pTradeSpi = new CFtdcTradeSpi(pTradeApi, this);
这个需要自己编写相应实现类,需要继承上期技术提供的CThostFtdcTraderSpi类。重写该类里面的方法,以处理服务器发过来的各类数据。
3. 将上述两个实例关联起来,并发起连接服务器请求:
pTradeApi->RegisterSpi(pTradeSpi);
pTradeSpi->connect(serverAddr, brokerId, username, password);
连接服务器以及实例初始化相关代码:
这可以对应真格量化的账户登录Python代码:
在C++中连接请求发出后,OnFrontConnected()会响应请求,然后在该函数内可以调用登录函数pTradeApi_->ReqUserLogin()完成用户登录操作,相应的OnRspUserLogin()会响应请求。由于国内期货在交易日内首次登录时需要做投资者结算结果确认操作,所以在OnRspUserLogin()函数内,可以进一步调用pTradeApi_->ReqSettlementInfoConfirm()做投资者结算结果确认,确认结果将在OnRspSettlementInfoConfirm()内返回。做完投资者结算结果确认操作,整个服务器连接与用户登录过程就完成了,可以正常下单交易了。
C++登录账户部分:
C++确认结算单部分:
4. 期货报单:
(1)ReqOrderInsert():报单请求
开发者需要正确填写买卖/方向、开仓/平仓、市价/限价、委托数量、委托价格等等,填写完毕就可以调用ReqOrderInsert()报单了。
(2)OnRspOrderInsert():报单请求应答
报单成功后,该函数就会被回调。当然我们也可以用OnRtnOrder()来监控报单的状态变化。
(3)OnRtnOrder():委托变化通知
当委托状态发生变化时,该函数会被回调。一般常见的委托状态主要有:未知、未成交还在队列中、部分成交还在队列中、完全成交等。
对应真格量化中查委托的状态:
一次报单,如果数量比较多,一般不会一次全部成交,而是会分多批次成交,所以该函数会不断被回调。随着不断回调,每次返回的委托量、成交量、剩余量等数据会不断变更。这也是我们在真格量化中委托发出后,一般会受到多条委托状态变化回报的原因。
(4)OnRtnTrade():成交信息变化推送通知
该函数比较重要,返回的每一条信息都是成交信息,里面包含成交量、成交价、成交费用等等,这些都是投资者关心的数据,对应真格量化的OnTradeDeal函数。
5. 查询期货账号持仓:
查询持仓主要调用pTradeApi_->ReqQryInvestorPosition(),按照文档说明填写合适的参数即可。查询持仓响应函数为:
该函数一般需要由开发者自己重写,应注意有时持仓数据不会一次全部返回,而是随着成交的进行而一批一批返回,需要开发者监听成交状况的变化而进行更新,相当于在真格量化中在OnTradeDeal函数中利用GetPositions函数刷新持仓数据。
— — — — — — E N D — — — — — —
真格量化可访问:
真格量化微信公众号,长按关注:
遇到了技术问题?欢迎加入真格量化Python技术交流QQ群 726895887
往期文章:
python期货自动化交易_Python API面纱下的函数——基于CTP的国内期货程序化交易之报单流程讲解...相关推荐
- 基于CTP的国内期货程序化交易之行情获取讲解
前面两篇文章主要讲了国外期货相关程序开发,使用的是郑州易盛的行情及交易api,而国内期货相关程序开发易盛貌似也是有sdk的,不过项目中使用的是上期技术的sdk,即大家经常提到的CTP a ...
- 基于CTP的国内期货程序化交易之报单流程讲解
相比国外期货交易开发,国内期货交易开发就有些繁琐了,坑比较多.第一就是交易时间段多,像国外期货美原油,全天23小时连续交易,而国内期货沪金,全天分四个时间段交易,分别为9:00至10:1 ...
- DeepEye:一个基于深度学习的程序化交易识别与分类方法
DeepEye:一个基于深度学习的程序化交易识别与分类方法 徐广斌,张伟 上海证券交易所资本市场研究所,上海 200120 上海证券交易所产品创新中心,上海 200120 摘要:基于沪市A股交 ...
- python接口自动化参数化_python接口自动化-参数化
原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...
- 如何用python实现自动化办公_Python自动化办公都需要掌握什么知识?
知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理 ...
- python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)
本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...
- python接口自动化登录_python 接口自动化--登录
原博文 2018-07-22 23:23 − 从目前知道系统登录来看一般主要是与数据库存储用户名密码进行比对,若登录域名和业务域名不是同一个还需要获取业务域的coockie hre项目登录demo: ...
- python函数调用的例子_Python案例|混用C函数
今天,我们来解决python的速度问题.我们平时所说的Python是指在PC机上的CPython,换句话说,Python的解释器是用C语言编写的.为Python编写C扩展模块能够显著提高Python的 ...
- macd的python代码同花顺_同花顺顶级MACD指标公式源码-同花顺公式 -程序化交易(CXH99.COM)...
副图源码: DIFF :=(EMA(CLOSE,8) - EMA(CLOSE,21)); DEA := EMA(DIFF,5); F1:=ZIG(3,16); PARTLINE(DEA,DEA> ...
最新文章
- c#dev tabcontrol 与嵌套gridcontrol 总结
- 15.1-15.3 FTP,使用vsftpd搭建FTP服务
- 【BLE MIDI】MIDI 时间标志分析 ( 音符速度设置事件 | 拍号设置事件 | 基本时间 - 每个四分音符有多少 tick 或 pulse | 节拍时值计算 | 小节时值计算 )
- docker svn
- aliplayer 手机全屏控件不显示_Flutter 强大的MediaQuery控件
- windows中怎么添加定时任务
- 登陆后保持环境变量导出
- @程序媛,为什么到今天女性薪资依然不如男?
- 亚太杯数学建模竞赛优秀论文_【优秀论文】2019数维杯国际大学生数学建模竞赛C题优秀论文...
- Swagger2-注解说明
- Access数据库解密方法大盘点
- WebSphere性能调优
- python矩阵对角化_大矩阵对角化python
- 【Python】一个简陋的基于混淆矩阵计算遥感分类精度(总体精度、Kappa系数、用户精度、生产者精度等)的代码
- 牛年第一瓜!阿里女员工被初中文化男子骗走 500 多万元。。。
- php实现爬虫抓取法定节假日放假和补班安排数据
- R先生一步步教你用EasyExcel导出包含多图片的Excel
- 【2022】超详细的JAVA JDK配置和IDEA安装教程(Windows 版)
- python的numpy教程_ROS与Python入门教程-使用numpy
- hdu 1114 完全背包