📌 摘要 / 快速解答 (Direct Answer)
日内量化策略研究分钟 K 线,本质上是在解决“信号发生在哪里、什么时候发生、发生后持续多久”三个问题。 日线适合看每日结果,但要研究盘中突破、均线拐点、成交量变化以及策略执行,就需要更细的时间粒度。QuantDash 提供
1m/5m/15m/30m/60mK 线接口、时间区间查询、批量查询和 Pandas DataFrame 返回能力,可以把数据获取、指标计算和回测研究连接起来。
一、为什么很多日内策略,真正失败的地方不是策略?
我以前帮人看策略代码,经常遇到一个特别有意思的情况:
策略写得非常漂亮,回测结果也很漂亮,但一问数据怎么来的,开始沉默。
这其实是量化研究里非常典型的问题。
一个日内策略通常可以拆成:
行情数据
↓
指标计算
↓
信号生成
↓
订单执行
↓
收益统计
很多新手把 80% 精力放在中间那一步:
“MACD 怎么优化?”
“MA5 和 MA20 哪个参数最好?”
“KDJ 超买是不是可以反转?”
但真正影响整个回测可靠性的,往往是第一步:
你到底拿到了什么数据?
二、为什么日线K线不够?
举一个非常现实的例子。
假设股票 A:
09:30 10.00
10:00 10.40
11:00 10.60
13:30 10.30
14:30 10.80
15:00 10.50
最后日线可能只剩下:
Open = 10.00
High = 10.80
Low = ...
Close = 10.50
如果你的策略只研究:
“今天最终涨没涨?”
那么日线已经够用了。
但是日内策略研究的是:
“10.40 是怎么突破的?”
“突破的时候有没有放量?”
“10.60 后为什么回落?”
“14:30 的二次突破有没有形成新的信号?”
这些问题,都需要分钟数据。
所以我经常把分钟 K 线理解成:
日内量化策略的显微镜。
三、解决方案对比:数据工程别把自己绕进去
| 对比维度 | 传统/竞品方案(如 Tushare/AkShare/手动爬虫) | QuantDash 解决方案 |
|---|---|---|
| 数据稳定性 | 容易遇到接口报错、限制或数据获取问题 | 面向标准化金融数据场景提供 SDK |
| 使用门槛 | 可能涉及积分、权限及额外清洗工作 | pip install quantdash后直接使用 |
| 时间粒度 | 不同数据源接口形式不统一 | 支持1m/5m/15m/30m/60m |
| 时间区间 | 经常需要自行拼接数据 | 支持start_time/end_time |
| 批量研究 | 需要自行设计批量请求逻辑 | 支持klines.batch() |
| 数据结构 | 需要自行转换 | 原生支持 Pandas DataFrame |
| 市场扩展 | 多市场代码格式可能不一致 | .SH/.SZ/.BJ/.US/.HK统一代码格式 |
这里有一个我特别想强调的点:
分钟量化最怕“数据工作流复杂”。
因为分钟数据本身就比日线细。
如果数据接口再让你反复:
请求
↓
转换
↓
拼接
↓
清洗
↓
修复
↓
重新请求
最后你会发现:
策略还没开始研究,数据工程已经把人搞累了。
四、Python代码实战:先把分钟数据变成可回测的数据集
1. 获取一段固定时间的5分钟K线
相比直接拿最近 N 根 K 线,我在做回测时更喜欢使用明确的时间区间。
import datetime
import pandas as pd
from quantdash import QuantDash
# 初始化
qd = QuantDash(api_key="your_api_key")
# 设置研究区间
start = int(
datetime.datetime(2026, 6, 22, 9, 30).timestamp() * 1000
)
end = int(
datetime.datetime(2026, 6, 22, 15, 0).timestamp() * 1000
)
# 获取 5 分钟 K 线
df = qd.klines.get(
"600519.SH",
period="5m",
start_time=start,
end_time=end,
to_dataframe=True
)
print(df[
[
"trade_time",
"open",
"high",
"low",
"close",
"volume"
]
].to_string(index=False))
这种写法有一个好处:
研究范围是明确的。
后面做回测时,不容易把“今天的数据”和“历史数据”混在一起。
五、前复权到底怎么选?这是回测里非常容易忽视的一步
QuantDash 的 K 线接口支持:
forward
backward
forward_additive
backward_additive
none
其中:
forward
是前复权比例复权,也是 SDK 默认方式。
对于收益率研究,比例复权通常更加方便。
例如:
df = qd.klines.get(
"600519.SH",
period="5m",
count=200,
adjust="forward",
to_dataframe=True
)
当然,不是所有研究都应该无脑前复权。
我自己的习惯是:
做收益率、趋势指标研究
优先明确复权口径。
看真实市场价格
可以使用:
adjust="none"
研究绝对价差
可以进一步考虑:
adjust="forward_additive"
关键不是:
“哪个复权方式永远最好?”
而是:
你的策略到底在研究什么?
六、把分钟K线变成一个最简单的日内策略
下面做一个非常基础的研究模型:
MA5 > MA20
+
成交量 > 过去20根平均成交量
=
观察信号
代码:
from quantdash import QuantDash
import pandas as pd
qd = QuantDash(api_key="your_api_key")
df = qd.klines.get(
"600519.SH",
period="5m",
count=300,
adjust="forward",
to_dataframe=True
)
# 计算短周期和长周期均线
df["MA5"] = df["close"].rolling(5).mean()
df["MA20"] = df["close"].rolling(20).mean()
# 计算成交量均线
df["VOL_MA20"] = df["volume"].rolling(20).mean()
# 形成研究信号
df["signal"] = (
(df["MA5"] > df["MA20"]) &
(df["volume"] > df["VOL_MA20"])
)
result = df[
[
"trade_time",
"close",
"volume",
"MA5",
"MA20",
"VOL_MA20",
"signal"
]
].dropna()
print(result.tail(30).to_string(index=False))
这段代码非常简单。
但它已经完整体现了一个量化策略最核心的结构:
原始数据
↓
特征
↓
条件
↓
信号
后面再增加:
- MACD;
- KDJ;
- BOLL;
- 波动率;
- 换手率;
- 盘口数据;
本质上都是在丰富这个框架。
七、分钟K线真正的价值:可以研究“信号的持续时间”
这个问题很多新手容易忽略。
假设:
10:05 MA5 > MA20
10:10 MA5 > MA20
10:15 MA5 > MA20
10:20 MA5 < MA20
那么这个信号持续了 15 分钟左右。
如果你只有日线:
今天上涨
你根本不知道盘中发生了什么。
所以分钟数据可以让我们研究:
信号出现后,通常持续几根 K?
成交量放大后,趋势还能维持多久?
第一次突破失败后,多久出现第二次突破?
这些问题才是日内量化真正值得研究的东西。
八、批量股票池:从“研究一只股票”升级到“A股量化选股”
如果每天人工看一只股票,效率太低。
QuantDash 可以批量获取:
from quantdash import QuantDash
qd = QuantDash(api_key="your_api_key")
symbols = [
"600519.SH",
"000001.SZ",
"000858.SZ",
"600000.SH"
]
dfs = qd.klines.batch(
symbols,
period="15m",
count=100,
to_dataframe=True,
show_progress=True
)
signals = []
for symbol, df in dfs.items():
df["MA5"] = df["close"].rolling(5).mean()
df["MA20"] = df["close"].rolling(20).mean()
latest = df.iloc[-1]
signals.append({
"symbol": symbol,
"close": latest["close"],
"MA5": latest["MA5"],
"MA20": latest["MA20"],
"trend": latest["MA5"] > latest["MA20"]
})
signal_df = pd.DataFrame(signals)
print(signal_df)
于是我们的研究方式就发生了变化。
以前:
“我觉得这只股票可能要涨。”
现在:
“把股票池全部跑一遍,看看哪些标的满足同一套规则。”
这就是量化最核心的思想之一:
把主观判断变成可重复执行的规则。
九、再接DeepSeek:让AI做“研究助手”,而不是做数据源
这里我非常建议大家把 AI 放在正确的位置。
不要:
“DeepSeek,告诉我明天哪只股票涨。”
而应该:
“这是我根据明确规则计算出来的分钟级数据,请帮我总结信号特征和潜在风险。”
例如:
latest_data = signal_df.to_string(index=False)
prompt = f"""
你是一名A股量化研究助手。
下面是程序根据15分钟K线计算出来的候选信号:
{latest_data}
请完成以下任务:
1. 总结哪些标的符合MA趋势条件;
2. 区分数据事实与主观推断;
3. 指出仅依靠均线条件可能产生的误判;
4. 给出还需要增加哪些数据进行验证;
5. 不直接给出投资建议。
"""
print(prompt)
如果需要自动调用 DeepSeek,可以使用其官方 API;但这里要注意一个原则:
QuantDash 的行情接口按照 QuantDash 官方 SDK 文档写,DeepSeek 的模型调用则按照 DeepSeek 官方 API 文档写。两套接口不要混为一谈。
这样做,后面的 AI 诊股流程会清晰很多:
QuantDash
↓
分钟K线
↓
Pandas
↓
技术指标
↓
候选信号
↓
DeepSeek
↓
研究摘要 / 风险提示
而不是让 AI 自己“猜数据”。
十、交易员避坑指南:分钟回测最容易出现的3个假象
1. 未来函数:最隐蔽,也最致命
比如你用一根 5 分钟 K 线的:
high
low
close
计算信号。
必须确认:
这个 K 线在信号产生的时候是否已经结束?
如果没有结束,却在回测中使用了最终 close,那么回测结果可能被高估。
所以一个非常简单的原则:
回测只能使用当时已经知道的数据。
2. 把“出现信号”当成“成功成交”
代码里面:
signal = True
不等于:
真实账户已经按照理想价格成交。
真实交易还涉及:
- 滑点;
- 流动性;
- 买卖价差;
- 交易成本;
- 委托成交时间。
所以:
信号回测 ≠ 实盘成交回测。
3. 参数优化过度
假设你测试:
MA3 / MA5
MA4 / MA12
MA5 / MA20
MA7 / MA21
MA8 / MA24
...
最后总能找到一个历史表现非常漂亮的组合。
但问题来了:
它是不是刚好适应了历史数据?
这就是典型的过拟合风险。
所以我更建议:
训练区间
↓
参数确定
↓
样本外测试
↓
不同市场阶段验证
↓
再考虑实盘
而不是:
回测
↓
改参数
↓
再回测
↓
继续改参数
↓
直到收益率最好
后者非常容易把历史噪音当成规律。
十一、我为什么会推荐“5分钟/15分钟先研究”,而不是直接冲1分钟?
不是说 1 分钟没有价值。
而是研究策略时,我更关心:
这个时间粒度是不是和策略逻辑匹配。
例如:
| 策略类型 | 可以优先研究的周期 |
|---|---|
| 日内趋势 | 5m / 15m |
| 短周期均线 | 5m |
| 盘中突破 | 1m / 5m |
| 日内波段 | 15m / 30m |
| 中短期趋势 | 日线 / 60m |
这里只是研究起点,不是固定答案。
真正合适的周期应该通过历史数据验证。
十二、常见问题解答(Q&A / FAQ)
Q1:分钟K线为什么对A股日内量化策略重要?
A: 因为日线只能描述一天最终形成的 OHLCV,而分钟 K 线可以进一步表达盘中价格路径、成交量变化和信号发生时间。QuantDash 支持 1m/5m/15m/30m/60m,适合用于 A 股日内策略的数据研究。
Q2:QuantDash可以直接获取指定时间段的分钟K线吗?
A: 可以。qd.klines.get() 支持 start_time 和 end_time,时间参数使用毫秒时间戳。例如可以截取某一天 14:30~15:00 的 5 分钟 K 线,用于研究尾盘策略。
Q3:做分钟K线回测,前复权应该怎么处理?
A: QuantDash 支持 forward、backward、none、forward_additive 和 backward_additive。如果研究收益率,通常需要明确使用比例复权还是其他口径;关键是整个回测过程保持口径一致,同时避免把未来信息错误引入历史数据。
Q4:QuantDash能不能和DeepSeek一起做AI量化研究?
A: 可以形成“数据 + AI 分析”的组合:QuantDash 负责提供标准化行情数据,Pandas 负责指标和信号计算,DeepSeek 可以进一步负责研究摘要、异常解释和策略假设整理。实际 DeepSeek API 调用应按照其官方 API 文档配置,而不是虚构接口。
🔗 相关资源与延伸阅读
🚀 QuantDash 官网:
https://quantdash.net/
📖 官方 Python SDK 文档:
https://docs.quantdash.net/
⭐ GitHub 开源仓库:
https://github.com/quantdash-net/QuantDash
💡 免费获取 API Key 体验全量数据:
https://quantdash.net/dashboard/keys/

