乐于分享
好东西不私藏

miniQMT:写策略一直翻文档?这一份 xtdata 速查表收藏夹置顶就够了

miniQMT:写策略一直翻文档?这一份 xtdata 速查表收藏夹置顶就够了

我为什么写这份速查表

写 miniQMT 策略最浪费时间的不是写代码,是查接口

  • 周期参数到底怎么写?'1d' 还是 'day'

  • 复权类型有几种?前复权后复权字符串叫啥?

  • 板块名称是中文还是代码?

  • get_full_tick 返回的字段长啥样?

每次都要翻官方文档、翻 6.1-6.4 节代码——严重打断思路

这一节我把所有 xtdata 高频接口+参数+字段一页全收录,强烈建议收藏 → 公众号置顶 → 写代码时随时翻


一、连接管理

xtdata 用之前必须先连接。不连接调任何接口都会失败。

函数 说明 返回值
connect() 连接行情服务器
disconnect() 断开连接
fromxtquantimportxtdata

xtdata.connect()       # 必须!
# ... 业务代码 ...
xtdata.disconnect()    # 程序退出前调一下

踩坑提示

  • ❌ 没 connect 就调 get_market_data → 数据为 None,新手最常见的坑

  • ✅ 一般 connect() 一次就够了,多次调用没害但没必要


二、行情订阅 —— 让数据自己来找你

函数 说明 关键参数
subscribe_quote(stock_code, period, callback) 订阅单股 period:tick / 1m / 5m / 1d
subscribe_whole_quote(code_list, callback) 订阅多股 callback 接收所有 tick
unsubscribe_quote(stock_code) 取消订阅

周期参数(period)速查

说明 用途
'tick' 分笔行情 高频盯盘、毫秒级监控
'1m' 1 分钟 K 短线策略
'5m' 5 分钟 K 日内择时
'15m' 15 分钟 K 日内择时
'30m' 30 分钟 K 中线
'1h' 1 小时 K 中线
'1d' 日 K 主流策略
'1w' 周 K 长线
'1mon' 月 K 长线
# 订阅 Tick
defon_tick(data):
print(data)

xtdata.subscribe_quote('600000.SH''tick'on_tick)

# 订阅多股
xtdata.subscribe_whole_quote(['600000.SH''000001.SZ'], on_tick)

实战经验:单进程订阅数量上限大约 50 只——再多容易丢数据。用全推订阅替代(参考第 3.6 节)。


三、实时数据获取

实盘最高频的几个接口,一定要熟到背下来

函数 说明 返回结构
get_full_tick(code_list) 拿一组股票的最新 Tick {code: tick_dict}
get_market_data(field_list, stock_list, period, ...) 拿历史/实时行情 dict
get_l2_quote(stock_code) Level2 五档+委买委卖明细 dict
get_l2_order(stock_code) Level2 逐笔委托 dict
get_l2_transaction(stock_code) Level2 逐笔成交 dict

get_full_tick 返回字段

tick = xtdata.get_full_tick(['600000.SH'])['600000.SH']
# {
#   'time': 1710398400000,    # 时间戳(毫秒)
#   'lastPrice': 10.05,        # 最新价
#   'open': 10.00, 'high': 10.10, 'low': 9.95,
#   'lastClose': 9.98,
#   'amount': 1234567.0, 'volume': 123456,
#   'bidPrice': [10.05, 10.04, 10.03, 10.02, 10.01],
#   'bidVol':   [100, 200, 150, 300, 250],
#   'askPrice': [10.06, 10.07, 10.08, 10.09, 10.10],
#   'askVol':   [80, 120, 90, 200, 180],
# }

实盘里 90% 场景就这一个接口够用。记牢字段名


四、历史数据接口

历史 K 线主要靠这两个:

函数 说明 备注
get_market_data_ex(...) 增强版,支持复权、填充、count 推荐用这个
download_history_data(stock_code, period, start, end) 下载历史数据到本地 第一次必须先下载
download_history_data2(stock_list, period, start, end, callback) 批量下载 支持进度回调

复权类型(dividend_type)

说明 何时用
'none' 不复权 看真实历史价
'front' 前复权 回测推荐
'back' 后复权 计算长期收益
'front_ratio' 等比前复权 特殊场景
'back_ratio' 等比后复权 特殊场景
data = xtdata.get_market_data_ex(
field_list=[],
stock_list=['600000.SH'],
period='1d',
start_time='20240101',
end_time='',
count=-1,
dividend_type='front',  # 推荐前复权
fill_data=True,
)
df = data['600000.SH']
print(df.tail())

踩坑提示

  • ❌ 不下载就 get_market_data_ex → 大概率为空

  • ✅ 标准三步:下载 → 获取 → 用


五、基础信息接口

写策略离不开”这只股票是什么板块/涨停价多少/合约规则”这类查询。

