前言

这一章总结了大家订阅行情最常问的一些问题的相关解答,希望能有帮助。如有不对的地方,欢迎指正。后期会在这里更新迭代,欢迎到这底下提问!

更新时间:20201112

1 获取行情的地址在哪里可以查到?

simnow发的即是实时行情,官网上可以看到该行情地址。

期货公司行情地址可咨询期货公司,或者到对应公司官网下载个快期,点击测速就可以看到。主要期货公司的行情地址可以在公众号(微信搜索:QuantRoad2019)后台回复 “地址” 得到。

多提一点,行情订阅不需要密码,但是ReqUserLogin还是要调用的,如下就可以:

CThostFtdcReqUserLoginField reqUserLogin = {0};
m_pUserMdApi->ReqUserLogin(&reqUserLogin, nRequestID++);

2 怎么知道有哪些合约正在交易(有行情)?

行情API里面很坑的一点是没有查询合约的功能。虽然二代行情里面加了ReqQryMulticastInstrument接口,但也仅是查询组播合约,需要咨询期货公司是否连接到相关交易所组播行情。所以有三种做法获取合约号:

1)通过交易API登录调用函数ReqQryInstrument查询;

2)爬交易所网站获得可交易合约;

3)交易所可交易合约有规则,例如上期白银为当前月开始的下个月的连续12个合约,当前为8月,那即是从ag1909到ag2008,找出这些规则生成合约编码即可。

3 API调用init后为啥没有任何反应?

和demo运行没有任何反应或者没有OnFrontConnected回调问题类似。

1)先检查网络链路是否畅通,可以telnet一下行情前置地址,是否通畅。

2)再检查API版本是否正确,连生产或者simnow现必须是6.3.15版本api,版本不正确将没有回调。

提醒:simnow正常地址是交易时间使用,7*24小时地址是非交易时段可以使用。

4 为什么登陆上了订阅显示成功但没有行情?/Simnow订阅期权合约没有行情?

首先确保是否订阅成功。CTP坑的是无论你订阅什么合约id,都会返回你"CTP:No Error",但只有你填对了合约编码才有相应行情。所以:

1)检查编码是否正确。这里坑的是各交易所对命名格式并不统一,

期货合约如下:前面字母代表品种名,后面数字代表合约到期日。

上期/能源所 小写+4个数字(rb1909代表rb品种,19年9月份到期)
中金所 大写+4个数字
郑商所 大写+3个数字(TA001代表TA品种,20年01月份到期)
大商所 小写+4个数字

期权合约如下:标的期货合约+看涨/看跌+行权价

上期所 小写+四个数字+C(或者P)+行权价,如cu1912C43000
大商所 小写+四个数字+ -C-(或者-P-)+ 行权价,如c2001-C-1800
郑商所 大写+三个数字+C(或者P)+行权价,如CF001C11200
中金所 大写+四个数字+ -C-(或者-P-)+ 行权价,如IO1908-C-2100

组合合约如下:

郑商所跨期

SPD 第一腿&第二腿 例如: SPD TA009&TA011

郑商所跨品种

IPS 第一腿&第二腿 例如: IPS CF009&CY009

大商所跨期

SP 第一腿&第二腿 例如: SP m2009&m2101

大商所跨品种

SPC 第一腿&第二腿 例如: SPC a2009&m2009

2)检查你订阅的行情是否过期。如果现在是19年8月份,那你订阅的是rb1905这种5月份到期的合约那肯定是没有行情的。

3)检查是否订阅的合约是冷门合约,冷门合约行情跳动比较少。可以打开相应客户端看下,找主力合约订阅。

4)目前Simnow不支持期权及组合报单,也没有相关行情。想要获取请参照1直接从生产上获取。

5 CTP提供的是实时tick数据吗?

CTP提供的是实时tick数据,但不是真正的tick数据。tick数据一般是指市场上的逐笔数据,例如一笔委托会产生一笔行情,一笔成交也会产生一笔行情。目前国内期货交易所还不支持推送这种逐笔的数据,只推送切片(快照)数据。切片数据是指将一定时间内的逐笔数据统一成一个快照发出,一般是1秒2笔。但郑商所有点特殊,可能是1s多笔,就不展开来讲了。

6 TradingDay和ActionDay有什么区别?

在CTP的设计里,TradingDay用来表示交易日,ActionDay表示当前实际日期。期货交易分为日夜盘,这两个日期在日盘的时候是一致的,但在夜盘就有了区别,是因为当天夜盘是属于第二天这个交易日。例如20190830(周五)晚上21点开始交易,交易日TradingDay是20190902(周一),但实际日期ActionDay是20190830。

这是设计的初衷,但事实上夜盘各交易所这两个日期很混乱。我们以20190830晚上夜盘交易举例:

  tradingday  actionday
上期/能源 20190902 20190830
大商所 20190902 20190902
郑商所 20190830 20190830

