美股回测用日线还是分钟线?买卖时点错了,曲线再漂亮也可能白跑

TickDB Research ·

美股回测用日线还是分钟线?买卖时点错了,曲线再漂亮也可能白跑

最浪费时间的回测,不是报错的那种。

是脚本一路跑完,曲线也出来了。你开始调参数,后来才发现:策略写的是“盘中突破就进场”,回测却用日线把盘内过程压没了。

那一轮下载、清洗、调参,可能都得重来。更危险的是,你会把原规则下根本不可能发生的买卖,当成策略有效。

回测前先别问“数据够不够细”,先问:信号什么时候才能知道?我又在什么时候允许交易?

TickDB 是面向量化研究、行情监控和投资工具的市场数据服务。本文只验证其中一件事:用历史 K 线、交易日和交易时段,先确认回测输入是否符合策略的决策时点。

先给结论:不是越细越好

你的规则应先选什么避免什么
信号只在收盘后确认,不依赖盘中价格日线候选不把本来不会发生的盘中交易塞进策略。
盘中突破、盘中止损、固定时点触发分钟线候选不把真正的进出场时点压扁成一根日 K。
盘前盘后、时区、允许下单时间没写清暂缓回测不先花时间拉数据、调参数,最后才发现规则没写完。

日线和分钟线不是清晰度高低的区别,而是两套不同的交易时点。

我用 TickDB 查了一次 AAPL.US

本次真实请求使用 AAPL.US,查询已结束的 2026 年 7 月 28 日。

我同时请求了:

1分钟K线
日线K线
美股交易日
美股交易时段

四个请求均返回 HTTP 200、业务码 0。

数据本次真实返回
1 分钟 K 线893 条,893 个唯一时间戳
日线 K 线1 条
盘前分钟记录293 条
常规盘分钟记录390 条
盘后分钟记录210 条

这张表比“分钟线更细”更有用。

如果你的策略只做常规盘,真正应进入回测的,是 390 条,不是完整返回的 893 条。

盘前和盘后还有 503 条记录。它们不是顺手多出来的福利,而是必须由策略规则决定是否纳入的另一段研究输入。

本次日线返回为:

开盘最高最低收盘成交量
340.03342.89335.60340.0851,859,042.58

一根日 K 能告诉你当天发生过什么,却不能告诉你盘中突破出现于何时、触发后是否回落、当时是否允许成交。

TickDB 在这里做什么

这篇文章里的分工很简单:

TickDB
→ 提供同一标的的历史1m / 1d K线、交易日和交易时段

Python脚本
→ 把时间、记录数和策略规则整理成选择表

你
→ 决定策略是否该用日线、分钟线,还是先暂停回测

TickDB 的价值不只是“能返回 K 线”。

在这次任务中,它让同一只股票的粒度、时间边界和交易范围能连续核对,而不是你在不同页面、不同来源之间猜测“这些数据能不能放进同一个回测”。

真实运行的核心调用

下面是本次完整脚本里的实际调用段:

records = [
    call(
        api_key,
        "REQ-KLINE-1M",
        "/v1/market/kline",
        {
            "symbol": "AAPL.US",
            "type": "stock",
            "interval": "1m",
            "limit": 1000,
            "start_time": 1785196800000,
            "end_time": 1785283199999,
        },
    ),
    call(
        api_key,
        "REQ-KLINE-1D",
        "/v1/market/kline",
        {
            "symbol": "AAPL.US",
            "type": "stock",
            "interval": "1d",
            "limit": 1000,
            "start_time": 1785196800000,
            "end_time": 1785283199999,
        },
    ),
    call(
        api_key,
        "REQ-TRADE-DAYS-US",
        "/v1/market/trade-days",
        {
            "market": "US",
            "beg_day": "20260728",
            "end_day": "20260728",
        },
    ),
    call(
        api_key,
        "REQ-TRADING-SESSIONS-US",
        "/v1/market/trading-sessions",
        {"market": "US"},
    ),
]

本次脚本的规则输入是:

信号:盘中可知
下单:盘中允许
研究时段:常规盘

输出结果:

分钟线候选
规则依赖盘中可知条件或盘中允许交易,日线会压缩关键时点
常规盘选入记录:390 条

已有数据源,为什么还值得测一次 TickDB?

不需要先迁移系统。

拿你已有策略里的同一只股票、同一个日期,分别查询 1m、1d 和交易时段,再问一个问题:

你的回测输入,真的和策略规定的决策时点一致吗?

如果答案不确定,问题就不在于你有没有数据,而在于你还没有把数据粒度、时区和交易范围变成可检查条件。

