CTP登录/查询,主要涉及到登录、查询市场、分类、合约、持仓、委托、成交,其他等。

这里需要注意:

RequestID的唯一和各种IDRef的唯一性

Req请求的返回值:

//-1,表示网络连接失败;
//-2,表示未处理请求超过许可数;
//-3,表示每秒发送请求数超过许可数。

一、登录

在登录之前你可能需要先调用ReqAuthenticate

客户端认证是为了保证证券(期货)公司的投资者只能使用该公司认可的客户端产品接入 CTP 后台进行交易。投资者在使用第三方提供或是自行开发的客户端产品接入指定的证券(期货)公司 CTP 交易系统之前,必须向该公司提交用户端产品信息( UserProductInfo )并 获得 认证码 ( AuthCode );之 后在发起 客户端 认证请 求(ReqAuthenticate)填写正确的用户端产品信息及对应的认证码即可完成客户端认证。
//注意:UserProductInfo和AuthCode需要证券期货公司提供

CThostFtdcReqAuthenticateField req = {0};strcpy(req.BrokerID,m_BrokerID);strcpy(req.UserID, m_UserID);strcpy(req.UserProductInfo,m_ProductInfo);strcpy(req.AuthCode,m_AuthCode);ReqAuthenticate(&req,nRequestID);

登录:

CThostFtdcReqUserLoginField req = {0};memcpy(req.BrokerID, m_BrokerID, sizeof(m_BrokerID)); memcpy(req.UserID, m_UserID, sizeof(m_UserID));memcpy(req.Password, m_Password, sizeof(m_Password));memcpy(req.UserProductInfo, m_AuthInfo.UserProductInfo, sizeof(m_AuthInfo.UserProductInfo));//InterfaceProductInfo;//ProtocolInfo;//MacAddress;//OneTimePassword;//ClientIPAddress;ReqTdUserLogin(&req,nRequestID);

请求查询投资者:

CThostFtdcQryInvestorField req = {0};strcpy(req.BrokerID, m_BrokerID);strcpy(req.InvestorID, m_UserID);ReqQryInvestor(&req,nRequestID);

请求查询资金账户:

//RMB(CNY)-人民币 USD-美圆 HKD-港元CThostFtdcQryTradingAccountField req = {0};strcpy(req.BrokerID, m_InvestorInfos[nInvestor].BrokerID);strcpy(req.InvestorID, m_InvestorInfos[nInvestor].InvestorID);//strcpy(req.CurrencyID, "CNY");ReqQryTradingAccount(&req,nRequestID);

这样登录完成并获取了基本数据,接下来要获取市场、分类、合约、持仓、委托、成交,其他等数据了,不过在这之前按照交易所规范,还要请求查询客户通知和结算单确认,结算单确认一个交易日只需要确认一次,不需每次都确认。

请求查询客户通知:

CThostFtdcQryNoticeField  req = {0};strcpy(req.BrokerID,m_BrokerID);ReqQryNotice(&req,nRequestID);

投资者结算结果确认:(CTP会记住投资者有没有结算单确认,所以结算单确认流程应该是这样)

查询投资者结算结果确认(先查询有没有结算单确认过):

CThostFtdcQrySettlementInfoConfirmField req = {0};strcpy(req.BrokerID, m_InvestorInfos[nInvestor].BrokerID);strcpy(req.InvestorID, m_InvestorInfos[nInvestor].InvestorID);ReqQrySettlementInfoConfirm(req,nRequestID);

在OnRspQrySettlementInfoConfirm里,

如果m_UserInfo.TradingDay和pSettlementInfoConfirm->ConfirmDate不一致,说明没有确认过,

请求查询投资者结算结果:

CThostFtdcQrySettlementInfoField req = {0};strcpy(req.BrokerID, m_InvestorInfos[nInvestor].BrokerID);strcpy(req.InvestorID, m_InvestorInfos[nInvestor].InvestorID);strcpy(req.TradingDay, m_UserInfo.TradingDay); //不填日期,表示取上一交易日结算单ReqQrySettlementInfo(&req,nRequestID);

查询完成投资者结算结果,再确认投资者结算结果:

CThostFtdcSettlementInfoConfirmField req = {0};strcpy(req.BrokerID, m_InvestorInfos[nInvestor].BrokerID);strcpy(req.InvestorID, m_InvestorInfos[nInvestor].InvestorID);//ConfirmDate    //rsp//ConfirmTime  //rspReqSettlementInfoConfirm(&req,nRequestID);

否则,说明已经确认投资者结算结果了。

二、查询

1、查询支持的市场:

//CZCE   郑州商品交易所//CFFEX 中国金融交易所//DCE     大连商品交易所CThostFtdcQryExchangeField req = {0};//strcpy(req.ExchangeID,"CZCE"); //可以查询特定市场,不填就是查询所有ReqQryExchange(&req,reqInfo.nRequestID);

2、查询产品分类:

CThostFtdcQryProductField req = {0};//req.ProductID; //可以查询特定产品,不填就是查询所有产品//req.ProductClass;ReqQryProduct(&req,reqInfo.nRequestID);

3、查询合约:

CThostFtdcQryInstrumentField req = {0};//req.InstrumentID; //指定合约的话,就是查询特定合约的信息//strcpy(req.ExchangeID,"DCE"); //指定市场的话,就是查询特定市场的所有合约//req.ProductID //指定产品分类的话,就是查询特定分类的所有合约ReqQryInstrument(&req,reqInfo.nRequestID);

4、查询持仓:

CThostFtdcQryInvestorPositionField req = {0};strcpy(req.BrokerID,m_BrokerID);strcpy(req.InvestorID, m_InvestorInfos[reqInfo.lAccIdx].InvestorID);//req.InstrumentID; //指定合约的话,就是查询特定合约的持仓信息,不填就是查询所有持仓ReqQryInvestorPosition(&req,reqInfo.nRequestID);

5、查询委托:(查询委托,有预埋单、预埋撤单、当日委托等)

请求查询预埋单:(还没开盘的时候下的单,要做预埋单处理,交易状态判断通过公有流判断)

CThostFtdcQryParkedOrderField req = {0};strcpy(req.BrokerID,m_BrokerID);strcpy(req.InvestorID, m_InvestorInfos[reqInfo.lAccIdx].InvestorID);//req.InstrumentID;//指定合约就是查询特定合约的预埋单//req.ExchangeID;ReqQryParkedOrder(&req,reqInfo.nRequestID);

请求查询预埋撤单:( 还没开盘的时候下的单,要做预埋单处理,交易状态判断通过公有流判断)

CThostFtdcQryParkedOrderActionField req = {0};strcpy(req.BrokerID,m_BrokerID);strcpy(req.InvestorID, m_UserID);ReqQryParkedOrderAction(&req,nRequestID);

请求查询当日委托:

CThostFtdcQryOrderField req = {0};strcpy(req.BrokerID,m_BrokerID);strcpy(req.InvestorID, m_UserID);ReqQryOrder(&req,nRequestID);

6、查询成交:(当日成交)

CThostFtdcQryTradeField req = {0};strcpy(req.BrokerID,m_BrokerID);strcpy(req.InvestorID, m_InvestorInfos[reqInfo.lAccIdx].InvestorID);//req.InstrumentID;//req.ExchangeID; //req.TradeID;//req.TradeTimeStart;//req.TradeTimeEnd;DoRequest(ReqQryTrade,req,reqInfo.nRequestID);

7、响应RtnOrder、RtnTrade

对于持仓、委托、成交数据之间的同步流程是这样:

1、登录完成查询持仓、委托、成交

2、收到RtnOrder更新委托

3、收到RtnTrade更新成交和刷新持仓(重新请求持仓)