总结就是,大商所夜盘两个日期都是tradingday,郑商所日夜盘都是当天日期。

7 可以通过CTP API获得K线,现手等数据吗?

没法直接获得k线数据,需要根据ctp推送的行情数据自己合成。如何合成,参考上篇文章。同样无法获得现手增仓等数据,需要自己计算,后面会讲。

8 CTP支持股票/股票期权行情么?

一般提及CTP是指CTP期货柜台,只提供国内五大期货交易所期货行情。但CTP也有股票及股票期权柜台,这些柜台是与期货柜台独立的。也就是说,期货,股票,股票期权在上期技术是三套系统。目前股票系统已经停止维护了,股票期权系统仍然有维护,客户不多,具体哪些期货公司上线了这套系统,需要自行咨询上期技术或者期货公司。

9 可以通过CTP API获得历史行情吗?

不可以,CTP只提供实时行情。获取历史行情,目前免费的可以从天勤获取,仅提供所有期货合约。收费的可以和作者联系沟通(联系方式见置顶文章),提供国内股票,期货及美国股票及期货相关所有历史数据。

10 CTP提供level2行情吗?

level2行情是指深度行情,不同于level1只有1档,level2有多档。但除上期和能源外,一般交易所多档行情是收费行情,所以深度行情需要咨询相应期货公司。

目前上期和能源的level2行情对期货公司是免费的,但各个期货公司用哪家系统转发,要不要收费就要看他们自己了。所以最好去咨询期货公司,可以多咨询几家。至于在有些客户端上为啥能看到五档行情,因为那些客户端是接了自己公司的行情服务器,不一定是连CTP收的。

11 非交易时段收到行情是怎么回事?

日盘盘前可能会收到行情,是因为CTP日盘起动时会重演夜盘的流水,所以有可能会将夜盘的行情再推送一遍。日盘结束后也会收到行情,这是交易所结算完成发出的行情,这里面的结算价字段是当日结算价,一般推送时间在3点~3点半。建议按照交易时间过滤掉这些非盘中行情,以免影响交易逻辑。

12 组合合约行情如何获得?

CTP是不会去计算组合合约的行情的,只是转发交易所行情,所以要看交易所推不推。事实上直接以组合合约号订阅行情的话,郑商所和大商所都会推,但比实际情况下少不少。所以建议订阅各个单腿合约的行情,计算价差自己得到组合行情。

13 如何获取当前切片内的成交量?

Volume字段是累计成交量,这里是指这个交易日内的累计成交量。如需要这个切片内的成交量,需要用这个切片的该字段值,减去上个切片相应值,差额即是这个切片内成交量。

14 UpdateMillisec毫秒时间戳字段有效吗?

上期/能源/中金三个交易所会出现0和500两种值,大商所值是切片时真实毫秒时间,郑州该值都是0。

15 为什么有的字段值特别大?

行情中常看到有数值是1.7976931348623157e+308,这是double类型的上限值,在CTP内部是表示无效的。例如盘中的时候,本次结算价字段SettlementPrice即为无效值。

16 行情均价AveragePrice字段有什么坑?

AveragePrice这个字段除郑商所可以直接拿过来用之外,其它四大交易所要除以合约乘数,才是真正的均价。至于合约乘数是什么百度吧,可以通过用交易API查询合约获得,或者去交易所网站上查询获得。

17 CTP上可以查到什么是主力合约吗?

查不到,自己根据持仓量和成交量筛选,注意换月时逻辑。

18 行情里面的Exchange ID字段为空?

是的,发过来就是空值,需要自己维护,可以从交易接口查询合约ReqQryInstrument得到。

19 行情中UpdateTime和UpdateMillisec字段不是每500毫秒一次连续的,是缺数据吗?

首先,不连续不代表就是缺失数据,行情如果没有更新就不会回调OnRtnDepthMarketData函数,这个时间自然不是连续的。其次,通常来说,在simnow同时在线用户多,卡顿的情况下有可能缺失数据,但是在生产上不大可能。请参考第1问,不能说的更直接了,能连生产数据为啥还要连simnow呢?不过也不排除生产上会丢数据,不放心的话可以同时接入几路生产地址互相比对。

20 期货合约是每500ms都推送行情吗?为何同一时期主力和非主力合约一个交易日tick数量相差巨大?

以下图2020年11月份rb为例,主力rb2101和非主力rb2105的tick数量两个交易日相差将近8000个。这其实和19问相似,因为CTP只有行情有更新时才推送,否则不推送,所以主力合约会多不少。行情更新是指行情回调接口中相关字段有所变化。

往期推荐

● CTP程序化交易入门系列之一:准备

● CTP程序化交易入门系列之二:API基本架构及初始化

● CTP程序化交易入门系列之三:获取实时行情及K线合成

下节预告:

交易所行情知多少?

