- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
本指南以 AIQuant 智投开源仓库中 Tushare 数据源 Skill 包的期货数据参考文档为核心,系统讲解ft_mins历史分钟行情接口的调用方式、参数语义、返回结构与数据样例,并结合仓库中的合约信息、主力合约映射、实时分钟等配套接口与源码示例,给出可落地的分页拉取、主力合约分钟序列构建与数据标准化方案。读完本文,你将能够独立使用 Tushare Pro 获取超过 10 年历史的期货分钟级行情,并为其接入量化回测或实盘监控数据管线。
接口概览:ft_mins 能做什么
ft_mins是 Tushare Pro 提供的历史分钟行情接口,用于获取全市场期货合约的分钟级 K 线数据。从仓库 SKILL.md 中的接口列表可见,该接口在 Tushare Pro 中的 ID 为 313,归属于"期货数据"分类,描述为"获取全市场期货合约分钟数据,支持 1min/5min/15min/30min/60min 行情,提供 Python SDK 和 http Restful API 两种方式"。
该接口的核心约束与能力如下(来源于本仓库 历史分钟行情.md):
- 支持频度:1min / 5min / 15min / 30min / 60min 五种分钟周期。
- 数据深度:本接口可以提供超过10 年历史分钟数据。
- 单次限量:单次最大返回8000 行数据,可通过期货合约代码和时间循环分页获取全部历史。
- 权限要求:120 积分可以调取 2 次接口查看数据,正式使用需满足更高积分权限。
注意:如果需要主力合约的分钟数据,需要先通过主力合约映射接口获取对应的合约代码,再按合约代码提取分钟行情——这一点在接口描述中已明确提示,下文将给出完整实现。
输入参数详解
调用ft_mins接口需要传入以下参数(均来自原文档参数表):
| 名称 | 类型 | 必选 | 描述 |
|---|---|---|---|
| ts_code | str | Y | 合约代码,例如CU2310.SHF |
| freq | str | Y | 分钟频度(1min/5min/15min/30min/60min) |
| start_date | datetime | N | 开始日期,格式:2023-08-25 09:00:00 |
| end_date | datetime | N | 结束时间,格式:2023-08-25 19:00:00 |
其中ts_code虽然参数表中描述为"股票代码",但在期货接口语境下实际传入的是期货合约代码,格式为"合约品种+月份+交易所后缀",例如铜合约CU2310.SHF(上期所 SHFE)。完整合约列表可通过同目录的 合约信息.md 中的fut_basic接口获取,其返回字段包括ts_code(合约代码)、exchange(交易所)、fut_code(合约产品代码)、list_date(上市日期)、delist_date(最后交易日期)等。
freq 参数说明
| freq | 说明 |
|---|---|
| 1min | 1 分钟 |
| 5min | 5 分钟 |
| 15min | 15 分钟 |
| 30min | 30 分钟 |
| 60min | 60 分钟 |
输出参数详解
接口返回的每一行数据包含如下字段(默认全部显示):
| 名称 | 类型 | 默认显示 | 描述 |
|---|---|---|---|
| ts_code | str | Y | 合约代码 |
| trade_time | str | Y | 交易时间 |
| open | float | Y | 开盘价(元) |
| close | float | Y | 收盘价(元) |
| high | float | Y | 最高价(元) |
| low | float | Y | 最低价(元) |
| vol | int | Y | 成交量(手) |
| amount | float | Y | 成交金额(元) |
| oi | float | Y | 持仓量(手) |
相比日线接口fut_daily(见 日线行情.md,含pre_close、pre_settle、settle、change1、change2等结算相关字段),分钟接口更侧重盘内高频 OHLCV 与持仓变化,其中oi(持仓量)是期货数据分析中的关键字段,可用于观察资金进出与移仓换月节奏。
快速上手:Python SDK 调用
环境准备
根据 SKILL.md 的指引,使用前需要:
- 安装 Python 3.7+ 环境,并安装 tushare 依赖包(推荐使用清华 PyPI 镜像):
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple- 在 Tushare 官网注册账号获取 token,并配置环境变量:
export TUSHARE_TOKEN=your_token仓库中的脚本 stock_data_example.py 给出了标准的 token 读取与 pro 接口初始化模式:token = os.getenv('TUSHARE_TOKEN') or ts.get_token(),再通过ts.pro_api(token)创建接口实例。
基础调用
原文档给出的接口用法示例如下:
pro = ts.pro_api() df = pro.ft_mins(ts_code='CU2310.SHF', freq='1min', start_date='2023-08-25 09:00:00', end_date='2023-08-25 19:00:00')调用返回pandas.DataFrame,字段顺序与输出参数表一致。需要说明的是,原文档示例中pro.df = pro.ft_mins(...)为笔误,正确写法为df = pro.ft_mins(...)。
数据样例
以沪铜 CU2310 合约 2023-08-25 一个交易日的 1 分钟数据为例,返回结构如下(原文档数据样例,共 225 行 × 9 列):
ts_code trade_time open close high low vol amount oi 0 CU2310.SHF 2023-08-25 15:00:00 68920.0 68930.0 68940.0 68910.0 373.0 128543250.0 146733.0 1 CU2310.SHF 2023-08-25 14:59:00 68910.0 68920.0 68930.0 68910.0 300.0 103379650.0 146751.0 2 CU2310.SHF 2023-08-25 14:58:00 68930.0 68920.0 68940.0 68910.0 207.0 71340500.0 146777.0 ... 224 CU2310.SHF 2023-08-25 09:01:00 68680.0 68710.0 68740.0 68680.0 868.0 298156350.0 145178.0 [225 rows x 9 columns]数据按交易时间倒序排列(15:00 在前、09:01 在后),如需按时间正序分析,可自行sort_values("trade_time")。同时注意期货日盘收盘后(15:00 之后)通常还有夜盘交易时段,示例中end_date取到 19:00 即为覆盖夜盘开始的时段。
实战:分页拉取超过 10 年的全历史分钟数据
由于单次调用最多返回 8000 行,而 1 分钟数据一天(含夜盘)约 225 行(见上方样例[225 rows x 9 columns]),8000 行大约对应 30 余个交易日。要获取 10 年以上的全量历史,必须按时间区间循环分页,同时通过合约代码维度逐合约提取。
一个稳健的分页策略是:以"合约代码 × 日期区间"为粒度,将时间轴切成不超过 8000 行的窗口逐批拉取。伪代码如下:
import tushare as ts pro = ts.pro_api() def fetch_fut_mins_by_day(ts_code, freq, start_day, end_day): """按日粒度分页拉取某合约一段时间的分钟行情""" frames = [] # 结合交易日历生成交易日序列,逐日或按周窗口调用 for day in trading_days_between(start_day, end_day): df = pro.ft_mins( ts_code=ts_code, freq=freq, start_date=f"{day} 09:00:00", end_date=f"{day} 23:00:00", # 覆盖日盘 + 夜盘 ) if df is not None and not df.empty: frames.append(df) return pd.concat(frames, ignore_index=True)其中交易日序列可通过 Tushare 的 交易日历.md 中的trade_cal接口获取(该接口返回各大期货交易所交易日历数据),仓库 tushare_demo.py 中同样演示了trade_cal的用法与"只保留is_open == 1交易日"的过滤逻辑。
进阶:主力合约分钟序列的构建流程
期货合约会随交割月临近而到期,单纯按单个合约代码拉取分钟数据只能得到该合约存续期的行情。要构建主力合约连续分钟序列,需按接口文档提示的流程走:
获取合约基本信息:通过
fut_basic拿到全市场合约列表与上市/退市日期(见 合约信息.md),确认品种代码与合约代码规则。获取主力合约映射:调用 期货主力与连续合约.md 中的
fut_mapping接口,得到每个交易日主力/连续合约对应的具体月合约代码:
pro = ts.pro_api() # 获取主力合约 TF.CFX 每日对应的月合约 df = pro.fut_mapping(ts_code='TF.CFX')返回字段为ts_code(连续合约代码)、trade_date(起始日期)、mapping_ts_code(期货合约代码)。从该文档的数据样例可见,2019-08-23 至 2019-08-14 期间主力映射为TF1912.CFX,而 2019-08-13 之前映射为TF1909.CFX,即主力合约随换月发生切换。
- 逐日拼接分钟数据:遍历映射表,对每个交易日的
mapping_ts_code调用ft_mins提取该日分钟行情,最终按日期拼接成连续的主力分钟序列,完成"换月拼接 + 复权处理(如需)"。
HTTP Restful API 方式:轻量级客户端实现
除 Python SDK 外,ft_mins同样支持 HTTP Restful API。仓库 tushare_demo.py 中的TushareHttpClient类提供了一个不依赖 tushare SDK 的轻量级实现,其核心逻辑包括:
- 通过
requests.post("http://api.tushare.pro", json=...)发送请求,请求体包含api_name、token、params、fields四个字段; - 内置
_check_rate_limit()每分钟调用计数,防止超出免费配额; - 对响应结果做
code != 0的错误校验,并将data.fields与data.items组装为 pandas DataFrame。
使用 HTTP 方式调用ft_mins的请求体形如:
{ "api_name": "ft_mins", "token": "your_token", "params": { "ts_code": "CU2310.SHF", "freq": "1min", "start_date": "2023-08-25 09:00:00", "end_date": "2023-08-25 19:00:00" }, "fields": "" }该实现尤其适合 Docker、PyInstaller、多虚拟环境等需要减少 SDK 运行时依赖的场景,代码中同时给出了"调用方式与 tushare SDK 的 pro_api 完全一致"的设计说明。
数据标准化:分钟 OHLCV 统一输出
分钟数据要接入统一的回测或研究管线,通常需要做字段标准化。仓库 tushare_demo.py 中的fetch_ohlcv_standardized()函数演示了将 Tushare 原始字段映射为统一(trade_date, open, high, low, close, volume)格式的完整流程:
- 周期映射:
1m/5m/15m/30m/1H分别映射到1min/5min/15min/30min/60min; - 按
trade_time升序排序并转为datetime索引; - 将
vol重命名为volume,并统一做pd.to_numeric数值化与空值过滤。
同样的标准化思路可完全复用到期货分钟数据上,只需将stk_mins(股票分钟接口)替换为ft_mins,并将ts_code换成期货合约代码即可。
配套接口与注意事项
围绕期货分钟行情,仓库 references/期货数据 目录还提供了完整的配套接口文档,便于构建期货数据全链路:
- 实时分钟行情.md:
rt_fut_min接口,盘中实时分钟数据(支持多合约逗号分隔提取),以及rt_fut_min_daily当日分钟快照回放接口; - 日线行情.md:
fut_daily日线行情,含结算价、涨跌、持仓变化等; - 期货主力与连续合约.md:
fut_mapping主力映射; - 合约信息.md:
fut_basic合约列表; - 交易日历.md:
trade_cal交易日历。
实战中还需注意以下几点:
- 积分与权限:原文档明确 120 积分可调取 2 次接口查看数据,正式使用需按权限说明申请更高积分;
fut_daily、fut_basic、fut_mapping等接口文档中同样标注了 2000 积分的门槛,积分不足时接口会返回错误,可参考 stock_data_example.py 中的try/except包装对调用失败做降级处理。 - 限量与循环:单次 8000 行是硬限制,超过后数据被截断,务必按合约代码 + 时间窗口循环补全,这是拿到 10 年以上全历史数据的唯一途径。
- 时间格式:输入参数
start_date/end_date使用2023-08-25 09:00:00这种"日期 + 时分秒"格式(SKILL.md 中给出的日期参数格式说明为YYYYMMDD,适用于日线类接口,分钟类接口按本文档格式传入)。 - 夜盘覆盖:国内期货包含夜盘时段,拉取数据时结束时间需覆盖到夜盘(如当日 23:00 或次日凌晨),否则会漏掉夜盘行情。
- 主力合约换月:使用主力连续序列时必须同步
fut_mapping映射表,否则拼接的分钟序列会在换月日产生价格跳变。
小结
ft_mins是构建期货分钟级行情数据底座的核心接口,配合fut_basic(合约列表)、fut_mapping(主力映射)、fut_daily(日线校验)与trade_cal(交易日历)即可形成完整的期货数据获取闭环。本仓库以 历史分钟行情.md 为核心文档,沉淀了该接口的完整参数、样例与配套接口体系,读者可直接参考 SKILL.md 中的接口索引,以及 tushare_demo.py 中的 HTTP 客户端与标准化 OHLCV 实现,快速搭建自己的期货分钟级数据管线。
- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
相关推荐
3 步装好网盘直链下载助手:完整提取 8 大网盘文件直链的免费流程
3 步装好网盘直链下载助手:完整提取 8 大网盘文件直链的免费流程 网盘直链下载助手 (脚本名 LinkSwift)是一个运行在网盘网页里的 JavaScrip
前端Tushare 指数历史分钟行情接口(idx_mins)实战指南:10 年分钟级 K 线数据获取与循环补全方案
Tushare 指数历史分钟行情接口(idx_mins)实战指南:10 年分钟级 K 线数据获取与循环补全方案 本文是 ai_quant_trade 仓库中 t
金融科技示例工程QQ空间说说导出免费完整搞定:GetQzonehistory 三分钟本地备份
QQ空间说说导出免费完整搞定:GetQzonehistory 三分钟本地备份 GetQzonehistory 是一款开源的 QQ空间说说导出工具。扫码登录,它就
网页爬虫数据分析
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考