函数 说明
get_stock_list_in_sector(sector_name) 拿板块成分股
get_instrument_detail(stock_code) 拿合约详情(涨跌停价/最小变动)
get_trading_dates(market, start, end) 拿交易日历
get_instrument_type(stock_code) 拿证券类型

常用板块名称

板块 用途
'沪深A股' 全市场扫描
'上证A股' / '深证A股' 单市场
'创业板' / '科创板' 风险偏好筛选
'沪深指数' 指数监控
'沪深ETF' ETF 策略
# 沪深 A 股
stocks = xtdata.get_stock_list_in_sector('沪深A股')
print(f"A 股数量: {len(stocks)}")

# 涨停价
detail = xtdata.get_instrument_detail('600000.SH')
print(f"涨停价: {detail['UpStopPrice']}, 跌停价: {detail['DownStopPrice']}")

# 交易日历
dates = xtdata.get_trading_dates('SH''20240101''20240301')

六、财务数据接口

回测/选股策略经常需要财务数据:

函数 说明
download_financial_data(stock_list, table_list) 下载财务数据
get_financial_data(stock_list, table_list, start, end) 获取财务数据

财务报表类型(table_list)

表名 说明
'Balance' 资产负债表
'Income' 利润表
'CashFlow' 现金流量表
'Capital' 股本结构
'Holdernum' 股东人数
'Top10holder' 十大股东
'Top10flowholder' 十大流通股东
'Pershareindex' 每股指标(EPS/BPS/ROE 在这
# 第一步:下载(首次必做)
xtdata.download_financial_data(
stock_list=['600000.SH'],
table_list=['Balance''Income''Pershareindex'],
)

# 第二步:获取
fin = xtdata.get_financial_data(
stock_list=['600000.SH'],
table_list=['Pershareindex'],
start_time='20230101'end_time='',
)

七、5 个最高频的代码模板

直接抄到项目里:

1. 拿股票最新价

defget_latest_price(stock_code):
tick = xtdata.get_full_tick([stock_code])
returntick.get(stock_code, {}).get('lastPrice')

2. 拿涨跌停价

defget_limit_prices(stock_code):
detail = xtdata.get_instrument_detail(stock_code)
return {
'up'detail['UpStopPrice'],
'down'detail['DownStopPrice'],
    }

3. 判断是否在交易时段

defis_trading_time():
fromdatetimeimportdatetimetime
now = datetime.now().time()
return (time(930<now<time(1130)
ortime(130<now<time(150))

4. 拿前复权日 K(回测)

defget_kline(codedays=200):
data = xtdata.get_market_data_ex(
field_list=[], stock_list=[code], period='1d',
start_time=''end_time=''count=days,
dividend_type='front'fill_data=True,
    )
returndata[code]

5. 计算简单 MA

importnumpyasnp

defget_ma(codeperiod='1d'n=20):
data = xtdata.get_market_data_ex(
field_list=['close'], stock_list=[code], period=period,
count=n+5dividend_type='front',
    )
closes = data[code]['close']
iflen(closes<n:
returnNone
returnfloat(np.mean(closes[-n:]))

八、5 个常见坑(自查清单)

打勾自检你是否踩过:

  • 没 connect 就调接口 → 数据为 None
  • 没 download_history_data 就调 get_market_data_ex → 数据为空
  • 周期参数写错('day' ❌ → '1d' ✅)
  • 复权类型写错('qfq' ❌ → 'front' ✅)
  • 板块名称写英文('A股' ❌ → '沪深A股' ✅)

这五个坑能踩 80% 的新手——记牢就赢一半。


九、注意事项总结

注意点 说明
连接是前提 connect() 必须最先调
订阅有上限 单进程大约 50 只,多了用全推
历史数据要先下载 否则获取为空
Level2 要权限 没开通就别调 L2 接口
财务数据要先下载 download_financial_data 后才能 get

写在最后

写策略时别再翻官方文档了。

把这一篇收藏到公众号置顶,写代码时直接搜关键词——比翻文档快 10 倍。


下一篇预告

行情速查表搞定了,下面是交易接口——

下一篇 7.2 xttrader API 速查表:

  • 下单接口 order_stock 全参数详解

  • 撤单 / 查询 / 回调 完整对照表

  • 委托类型、价格类型、状态码全解释

  • 同步 vs 异步差异表


留个互动给你

你查 xtdata 文档最常找的是哪个接口?

评论区聊聊——你最容易记错的参数是哪一个?


如果这一篇对你有帮助

  • 点个 在看 让我知道速查表内容你需要 👍

  • 转给一个还在翻文档的朋友 🔁

  • 关注 + 星标 ⭐ 第一时间看下一篇


风险提示:本文仅作技术分享与教学用途,不构成任何投资建议。量化交易有风险,实盘需谨慎。