# 行情相关
# Q1:订阅失败
A: 订阅接口返回错误,有以下两类常见情况:
订阅额度不足:
订阅额度规则参见 订阅额度 & 历史 K 线额度
订阅权限不足:
支持订阅的行情权限见下表
市场 品种 支持订阅的行情权限 香港市场 股票 LV2, SF 期权 LV1, LV2 期货 LV1, LV2 美国市场 股票 LV1, LV2 期权 LV1 期货 LV2 A 股市场 股票 LV1 获取行情权限的方式参见 行情权限
注意:若账号拥有上述权限,但仍订阅失败,可能存在被其他终端 踢掉行情权限 的情况。
# Q2:反订阅失败
A: 订阅至少一分钟后才能反订阅。
# Q3:反订阅成功但没释放额度
A: 所有连接都对该行情反订阅,才会释放额度。
举例:A 连接和 B 连接都在订阅 HK.00700 的摆盘,当 A 连接反订阅后,由于 B 连接仍在调用腾讯的摆盘数据,因此 OpenD 的额度不会释放,直至所有连接都反订阅 HK.00700 的摆盘。
# Q4:订阅不足一分钟关闭脚本连接,会释放额度吗?
A: 不会。连接关闭后,订阅时长不足一分钟的标的类型,会在达到一分钟后才自动反订阅,并释放相应的订阅额度。
# Q5:请求限频的具体限制逻辑是怎样?
A: 30 秒内最多 n 次,是指第 1 次和第 n+1 次请求间隔需要大于 30 秒。
# Q6:自选股添加不上是什么原因?
A: 请先检查是否有超出上限,或者删除一部分自选。
# Q7:为什么 OpenAPI 端的美股报价和牛牛显示端的全美综合报价有不同?
A: 由于美股交易分散在很多家交易所,富途有提供两种美股基本报价行情,一种是 Nasdaq Basic(Nasdaq 交易所的报价),另一种是全美综合报价(全美13家交易所的报价)。而 OpenAPI 的美股正股行情目前仅支持通过行情卡购买的方式获取 Nasdaq Basic,不支持全美综合报价。因此,如果您同时购买了显示端的全美综合报价行情卡,和仅用于 OpenAPI 的 Nasdaq Basic 行情卡,确实有可能出现牛牛显示端和 OpenAPI 端的报价差异。
# Q8:OpenAPI 行情卡在哪里购买?
# Q9:为什么有时候,获取实时数据的 get 接口响应比较慢?
A: 因为获取实时数据的 get 接口需要先订阅,并依赖后台给 OpenD 的推送。如果用户刚订阅就立刻用 get 接口请求,OpenD 有可能尚未收到后台推送。为了防止这种情况的发生,get 接口内置了等待逻辑,3 秒内收到推送会立刻返回给脚本,超过 3 秒仍未收到后台推送,才会给脚本返回空数据。
涉及的 get 接口包括:get_rt_ticker、get_rt_data、get_cur_kline、get_order_book、get_broker_queue、get_stock_quote。因此,当发现获取实时数据的 get 接口响应比较慢时,可以先检查一下是否是无成交数据的原因。
# Q10:购买 OpenAPI 美股 Nasdaq Basic 行情卡后,可以获取哪些数据?
A: Nasdaq Basic 行情卡购买激活后,可以获取的品类涵盖 Nasdaq、NYSE、NYSE MKT 交易所上市证券(包括美股正股和 ETF,不包括美股期货和美股期权)。
支持的数据接口包括:快照,历史 K 线,实时逐笔订阅,实时一档摆盘订阅,实时 K 线订阅,实时报价订阅,实时分时订阅,到价提醒。
# Q11:各个行情品类的摆盘支持多少档?
A:
行情品类 | BMP | LV1 | LV2 | SF |
---|---|---|---|---|
港股(含正股、窝轮、牛熊、界内证) | 0 | / | 10 | 全盘+千笔明细 |
港股期权期货 | 0 | 1 | 10 | / |
美股(含 ETF) | / | 1 | 40笔明细(档数不固定) | / |
美股期权 | / | 1 | / | / |
美股期货 | / | / | 40笔明细(档数不固定) | / |
A 股 | / | 5 | / | / |
# Q12:为什么我购买激活了行情卡之后,OpenD 仍然没有行情权限?
A:
- 由于 OpenAPI 的行情权限跟 APP 的行情权限不完全一样,部分行情卡仅适用于 APP 端。请先确认您所购买的行情卡是否是 OpenD 适用的。
我们已将 OpenAPI 适用的 所有 行情卡列在《权限与限制》一节,请点击 这里 查看。 - 行情卡购买激活成功后,是立即生效的。请 重新启动 OpenD 后,再次查看权限状态。
# Q13:如何通过订阅接口获取实时行情?
第一步:订阅
将标的的代码和数据类型传入 订阅接口,完成订阅。
订阅接口支持了实时报价、实时摆盘、实时逐笔、实时分时、实时 K 线、实时经纪队列数据的获取。订阅成功后,OpenD 会持续收到富途服务器的实时数据推送。
注意:订阅额度会根据您的总资产、交易笔数和交易量,来进行分配,具体规则参见 订阅额度 & 历史 K 线额度。所以,如果您的订阅额度不足,可以先检查一下是否有无用的订阅在占用额度,及时 反订阅 即可释放已占用的订阅额度。
第二步:取数据
如何将订阅推送的数据从 OpenD 取回脚本呢?我们提供了如下两种方式:
方式 1:实时数据回调
设置相应的回调函数,来异步处理 OpenD 收到的数据推送。
设置好回调函数后,OpenD 会将收到的实时数据,立即推给脚本的回调函数进行处理。
如果所订阅的标的比较活跃,此时的推送数据可能数据量较大且频率较高。如果您希望适当降低 OpenD 给脚本的推送频率,建议在 OpenD 启动参数 中配置 API 推送频率(qot_push_frequency
)。
方式 1 涉及的接口包括:实时报价回调、实时摆盘回调、实时 K 线回调、实时分时回调、实时逐笔回调、实时经纪队列回调。
方式 2:获取实时数据
通过获取实时数据接口,可以将 OpenD 收到的最新的数据,取回脚本。这种方式更加灵活,脚本不需要处理海量的推送。只要 OpenD 在持续接收富途服务器的推送,脚本可以随用随取,不用不取。
由于是从 OpenD 接收的推送数据中取,所以这类接口没有频率限制。
方式 2 涉及的接口包括:获取实时报价、获取实时摆盘、获取实时 K 线、获取实时分时、获取实时逐笔、获取实时经纪队列。
# Q14:各个市场状态对应什么时间段?
A:
市场 | 品类 | 市场状态 | 时间段(当地时间) |
---|---|---|---|
香港市场 | 证券类产品(含股票、ETFs、窝轮、牛熊、界内证) | * NONE:无交易 | CST 08:55 - 09:00 |
* ACTION:盘前竞价 | CST 09:00 - 09:20 | ||
* WAITING_OPEN:等待开盘 | CST 09:20 - 09:30 | ||
* MORNING:早盘 | CST 09:30 - 12:00 | ||
* REST: 午间休市 | CST 12:00 - 13:00 | ||
* AFTERNOON:午盘 | CST 13:00 - 16:00 | ||
* HK_CAS:港股盘后竞价(港股市场增加 CAS 机制对应的市场状态) | CST 16:00 - 16:08 | ||
* CLOSED:收盘 | CST 16:08 - 08:55(T+1) | ||
期权、期货(仅日市) | * NONE:期权待开盘 | CST 08:55 - 09:30 | |
* MORNING:早盘 | CST 09:30 - 12:00 | ||
* REST: 午间休市 | CST 12:00 - 13:00 | ||
* AFTERNOON:午盘 | CST 13:00 - 16:00 | ||
* CLOSED:收盘 | CST 16:00 - 08:55(T+1) | ||
期货(日夜市) | * FUTURE_DAY_WAIT_FOR_OPEN:期货待开盘 | 不同品种交易时间不同 | |
* NIGHT_OPEN: 夜市交易时段 | |||
* NIGHT_END:夜市收盘 | |||
* FUTURE_DAY_WAIT_FOR_OPEN:期货待开盘 | |||
* FUTURE_DAY_OPEN:日市交易时段 | |||
* FUTURE_DAY_CLOSE:日市收盘 | |||
美国市场 | 证券类产品(含股票、ETFs) | * PRE_MARKET_BEGIN:美股盘前交易时段 | EST 04:00 - 09:30 |
* AFTERNOON:美股持续交易时段 | EST 09:30 - 16:00 | ||
* AFTER_HOURS_BEGIN:美股盘后交易时段 | EST 16:00 - 20:00 | ||
* AFTER_HOURS_END:美股收盘 | EST 20:00 - 04:00(T+1) | ||
期权 | * NONE:期权待开盘 | 不同品种交易时间不同 | |
* REST:美指期权午间休市 | |||
* AFTERNOON:美股持续交易时段 | |||
* TRADE_AT_LAST:美指期权盘尾交易时段 | |||
* NIGHT:美指期权夜市交易时段 | |||
* CLOSED:收盘 | |||
期货 | * FUTURE_SWITCH_DATE:美期待开盘 | 不同品种交易时间不同 | |
* FUTURE_OPEN:美期交易时段 | |||
* FUTURE_BREAK:美期中盘休息 | |||
* FUTRUE_BREAK_OVER:美期休息后交易时段 | |||
* FUTURE_CLOSE:美期收盘 | |||
A股市场 | 证券类产品(含股票、ETFs) | * NONE:无交易 | CST 08:55 - 09:15 |
* Auction:盘前竞价 | CST 09:15 - 09:25 | ||
* WAITING_OPEN:等待开盘 | CST 09:25 - 09:30 | ||
* MORNING:早盘 | CST 09:30 - 11:30 | ||
* REST:午间休市 | CST 11:30 - 13:00 | ||
* AFTERNOON:午盘 | CST 13:00 - 15:00 | ||
* CLOSED:收盘 | CST 15:00 - 08:55(T+1) | ||
新加坡市场 | 期货 | * FUTURE_DAY_WAIT_FOR_OPEN:期货待开盘 | 不同品种交易时间不同 |
* NIGHT_OPEN:夜市交易时段 | |||
* NIGHT_END:夜市收盘 | |||
* FUTURE_DAY_OPEN:日市交易时段 | |||
* FUTURE_DAY_CLOSE:日市收盘 | |||
日本市场 | 期货 | * FUTURE_DAY_WAIT_FOR_OPEN:期货待开盘 | JST 16:25(T-1)- 16:30(T-1) |
* NIGHT_OPEN:夜市交易时段 | JST 16:30(T-1) - 05:30 | ||
* NIGHT_END:夜市收盘 | JST 05:30 - 08:45 | ||
* FUTURE_DAY_OPEN:日市交易时段 | JST 08:45 - 15:15 | ||
* FUTURE_DAY_CLOSE:日市收盘 | JST 15:15 - 16:25 |
# Q15:接口参数股票代码的格式
A:
使用不同编程语言的用户,需要的股票代码的格式不同:
Python 用户
股票代码 code 格式:行情市场.代码
。
例如:腾讯控股,参数 code 传入'HK.00700'。非 Python 用户
股票结构参见 Security。
例如:腾讯控股,参数 market 传入 QotMarket_HK_Security,参数 code 传入'00700'。
查询方式:
通过 APP 查看代码和行情市场:行情 > 自选 > 全部。
行情市场定义,请参考 这里。
# Q16:复权因子相关
A:
# 概述
所谓 复权 就是对股价和成交量进行权息修复,按照股票的实际涨跌绘制股价走势图,并把成交量调整为相同的股本口径。
公司行动(如:拆股、合股、送股、转增股、配股、增发股、分红)均可能对股价产生影响,而复权计算可对量价进行调整,剔除公司行动的影响,保持股价走势的连续性。
# 名词解释
- 公司行动:上市公司进行一些股权、股票等影响公司股价和股东持仓变化的行为。
- 前复权:保持现有的股价不变,以当前的股价为基准,对以前的股价进行复权计算。
- 后复权:保持先前的股价不变,以过去的股价为基准,对以后的股价进行复权计算。
- 复权因子:即权息修复比例,用于计算复权后的价格及持仓数量。
- 除权除息日:即股权登记日下一个交易日。在股票的除权除息日,证券交易所都要计算出股票的除权除息价,以作为股民在除权除息日开盘的参考。其意义是股票股利分配给股东的日期。
# 复权方法
主流的复权计算方法分为两种:事件法和连乘法;而 OpenAPI 针对不同市场使用不同的计算方法。
- 事件复权法:通过还原除权除息的各类事件进行复权;存在两个复权因子(复权因子 A 和 复权因子 B),复权因子 B 主要调整现金分红对股价的影响,而复权因子 A 调整其他公司行动对股价的影响。
- 连乘复权法:通过复权因子连乘的方式进行复权,只保留 复权因子 A(或将 复权因子 B 置为0),复权因子 A 为 除权除息日前收盘价/该日经权息调整后的前收盘价。
提示
- OpenAPI 对美股前复权使用连乘法,即将 复权因子 B 置为0。
- OpenAPI 对除美股以外的标的(A股、港股、新加坡股票等)及美股后复权使用事件法。
# 计算公式
# 单次复权
- 前复权:
前复权价格 = 不复权价格 × 前复权因子 A + 前复权因子 B - 后复权:
后复权价格 = 不复权价格 × 后复权因子 A + 后复权因子 B
# 多次复权
前复权:按照时间顺序,筛选出大于计算日期的复权因子,优先使用时间较早的复权因子进行复权计算。以两次复权为例:
后复权:按照时间倒序,筛选出小于等于计算日期的复权因子,优先使用时间较晚的复权因子进行复权计算。以两次复权为例:
# 示例
# 单次前复权示例
以牧原股份为例:
- 筛选复权因子如下:
除权除息日 | 股票代码 | 方案说明 | 前复权因子 A | 前复权因子 B |
---|---|---|---|---|
2021/06/03 | SZ.002714 | 10转4.0股派14.61元(含税) | 0.71429 | -1.04357 |
- 不复权数据如下:
日期 | 股票代码 | 不复权收盘价 |
---|---|---|
2021/06/02 | SZ.002714 | 93.11 |
2021/06/03 | SZ.002714 | 66.25 |
- 前复权数据如下:
日期 | 股票代码 | 前复权收盘价 |
---|---|---|
2021/06/02 | SZ.002714 | 65.4639719 |
2021/06/03 | SZ.002714 | 66.25 |
前复权数据计算方法:
牧原股份在 2021/06/03 进行拆股及现金分红行动(10转4.0股派14.61元),根据前复权计算公式对 2021/06/02 的收盘价进行调整计算,则:前复权价格(65.4639719) = 不复权价格(93.11) × 前复权因子 A(0.71429) + 前复权因子 B(-1.04357)
# 多次后复权示例
接上一个例子,计算牧原股份在 2021/06/02 的后复权价格:
- 筛选复权因子如下:
除权除息日 | 股票代码 | 方案说明 | 后复权因子 A | 后复权因子 B |
---|---|---|---|---|
2014/07/04 | SZ.002714 | 10派2.34元(含税) | 1 | 0.234 |
2015-06-10 | SZ.002714 | 10转10.0股派0.61元(含税) | 2 | 0.061 |
2016-07-08 | SZ.002714 | 10转10.0股派3.53元(含税) | 2 | 0.353 |
2017-07-11 | SZ.002714 | 10派6.91元(含税) | 1 | 0.691 |
2018-07-03 | SZ.002714 | 10转8.0股派6.9元(含税) | 1.8 | 0.69 |
2019-07-04 | SZ.002714 | 10派0.5元(含税) | 1 | 0.05 |
2020-06-04 | SZ.002714 | 10转7.0股派5.5元(含税) | 1.7 | 0.55 |
- 不复权数据如下:
日期 | 股票代码 | 不复权收盘价 |
---|---|---|
2021/06/02 | SZ.002714 | 93.11 |
- 后复权数据如下:
日期 | 股票代码 | 后复权收盘价 |
---|---|---|
2021/06/02 | SZ.002714 | 1150.5114 |
后复权数据计算方法:
为了计算牧原股份在 2021/06/02 的后复权价格,需要将早于 2021/06/02 的复权事件进行一一复权,得到最后的后复权价格,具体计算如下: