
为什么分钟级数据对交易者很重要
日线图看趋势,分钟图找买卖点。做股票短线或者期货日内交易,光看每天收盘价远远不够。盘中价格怎么跳、成交量在哪个时段放大、大单是砸还是扫,这些细节都藏在分钟级数据里。efinance这个Python库把东方财富的公开接口包装得很顺手,不用申请复杂权限就能拿到A股分钟K线。下面直接上操作步骤和实战思路。
安装与基础调用
打开命令行装库:

pip install efinance
获取股票分钟数据核心函数是efinance.stock.get_quote_history。关键参数有三个:股票代码、klt(K线周期)、fqt(复权方式)。klt取值1代表1分钟,5代表5分钟,15、30、60分别对应相应周期。代码示例:
import efinance as ef
df = ef.stock.get_quote_history('600519', klt=5, fqt=1)
print(df.tail(20))
返回的DataFrame包含日期、开盘、收盘、最高、最低、成交量、成交额等字段。fqt=1表示前复权,做短线建议用前复权保持价格连续性。注意股票代码不要带交易所前缀,直接输入六位数字字符串。
分钟数据抓取的实际限制
efinance底层请求东方财富的接口,免费用户能拿到最近几年的分钟数据,但1分钟周期通常只保留最近5个交易日左右。5分钟和15分钟周期回溯时间更长一些。频繁请求会被限制IP,抓多只股票时务必在循环里加time.sleep(1),别把接口当自家数据库使。
数据质量方面,集合竞价时段的K线可能缺失,开盘第一根1分钟K线有时包含9:25到9:30的撮合量。期货夜盘数据在股票分钟接口里拿不到,做期货要换用ef.futures.get_quote_history,参数逻辑类似但代码格式不同,比如螺纹钢主连是'RB0'。
把分钟数据变成交易信号
拿到数据只是第一步,关键是构建可执行的规则。举两个实用场景:
场景一:均线交叉过滤假突破。用5分钟收盘价计算20周期和60周期均线,金叉且成交量大于前5根K线均量1.5倍时,视为有效多头信号。代码片段:
df['ma20'] = df['收盘'].rolling(20).mean()
df['ma60'] = df['收盘'].rolling(60).mean()
df['vol_ma'] = df['成交量'].rolling(5).mean()
df['signal'] = ((df['ma20'] > df['ma60']) &
(df['ma20'].shift(1) <= df['ma60'].shift(1)) &
(df['成交量'] > df['vol_ma'] * 1.5))
场景二:期货夜盘跳空回补。用15分钟数据观察夜盘开盘后前两根K线是否回补日盘收盘价与夜盘开盘价之间的缺口,回补且成交量萎缩则反向开仓。这个逻辑需要拼接日盘和夜盘数据,efinance期货接口返回的时间戳包含夜盘时段,直接按时间排序即可。
数据存储与盘中刷新
分钟数据量大,建议存本地SQLite或parquet文件。每次拉取新数据后按日期和代码去重追加,避免重复请求。盘中实时刷新可以写个定时任务每30秒拉一次最新K线,只取最后几行更新内存中的DataFrame。注意efinance没有推送接口,高频刷新本质是轮询,对交易延迟要求高的场景需要换用券商柜台或专业行情源。
期货分钟数据还要考虑主力合约切换。efinance的期货主连代码能自动拼接不同月份合约,但切换日前后价格会有跳空,计算技术指标前务必做复权处理或者只用切换后的连续片段。
分钟数据与日线数据的配合
纯靠分钟图容易迷失在大大小小的波动里。正确用法是日线定方向,分钟图找入场。日线处于20日均线上方且MACD金叉,分钟图回调到支撑位出现缩量阳线再进场。efinance同时支持日线和分钟线获取,写个函数把两个周期数据合并分析,比单看一个周期靠谱得多。
期货品种还要看夜盘联动。外盘原油大涨,国内SC原油夜盘跳空高开,分钟图如果高开低走放量,说明多头获利了结,日内短线就该偏空思路。这些判断都依赖分钟数据的细节,日线要等收盘才反应。
别踩这些坑
分钟数据有幸存者偏差。停牌期间的K线是缺失的,回测时不能简单用前值填充,否则均线计算会失真。涨跌停板期间分钟成交量极小,用成交量过滤信号时要单独处理。efinance返回的成交额单位是元,成交量单位是手,股票1手100股,计算换手率别搞混。
免费接口的数据延迟大约1到2秒,做趋势跟踪足够,做高频套利远远不够。认清工具边界,把efinance定位成研究和小资金实盘辅助工具,别拿它当唯一行情源。
一套完整的分钟级工作流
盘前用efinance拉取目标股票最近5天1分钟数据和最近30天5分钟数据,存本地。盘中每30秒更新最新5分钟K线,计算均线、成交量比、ATR波动率。信号触发后记录时间戳和价格,盘后回看信号质量,统计不同时段的胜率。坚持一个月,你会比只看日线的人更清楚市场的微观节奏。期货同理,只是把代码换成主连合约,夜盘时段单独统计。