从Tick到日线:迅投QMT xtquant历史数据获取参数配置实战指南
在量化交易领域,数据是策略的基石。迅投QMT平台凭借其强大的xtquant模块,为研究者提供了丰富的历史数据获取能力。但面对period、start_time、field_list等众多参数,不少用户常陷入"代码能跑但数据不对"的困境。本文将深入解析xtquant数据获取的核心参数配置,助你精准获取从高频tick到日线的各类市场数据。
1. 数据获取基础架构与核心函数
xtquant采用"先下载后使用"的双阶段数据获取模式。这种设计既保证了数据本地化的高效访问,又避免了重复下载的网络开销。理解这一架构是正确使用数据获取功能的前提。
核心函数主要分为两类:
数据下载函数:
download_history_data():单资产下载download_history_data2():多资产批量下载(支持回调)
数据获取函数:
get_market_data():双层字典结构返回get_market_data_ex():单层字典结构返回get_local_data():仅返回本地缓存数据
# 典型数据获取流程示例 xtdata.download_history_data( stock_code='600519.SH', period='1d', start_time='20230101', end_time='20231231' ) history_data = xtdata.get_market_data( stock_list=['600519.SH'], period='1d', start_time='20230101', end_time='20231231', field_list=['open','high','low','close','volume'] )2. period参数深度解析与配置模板
period参数决定了获取数据的周期类型,是影响数据粒度的关键设置。不同period值对应不同的数据场景,需要根据策略需求精准选择。
2.1 行情数据周期
| period值 | 说明 | 适用场景 | 时间格式 |
|---|---|---|---|
| tick | 逐笔成交 | 高频交易、订单流分析 | yyyymmddHHMMSS |
| 1m | 1分钟K线 | 日内交易、波动分析 | yyyymmdd或yyyymmddHHMMSS |
| 5m | 5分钟K线 | 短线交易 | yyyymmdd或yyyymmddHHMMSS |
| 1d | 日线数据 | 中长期策略 | yyyymmdd |
# 获取不同周期数据的配置示例 # 高频tick数据 xtdata.download_history_data2( stock_list=['000001.SZ'], period='tick', start_time='20240101093000', end_time='20240101150000' ) # 日线数据简化版 xtdata.download_history_data( stock_code='600036.SH', period='1d', start_time='20230101', end_time='20231231' )2.2 特色数据周期
除常规行情外,xtquant还支持多种特色数据获取,但需要注意权限控制:
- 资金流向数据:period='transactioncount1d'
- 订单流数据:period='orderflow1m'(需权限)
- 北向资金数据:period='northfinancechange1m'(资产代码必须为'FFFFFF.SGT')
提示:特色数据通常需要额外权限,使用前请确认账户已开通相应数据服务
3. 时间参数优化配置技巧
时间参数的正确配置直接影响数据获取的完整性和效率。以下是几个关键注意事项:
时间格式灵活处理:
- 日线数据可简化为'yyyymmdd'
- 日内数据需完整'yyyymmddHHMMSS'格式
特殊时间值含义:
- start_time="":从该资产最早历史数据开始
- end_time="":获取到最新可用数据
增量下载优化:
- incrementally=True可智能补全各资产数据
- 大幅减少重复下载的数据量
# 时间参数优化配置示例 # 获取某股票全部可用历史数据 xtdata.download_history_data( stock_code='601318.SH', period='1d', start_time="", end_time="" ) # 多资产增量下载 xtdata.download_history_data2( stock_list=['000001.SZ','600000.SH'], period='1d', start_time='20200101', end_time='20231231', incrementally=True )4. field_list字段选择与数据获取优化
field_list参数决定了返回数据包含的字段内容,合理配置可提升数据获取效率。不同period支持的基础字段有所不同:
4.1 常见行情字段
基础行情字段:
- open, high, low, close
- volume, amount
- pre_close, settle
扩展字段:
- turnover:换手率
- avg_price:均价
- trade_status:交易状态
# 字段选择优化示例 # 精简字段获取 basic_fields = ['open','high','low','close','volume'] full_fields = basic_fields + ['amount','turnover','trade_status'] data = xtdata.get_market_data_ex( stock_list=['600519.SH','000858.SZ'], period='1d', start_time='20230101', end_time='20230630', field_list=full_fields )4.2 数据获取函数选择指南
三种数据获取函数各有特点,应根据使用场景合理选择:
| 函数 | 数据结构 | 包含实时数据 | 性能 | 适用场景 |
|---|---|---|---|---|
| get_market_data | 双层dict | 是 | 中 | 需要字段级访问 |
| get_market_data_ex | 单层dict | 是 | 高 | 整体DataFrame处理 |
| get_local_data | 单层dict | 否 | 最高 | 纯历史数据分析 |
5. 高级配置与疑难问题解决
在实际使用中,常会遇到一些特殊场景和疑难问题。以下是几个典型问题的解决方案:
跨周期数据一致性:
- 不同period的数据可能存在时间戳对齐差异
- 建议统一使用
get_market_data_ex获取多周期数据
除权处理:
- dividend_type参数控制除权方式
- 'none':不复权
- 'front':前复权
- 'back':后复权
数据填充:
- fill_data=True自动填充缺失数据
- 对不连续交易品种(如期货)特别有用
# 高级配置示例:复权处理 adjusted_data = xtdata.get_market_data( stock_list=['600000.SH'], period='1d', start_time='20200101', end_time='20231231', dividend_type='front', fill_data=True )对于北向资金等特殊数据,除了正确设置period外,还需注意:
- 资产代码必须为'FFFFFF.SGT'
- 账户需具备相应数据权限
- 时间范围可能受限