行情与数据获取

本页按任务列出常用行情函数。右侧目录直接显示函数名;点击函数标题下方的链接,可进入对应独立 API 页面查看完整参数、返回说明、运行环境和官方来源。

历史与 K 线数据

ContextInfo.get_market_data_ex

推荐用于获取单个或多个证券的 K 线、Tick 和历史行情数据,可指定字段、周期、起止时间、数量及复权方式。

调用语法

ContextInfo.get_market_data_ex(
    fields=[], stock_code=[], period='follow',
    start_time='', end_time='', count=-1,
    dividend_type='follow', fill_data=True, subscribe=True,
)

关键参数

参数 类型 说明
fields list 数据字段,如 openhighlowclosevolumeamount
stock_code list[str] 合约代码列表,如 ['000001.SZ', '600000.SH']
period str tick1m5m15m1h1d1wl2quote
start_time str 开始时间,格式为 YYYYMMDDYYYYMMDDhhmmss
end_time str 结束时间;空字符串表示截止到最新数据
count int 返回的数据条数,-1 表示按时间范围获取
dividend_type str nonefrontbackfront_ratioback_ratio
fill_data bool 是否填充缺失数据
subscribe bool 是否同时订阅行情;只读本地数据时设为 False

返回值

返回以证券代码为键的 dict。每个证券通常对应一个 pandas.DataFrame,索引为时间,列为所请求字段。

使用注意

  • 不建议在 init 中调用;在 init 中只能读取本地已有数据。
  • 历史数据为空时,先检查对应证券和基础周期是否已下载。
  • Level-2 周期需要对应行情权限。
  • subscribe=False 不会发起订阅,只读取本地已有数据。
def handlebar(ContextInfo):
    data = ContextInfo.get_market_data_ex(
        fields=['open', 'high', 'low', 'close', 'volume'],
        stock_code=['000001.SZ'],
        period='1d',
        count=20,
        dividend_type='front',
        fill_data=True,
        subscribe=False,
    )
    print(data)

查看 ContextInfo.get_market_data_ex 完整参数与返回说明

download_history_data

将指定证券、周期和时间范围的历史行情下载到本地。历史数据为空时,应先确认客户端已完成数据下载。

调用语法与参数

download_history_data(stockcode, period, startTime, endTime)
参数 类型 说明
stockcode str 证券代码,如 600000.SH
period str 基础周期支持 tick1m5m1d
startTime str 起始时间,可为空
endTime str 结束时间,可为空

返回值为 None。获取 15m 等合成周期历史数据时,应下载其基础周期,例如 15m5m 合成。

download_history_data('000001.SZ', '1d', '20240101', '20241231')

查看 download_history_data 完整说明

ContextInfo.get_history_data(不推荐)

旧版历史行情接口。官方目录已标记为“不推荐”,新代码优先使用 ContextInfo.get_market_data_ex

调用语法与返回值

ContextInfo.get_history_data(len, period, field, dividend_type=0, skip_paused=True)

调用前需要先通过 ContextInfo.set_universe() 设置股票池。返回 dict,键为证券代码,值为按时间从早到晚排列的行情列表。

history = ContextInfo.get_history_data(20, '1d', 'close', 0, True)

查看 ContextInfo.get_history_data 兼容说明

实时与全推行情

ContextInfo.get_full_tick

主动获取指定证券的最新全推快照,适合读取最新价、成交量和买卖盘等实时字段。

调用语法与返回值

ContextInfo.get_full_tick(stock_code=[])

stock_code 为证券代码列表。返回外层以证券代码为键的 dict,每个值为该证券最新 Tick 字段字典。

该函数不能用于回测,只能获取最新分笔,不能获取历史分笔。

ticks = ContextInfo.get_full_tick(['000001.SZ', '600000.SH'])
print(ticks.get('000001.SZ'))

查看 ContextInfo.get_full_tick 完整字段说明

ContextInfo.subscribe_whole_quote

订阅证券列表的全推行情。适合需要行情变化后持续处理数据的场景;不再使用时应取消订阅。

调用语法与返回值

ContextInfo.subscribe_whole_quote(code_list, callback=None)

code_list 可以是市场列表(如 ['SH', 'SZ'])或证券代码列表。callback 接收增量推送数据。函数返回整数订阅号,后续用于取消订阅。

def on_quote(data):
    print(data)

subscription = ContextInfo.subscribe_whole_quote(
    ['000001.SZ', '600000.SH'],
    on_quote,
)

查看 ContextInfo.subscribe_whole_quote 完整说明

ContextInfo.unsubscribe_quote

根据订阅返回的标识取消行情订阅,避免策略停止使用数据后仍保留无效订阅。

调用语法

ContextInfo.unsubscribe_quote(subId)

subId 是订阅函数返回的整数订阅号。应先判断订阅号有效,再执行取消操作。

ContextInfo.unsubscribe_quote(subscription)

查看 ContextInfo.unsubscribe_quote 完整说明

证券与板块数据

ContextInfo.get_stock_list_in_sector

获取指定板块的成分证券列表,可用于建立股票池或批量请求行情。

调用语法与返回值

ContextInfo.get_stock_list_in_sector(sectorname, realtime)

sectorname 是客户端板块名称,支持官方板块与自定义板块。返回证券代码列表,例如 ['000001.SZ', '600000.SH']。当前官方原型列出 realtime 参数,但官方示例省略了该参数,可能存在客户端版本差异;使用时应以实际版本为准。官方说明要求在 after_inithandlebar 中调用。

stocks = ContextInfo.get_stock_list_in_sector('沪深300', True)
print(stocks[:10])

查看 ContextInfo.get_stock_list_in_sector 完整说明

选择函数

需求 推荐函数
获取历史 K 线或多证券行情 ContextInfo.get_market_data_ex
获取最新全推快照 ContextInfo.get_full_tick
持续接收全推行情 ContextInfo.subscribe_whole_quote
取消行情订阅 ContextInfo.unsubscribe_quote
下载本地历史数据 download_history_data
获取板块成分 ContextInfo.get_stock_list_in_sector

版本、权限和不同运行模式的限制,请以对应函数独立页面中的官方说明为准。