通用

初始化

本页所有示例均假设已完成以下初始化:

from tigeropen.quote.quote_client import QuoteClient
from tigeropen.tiger_open_config import TigerOpenClientConfig

client_config = TigerOpenClientConfig(props_path='your_config_directory_path')
quote_client = QuoteClient(client_config)

配置文件路径说明详见准备工作。建议在模块顶层初始化一次 QuoteClient,程序其他位置通过 import 引用,避免重复实例化触发抢占行情设备访问权的限流。


QuoteClient 说明

QuoteClient(client_config, logger=None, is_grab_permission=True)

在 SDK 中发起行情接口调用时,需要使用到QuoteClientQuoteClient中封装了所有行情相关的 API 接口调用。

默认条件下,QuoteClient 会自动抢占行情设备访问权(is_grab_permission=True)。为避免多次实例化导致频繁抢占并触发限流,建议仅在一个模块的顶层创建 QuoteClient 实例,并在程序其他位置通过 import 引用这一实例,而不要在每个模块中重复实例化。如果需要自行控制此操作,可以把 is_grab_permission 设置为 False


抢占行情设备访问权

QuoteClient.grab_quote_permission()

说明

当同一账号在多台设备同时使用时,行情数据仅在主设备上返回。若需在其他设备上查看行情,需抢占行情设备访问权,将当前设备设为主设备;若不切换设备,则无需进行此操作。

设备访问权抢占流程:设备 A 持有行情设备访问权 → 设备 B 调用 grab_quote_permission() → 设备 B 成为主设备并取得设备访问权 → 设备 A 失去设备访问权,后续请求将返回 permission denied 错误。同一时间只有一台设备可持有行情设备访问权。此操作不会购买或授予新的行情权限。

注:Python SDK 2.0.9 及之后版本中,QuoteClient 在初始化时默认调用该接口并自动抢占行情设备访问权。如需关闭自动抢占,可设置 QuoteClient(client_config, is_grab_permission=False)

未取得行情设备访问权的设备请求实时行情时,将会得到如下错误:

code=4 msg=4000:permission denied(current device does not have permission)

参数

返回

list, 其中每一项为权限数据组成的 dict

dict 数据格式如下:

KEYVALUE
name行情权限名称
expire_at权限过期时间(-1为长期有效)

name 字段枚举值说明:

name 字段取值说明
usQuoteBasic美股 L1 行情权限
usStockQuote美股实时行情权限
usStockQuoteLv2Arca美股 L2 ARCA 行情权限
usStockQuoteLv2Totalview美股 L2 行情权限
usOptionQuote美股期权 L1 行情权限
usOptionQuoteLv2美股期权 L2 行情权限
usQuoteOtc美股 OTC 行情权限
usOvernight美股夜盘行情权限
hkStockQuoteLv2大陆地区用户赠送的港股 L2 权限
hkStockQuoteLv2Global非大陆地区用户购买的港股 L2 权限
CBOEFuturesQuoteLv2芝加哥期权交易所 L2 权限
EUREXFuturesQuoteLv2欧洲期货交易所 L2 权限
HKEXFuturesQuoteLv2香港期货交易所 L2 权限
SGXFuturesQuoteLv2新加坡交易所 L2 权限
OSEFuturesQuoteLv2大阪交易所 L2 权限
CMEFuturesQuoteLv2芝加哥商品交易所 L2 权限
COMEXFuturesQuoteLv2纽约商品交易所黄金 L2 权限
COMEXFuturesQuoteLv1纽约商品交易所黄金 L1 权限
NYMEXFuturesQuoteLv2纽约商品交易所能源 L2 权限
NYMEXFuturesQuoteLv1纽约商品交易所能源 L1 权限
futureQuote期货行情权限
aStockQuoteLv1A 股 L1 行情权限

权限内容可参考行情权限与限制

示例

permissions = quote_client.grab_quote_permission()
print(permissions)

返回示例

[{'name': 'usStockQuote', 'expire_at': 1698767999000}, {'name': 'usStockQuoteLv2Arca', 'expire_at': 1698767999000}, {'name': 'usStockQuoteLv2Totalview', 'expire_at': 1698767999000}, {'name': 'hkStockQuoteLv2', 'expire_at': 1698767999000}, {'name': 'usOptionQuote', 'expire_at': 1698767999000}]

请求频率

基础限流为 10 次/分钟


查询行情权限

QuoteClient.get_quote_permission()

说明

查询当前所拥有的行情权限

参数

返回

grab_quote_permission 抢占行情设备访问权

示例

permissions = quote_client.get_quote_permission()

返回示例

[{'name': 'usStockQuote', 'expire_at': 1698767999000}, {'name': 'usStockQuoteLv2Arca', 'expire_at': 1698767999000}, {'name': 'usStockQuoteLv2Totalview', 'expire_at': 1698767999000}, {'name': 'hkStockQuoteLv2', 'expire_at': 1698767999000}, {'name': 'usOptionQuote', 'expire_at': 1698767999000}]

请求频率

基础限流为 10 次/分钟


历史行情额度

QuoteClient.get_kline_quota(with_details=False)

说明

根据用户等级统计用户已使用和剩余可订阅的 symbol 个数(同一股票的不同期权只占用一个 symbol,其他规则可参考历史行情限制&订阅限制

参数

参数类型是否必填说明
with_detailsboolNo是否返回已请求的 symbol 详情,默认不返回

返回

list. 其中每一项如下

字段类型说明
usedint已使用数量
remainint剩余数量
methodstrapi 接口(kline:股票 K 线; future_kline:期货 K 线; option_kline:期权 K 线; history_timeline:股票历史分时)
detailslist[str]with_details=True 时返回已使用标的代码列表;否则为空数组
symbol_detailslist[dict]with_details=True 时返回已使用标的及最后拉取时间;否则为空数组

其中 symbol_details 每项如下:

字段类型说明
codestring股票代码
last_request_timestampstring最后一次拉取时间的毫秒时间戳字符串

示例

result = quote_client.get_kline_quota()
print(result)

返回示例

[ {
  "remain" : 200,
  "used" : 0,
  "method" : "kline",
  "details" : [ ],
  "symbol_details" : [ ]
}, {
  "remain" : 20,
  "used" : 0,
  "method" : "future_kline",
  "details" : [ ],
  "symbol_details" : [ ]
}, {
  "remain" : 197,
  "used" : 3,
  "method" : "option_kline",
  "details" : [ ],
  "symbol_details" : [ ]
} ]

请求频率

基础限流为 10 次/分钟


Did this page help you?