这也是 TickDB 在本文中的价值:先帮你核验研究输入,再决定后面是否值得继续下载、清洗和调参。

你可以直接这样试

把脚本里的标的、日期和研究规则换成自己的:

set -a
source <你的本地 tickdb.env>
set +a

python3 run_granularity_evidence.py \
  --symbol AAPL.US \
  --date 2026-07-28 \
  --signal-known intraday \
  --order-allowed intraday \
  --research-session regular

你会得到一张选择表:

日线候选
分钟线候选
暂缓回测

它不替你挑策略,只帮你先排除“策略和数据时间根本对不上”的情况。

FAQ

1. 日线能代替分钟线验证盘中突破吗?

不能。日线能告诉你当天高低开收,却不能还原盘中触发顺序、触发时间和成交条件。

2. 盘前、盘后数据要不要放进回测?

看策略是否允许在这些时段产生信号或下单。本次 AAPL.US 请求中,盘前和盘后共有 503 条分钟记录;是否纳入,不能由数据“顺手返回了”来决定。

3. TickDB 除了这次的历史 K 线还能做什么?

粒度和研究范围确定后,历史数据可以继续承接策略验证;需要持续观察市场变化时,也可以进入行情监控任务。先把回测输入对齐,再谈更长的研究链路。

回测最怕的,不是数据少,而是策略已经按一套时间运行,数据却还在按另一套时间计算。

相关文章

小型量化团队外汇数据接口选型框架:数据接入层应该长什么样

做多市场研究的量化团队和做行情看板的集成商,对数据接入层的核心需求不是“能拿到数据”——能拿到数据的方案太多了。真正的需求是:数据接入层的结构,必须能支撑你的策略逻辑做正确归因。 归因的意思是:实盘表现和回测对不上时,你能追溯出问题出在数据口径、时段划分还是连续性假设。如果数据层不透明,归因链在第一步就断了。 本文从三个最容易被忽视的结构性断层展开:报价口径、时段划分、连续性假设。每个断层都会在你

TickDB Research ·

外汇黄金实时行情 API:做 24 小时看板,免费、开源和专业数据源怎么选?

外汇黄金实时行情 API:做 24 小时看板,免费、开源和专业数据源怎么选? 摘要:免费接口可以先用,但它更适合验证想法。外汇或黄金看板一旦交给夜间监控、客户页面或后续策略阈值,错价、漏价和无法复查带来的就不只是“看不懂日志”,还可能是错误告警、人工值守、交付返工和错误决策。下面用一次 XAUUSD 返回,拆开免费、开源和专业行情 API 分别该承担什么。 标签:外汇实时行情API、黄金API、X

TickDB Research ·

美股分钟K线不完整怎么办?回测前别盲补,用 Python 分清排除、重拉和待核

你准备把美股分钟线送进回测,时间轴却断了一段。 最危险的动作,往往不是“少了一根”,而是顺手拿前后价格补一下,然后继续跑。 先别补。 先用 TickDB 的历史一分钟K线、美股交易日和交易时段,把空档分清楚:哪些不在你的检查范围里,哪些请求没拉成功,哪些还说不清原因。先把数据输入处理干净,再决定要不要进入回测。 这篇文章给你一套顺序:先定义目标时段,再检查请求状态和时间轴,最后把空档放进排除、重拉

TickDB Research ·

美股实时行情 API 接入前,为什么不能只看 AAPL.US 有价格?

美股实时行情 API 接入前,为什么不能只看 AAPL.US 有价格? 摘要 用美股行情 API 查到 的价格,只能说明接口返回了一个数字。真正要把行情数据接进行情面板、研究脚本、回测流程或 AI 工具,还要继续确认三件事:ticker 快照里的 、、 能不能解释;K 线里的 是否能进入样本;交易时段和时间边界是否能被记录和复查。本文基于 TickDB 对 的一次真实 REST 调用,先把“

TickDB Research ·

实时行情数据监控:接口返回正常,告警为什么没响?

> 摘要 > 行情告警没响,你先查的是阈值,还是数据链路?很多告警失效的根本原因不在价格判断——定时任务静默停跑、接口返回空data、WebSocket假在线、缓存价格没有stale标记、异常发生但日志里什么都没留下。本文给出一套从数据链路健康检查出发的5层排查方案:先问行情数据是否还活着、是否新鲜、异常是否可追溯,最后再问价格有没有触发告警。附带五层速查表、最小监控字段表和常见问题,适合直接复制

TickDB Research ·