CTP开发——登录/查询相关推荐

  1. CTP开发(2)行情模块的开发

    我在做CTP开发之前,也参考了不少其他的资料,发现他们都是把行情和交易做在同一个工程里的.我呢之前也做过期货相关的交易平台,感觉这种把行情和交易做在一起的方法缺乏可扩展性.比如我开了多个CTP账户,要 ...

  2. Hololens2开发 登录设备网页第三方观看忘记密码怎么办

    Hololens2开发 登录设备网页第三方观看忘记密码怎么办 针对比较方便的微软自带miscroftHoloLens 针对比较方便的微软自带miscroftHoloLens 设备端查询ip地址,电脑网 ...

  3. CTP开发(1)CTP开发的概述

    CTP是上海期货交易所开发的一套程序化交易的API.这篇文章呢,是进行扫盲和引路的,让你在开发时可以少走弯路. 1.如果你要进行CTP开发,那么先是在模拟环境下调试,这就需要去上期的仿真模拟网站sim ...

  4. 微信小程序云开发成绩查询小程序的制作过程。

    微信小程序云开发成绩查询小程序的制作过程. 如果觉得我讲的好可以点个关注. 明确自己的目的,到底要做一个怎么样的小程序. 我先上效果图: 确定后就可以开始自己布局.主要是用css 1.先看首页,首页主 ...

  5. iOS开发-登录界面开发(6)Toast-Swift的使用-Swfit4.1_Xcode9.3.1

    iOS开发-登录界面开发(6)Toast-Swift的使用-Swfit4.1_Xcode9.3.1 先看一下效果: 1.前面我们做了登录界面的UI,实现了网络请求,如果用户输入了错误的VIP号码,应该 ...

  6. 开发指南专题七:JEECG微云快速开发平台查询HQL过滤器

    开发指南专题七:JEECG微云快速开发平台 HQL过滤器 1. 查询HQL过滤器 1.1. 数据过滤现状分析 项目开发的查询页面都会有很多查询条件,开发追加查询条件的工作繁琐又很浪费时间. 这块工作量 ...

  7. 移动开发—媒体查询(Media Query)

    移动开发-媒体查询(Media Query) 1.使用@media,可以针对不同的媒体类型定义不同的样式 2.@media可以针对不同的屏幕尺寸设置不同的样式 3.当你重置浏览器大小的过程中,页面也会 ...

  8. SAP系统开发时查询库存的方…

    原文地址:SAP系统开发时查询库存的方法作者:conan 如果系统在集团层级启用了批次管理,那么对于某个物料是否启用了批次管理,要检查MARA表的XCHPF字段,如果值为X,则说明启用了批次管理,如果 ...

  9. Java swing 界面开发 - 登录界面- 2021-11-10

    Java swing 界面开发 - 登录界面 界面开发 包 包的概念 开发包 Java界面开发包 登录界面开发步骤 最简单的窗体 优化窗体内容 注意 优化响应内容 界面开发 包 包的概念 包的加入让类 ...

最新文章

  1. python技巧提升
  2. 使用 jQuery 简化 Ajax 开发
  3. 计算机科学不等于数学
  4. Linux常用命令大全(三)
  5. 使用Spring Boot Operator部署SpringBoot到K8S
  6. CMAKE Opencv配置
  7. D-OJ刷题日记:一元多项式的运算 题目编号:463
  8. 轻松注册WinRAR的小方法
  9. Vue项目中将时间格式成xxxx-xx-xx
  10. (小技巧) 如何让Linux 机器CPU使用率变高
  11. Java web 服务器 搭建_搭建一个java web服务端
  12. 基于Python实现的默克尔树
  13. Matlab底层算法实现图像水平镜像
  14. ArcGIS pro 打开时无法建立http连接
  15. outlook 回复邮件的邮件头使用RE而不是回复
  16. QtCharts图形移动和缩放
  17. wxpython下拉选择框_wxPython ComboBox Choice类
  18. OpenCV3.2+Qt5.8.0+Win10开发视频监控系统----Qt之设置应用程序图标
  19. //2.使用宏将一个数二进制中的奇数位和偶数为进行交换。 #includestdio.h #includestdlib.h #define EXH(x) \ ((x 0x5555555
  20. 【MySQL】mysql文本类型, 长文本

热门文章

  1. ubuntu踩坑笔记--开机进入recovering journal解决方法
  2. Windows命令行查看文件的MD5
  3. 用android实现GB28181监控客户端app
  4. 网络模型的鲁棒性(结合实例)与提升鲁棒性的方法
  5. linux内存回收(一)---kswapd回收
  6. Vue+Vuex+Axios+ECharts 画一个动态更新的中国地图
  7. 递归算法转化为非递归算法
  8. python 机器学习——特征筛选实现
  9. golang爬虫抓取商品报价
  10. 地心笛卡尔坐标系转WGS84坐标系公式的推导