CTP程序化交易入门系列之四:行情订阅常见问题解答相关推荐

  1. CTP程序化交易入门系列之六:报单(一)

    行情(mduserapi)这一块终于介绍的差不多了,下面着重介绍交易(traderapi)相关.再次强调两点: 一.交易和行情是完全独立的,互不干扰: 二.本系列用Python版本讲解,主要考虑到Py ...

  2. CTP程序化交易入门系列之二:API基本架构及初始化

    上节讲了CTP程序化交易的入门工作:下载API,准备账号密码地址等.这节我们来讲API基本架构及初始化. 一. CTP API基本架构  这里为了便于大家理解API的相关函数,我简略地讲一下API的基 ...

  3. CTP程序化交易入门系列之三:获取实时行情及k线合成

    前面两篇有了基础知识的准备,这一篇讲通过CTP API获取实时行情,录入csv,实时合成k线.github上开源了录入csv及合成k线代码,后台回复pyctp可获取.先上两张效果图: 图1 csv数据 ...

  4. CTP程序化交易入门系列之一:准备

    前言: 笔者自毕业后一直从事低延时交易系统开发行业,这些年经历过神奇bug,给客户培训,回答客户千奇百怪的问题.在这个过程中,自身能力得到了很大的提升,但有时在面对一些小白问题时,总是感叹为何没有一系 ...

  5. 【量化】量化交易入门系列2:经典的量化交易策略(上)

    作者:悠悠做神仙 来源: 恒生LIGHT云社区 上一篇文章 量化交易入门系列1:编程语言与数据源 ,介绍了关于量化交易的基本概念,以及要做量化交易的编程语言选择,和量化交易的一些数据源获取工具.那么, ...

  6. 【量化】量化交易入门系列6:量化交易学习书籍推荐(二)

    作者:悠悠做神仙 来源: 恒生LIGHT云社区 上一篇 量化交易入门系列5:量化交易学习书籍推荐(一) 我们介绍一些量化交易一些操作和理论性书籍,可能对于刚入门的大家而言,可能有些枯燥.所以这篇文章, ...

  7. 【量化】量化交易入门系列5:量化交易学习书籍推荐(一)

    作者:悠悠做神仙 来源: 恒生LIGHT云社区 量化交易入门系列,给大家介绍了关于量化交易的数据源获取.编程语言推荐.经典的交易策略,那么本篇将介绍一些比较经典的量化交易书籍. 书籍是人类智慧的结晶, ...

  8. 小白期货CTP程序化交易开发入门(一)--CTP开发基础

    接触CTP也才半年多,一边学习一边摸索,看到各大CTP的QQ群里,也都是在问一些很菜的问题,就简单总结和介绍下,今天主要是基础知识,即CTP程序的基础和开源的Demo版本: CTP交易接口是由:::: ...

  9. MT5 C++ CTP程序化交易国内期货对接 MT5 (Meta Trader5)客户端技术方案(1)

    用C++实现程序化交易系统,采用上期技术CTP接口(期货).(股票)XPT接口:就系统架构而言,还算相比较单纯,但是要全面考虑各方面细节做到精致稳定,还是有一些工程量了:Meta Trader 5客户 ...

最新文章

  1. 第四章 Joomla!扩展开发:前端开发
  2. 中原银行 Arthas 实践之路
  3. 高阶函数之函数作为参数使用 高阶函数之函数作为返回值使用 函数作为参数的练习
  4. 《乌合之众》读书笔记(part3)--在群体当中,个人的利益极少会成为强大的动因
  5. 木兰已出现,木兰已死?
  6. c++ 十进制、十六进制和BCD的相互转换
  7. INSERT INTO SELECT语句概述和示例
  8. 加入收藏 设为首页 代码:兼容IE和FireFox
  9. pyQT指定窗口截图
  10. 在外围类作用域之外引用外围类的静态成员,类型名和枚举名都要求有解析操作符...
  11. Python常用小技巧总结
  12. 关于opencv新版无法使用LSD算法的问题
  13. Counterfeit Dollar(找硬币)
  14. 题解 P3387 【【模板】缩点】
  15. Verilog——反相器
  16. 蓝牙时断时续很让人恼火,该如何解决(主要针对Windows 10)
  17. c语言计算两个整数的乘积
  18. 从0开始建设saas - 优化篇(session访问的问题)
  19. WINDOWS性能监控器的监视以及邮件预警配置
  20. 如何在 Kubernetes 集群中快速部署一个私有 Tailscale DERP 服务器

热门文章

  1. 解决:org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild
  2. GitHub 上标星 115k+ 的 Java 教程
  3. 技术类人员的职业发展方向
  4. typeof与keyof
  5. Unity3D小技巧
  6. Windows10怎么用计算机,Win10重置此电脑怎么用
  7. 云上数据泄露DLP技术有哪些变化
  8. 如何选一款适合企业的进销存软件?这款软件推荐给你
  9. android unlock,安卓手机解锁助手 (A Unlock Tool)
  10. C语言线程lock与unlock,谈谈线程同步Lock和unLock