外观
策略交易时机选择
在量化策略的设计与执行中,交易时机的选择往往被忽视,但它却是连接回测与实盘的关键桥梁。选择在当天收盘价交易还是次日开盘价交易,不仅影响回测结果的准确性,更直接决定策略在实盘中的可执行性。
本文将深入对比这两种交易时机的核心差异、回测表现、实盘执行难度,帮助您根据实际需求做出最优选择。
一、两种交易时机概述
次方量化平台支持两种交易时机模式:

1.1 当天收盘价交易
定义:策略在当天收盘时刻(15:00)触发信号,并假设以当天收盘价立即成交。
执行逻辑:
- 策略在收盘时(15:00)计算动量、检查调仓条件
- 如果需要调仓,则以当天收盘价作为成交价格
- 交易即时完成(理论上)
典型场景:
时间线示例:
2024年1月5日 15:00 - 策略触发买入信号
- 沪深300ETF收盘价: 3.500元
- 交易价格: 3.500元(+滑点)
- 当天持仓生效1.2 次日开盘价交易
定义:策略在当天收盘后(15:10之后)触发信号,但以下一个交易日开盘价成交。
执行逻辑:
- 策略在当天收盘后(15:10之后)计算信号
- 生成交易订单,等待次日执行
- 在次日9:30开盘时以开盘价成交
- 存在"隔夜风险"
典型场景:
时间线示例:
2024年1月5日 15:10 - 策略触发买入信号
- 沪深300ETF收盘价: 3.500元
- 生成买入订单,等待次日执行
2024年1月8日 09:30 - 沪深300ETF开盘价: 3.520元
- 交易价格: 3.520元(+滑点)
- 次日持仓生效二、两种交易时机的核心差异对比
2.1 价格基准差异
| 对比维度 | 当天收盘价交易 | 次日开盘价交易 |
|---|---|---|
| 成交价格基准 | 当天15:00收盘价 | 次日9:30开盘价 |
| 价格确定性 | 高(收盘价已确定) | 低(开盘价未知) |
| 隔夜风险 | 无 | 有(受隔夜消息影响) |
| 价格跳空风险 | 无 | 有(可能高开或低开) |
价格差异示例:
假设某ETF在调仓日的价格走势:
2024年1月5日(周五)
- 收盘价: 3.500元
- 策略信号: 买入
情况1: 当天收盘价交易
- 成交价: 3.500元
情况2: 次日开盘价交易
- 周末发生重大利好消息
- 2024年1月8日(周一)开盘价: 3.550元
- 成交价: 3.550元
- 价差: +1.43%(多付了50点)2.2 执行时间差异
| 对比维度 | 当天收盘价交易 | 次日开盘价交易 |
|---|---|---|
| 信号产生时间 | 15:00收盘时 | 15:10之后 |
| 订单提交时间 | 理论上15:00(实际操作困难) | 15:10-次日9:25 |
| 实际成交时间 | 当天尾盘(几乎不可能) | 次日9:30开盘后 |
| 准备时间 | 无(需要秒级响应) | 充足(有18小时以上) |
执行时间对比图:
【当天收盘价交易】
14:55 ─→ 15:00 ──→ 15:00 ──→ 当天持仓
计算 触发 成交 生效
准备 信号 (理论)
【次日开盘价交易】
14:55 ─→ 15:10 ──→ 次日9:25 ──→ 次日9:30 ──→ 次日持仓
计算 触发 提交订单 成交 生效
准备 信号 (集合竞价)
充足的18小时准备时间,可以从容下单2.3 实盘可操作性差异
| 对比维度 | 当天收盘价交易 | 次日开盘价交易 |
|---|---|---|
| 手动执行难度 | ⭐⭐⭐⭐⭐(极难) | ⭐⭐(简单) |
| 自动交易适配性 | 困难(需要极快响应) | 容易(有充足准备时间) |
| 成交概率 | 低(尾盘流动性差) | 高(开盘流动性好) |
| 实盘滑点 | 理论上相对较低 | 相对较高 |
| 执行一致性 | 差(很难保证成交) | 好(几乎总能成交) |
可操作性分析:
当天收盘价交易的困境:
- 需要在14:57左右快速下单抢收盘价
- 尾盘流动性往往不足
- 大单容易冲击价格,实际滑点可能很大
- 手动操作几乎不可能在15:00精准成交
- 自动交易系统需要极高性能和网络速度
次日开盘价交易的优势:
- 15:10后从容分析、生成订单
- 可以在当晚或次日早上提交集合竞价订单
- 开盘流动性充足,成交概率高
- 执行一致性好,减少人为失误
三、回测与实盘模拟的处理逻辑差异
理解回测和实盘模拟两种场景下的处理逻辑差异,对于正确使用策略系统至关重要。两种交易时机在这两种场景下的处理方式存在显著不同。
3.1 回测场景的处理逻辑
回测场景特点:
- 使用历史数据模拟策略表现
- 不涉及实际执行时间
- 基于历史K线数据计算成交价格
- 主要用于评估策略的历史表现
3.1.1 当天收盘价交易在回测中的处理
处理流程:
1. 遍历历史交易日
2. 在每个交易日的15:00时刻:
- 计算动量指标
- 检查调仓条件
- 如果触发调仓信号:
a. 获取当天的收盘价(已确定的历史数据)
b. 应用滑点计算:成交价 = 收盘价 × (1 + 滑点率)
c. 立即更新持仓(假设当天成交)
d. 更新账户资产
3. 继续下一个交易日关键特征:
- ✅ 价格确定性高:收盘价是已知的历史数据
- ✅ 无时间延迟:信号产生即成交,无等待时间
- ✅ 理想化假设:假设可以在收盘价完美成交
- ⚠️ 忽略执行难度:不考虑实际下单的时间限制
示例:
回测日期:2024年1月5日(周五)
【当天收盘价交易回测】
15:00 - 计算动量,触发买入信号
15:00 - 获取收盘价:3.500元(历史数据)
15:00 - 应用滑点0.1%:成交价 = 3.500 × 1.001 = 3.5035元
15:00 - 立即更新持仓:买入1万股,成本35,035元
15:00 - 账户资产更新完成
→ 持仓在当天生效,从下一个交易日开始计算收益3.1.2 次日开盘价交易在回测中的处理
处理流程:
1. 遍历历史交易日
2. 在每个交易日的收盘后:
- 计算动量指标
- 检查调仓条件
- 如果触发调仓信号:
a. 生成交易订单(标记为待执行)
b. 等待下一个交易日
3. 在下一个交易日的9:30时刻:
- 获取当天的开盘价(已确定的历史数据)
- 应用滑点计算:成交价 = 开盘价 × (1 + 滑点率)
- 执行订单,更新持仓
- 更新账户资产关键特征:
- ✅ 价格确定性高:开盘价是已知的历史数据
- ✅ 更贴近实盘:考虑了实际执行的时间差
- ✅ 存在时间延迟:信号产生后需等待至次日开盘,有足够的时间处理
- ⚠️ 隔夜风险:价格可能跳空,成本可能变化,账户中必须留有足够额外资金应对成本的增加
示例:
回测日期:2024年1月5日(周五)
【次日开盘价交易回测】
15:00 - 计算动量,触发买入信号
15:00 - 生成买入订单(待执行)
- 参考价格:3.500元(当天收盘价,仅供参考)
下一个交易日:2024年1月8日(周一)
09:30 - 获取开盘价:3.540元(历史数据,可能高开)
09:30 - 应用滑点0.15%:成交价 = 3.540 × 1.0015 = 3.5453元
09:30 - 执行订单:买入1万股,成本35,453元
09:30 - 账户资产更新完成
→ 持仓在次日生效,承担了隔夜跳空风险(+1.14%)3.2 实盘模拟场景的处理逻辑
实盘模拟场景特点:
- 策略在真实市场环境中运行
- 与执行时间紧密关联
- 使用实时或最新市场数据
- 需要考虑实际执行的时间限制
3.2.1 当天收盘价交易在实盘模拟中的处理
WARNING
因为实盘模拟中,无法做到收盘后再成交,所以我们的处理方式是提前生成信号并成交,具体提前多久取决于我们设置的执行时间。
处理流程:
1. 系统在设定的执行时间(如14:30)触发策略计算
2. 在14:30收盘时:
- 计算动量指标
- 检查调仓条件
- 如果触发调仓信号:
a. 获取当前价格(接近收盘价)
b. 生成交易订单
c. 更新持仓关键特征:
- ⏰ 执行时间点提前:系统会在预设的时间(如14:45、14:50等)直接计算信号并下单,而非等到真实收盘时刻
- ⚠️ 信号偏差风险:由于执行时间早于收盘,动量排名等指标可能与最终收盘时刻存在差异,导致实际信号与理想信号有误差
- ⚠️ 成交价差异:下单时参考的是实时最新价,最终与收盘价存在价差
- ⚠️ 尾盘流动性风险:临近收盘可能部分无法成交,成交数量和价格与回测存在偏离
执行时间要求:
推荐执行时间:14:30:00 ~ 15:00:00
- 越接近收盘越好(14:50-15:00最佳)
- 此时市场波动相对较小
- 动量排名趋于稳定
- 策略执行效果更好示例:
实盘模拟日期:2024年1月5日(周五)
【当天收盘价交易实盘模拟】
14:50 - 系统触发策略计算(执行时间:14:50:00)
14:50 - 计算动量,触发买入信号
14:50 - 获取当前价格:3.498元(接近收盘价)
14:50 - 生成买入订单:买入1万股
14:50 - 更新持仓:买入1万股,成本34,980元
15:00 - 收盘价确定:3.500元,预期成本:3.500*10000=35,000元
⚠️ 实际情况可能:
- 实际成交价和收盘价存在更大价差,但是可能买入成本更低(上涨趋势),卖出收益更好(下降趋势)
- 收盘后动量排名变化,导致买卖的标的改变,从而导致与回测存在较大偏差3.2.2 次日开盘价交易在实盘模拟中的处理
处理流程:
1. 系统在设定的执行时间(必须在15:10之后)触发策略计算
2. 在收盘后(15:10之后):
- 计算动量指标
- 检查调仓条件
- 如果触发调仓信号:
a. 获取当天收盘价(已确定)
b. 生成交易订单(标记为待执行)
c. 订单等待至次日执行
3. 在下一个交易日的9:30开盘时:
- 获取开盘价(实时数据)
- 应用滑点计算成交价
- 执行订单,更新持仓关键特征:
- ⏰ 执行时间要求严格:必须在15:10之后执行
- ✅ 准备时间充足:有18小时以上的准备时间
- ✅ 成交概率高:开盘流动性好,几乎必然成交
- ✅ 价格可预测:开盘价虽然未知,但可通过集合竞价预估
执行时间要求:
必须执行时间:15:10:00 之后
推荐执行时间:15:30:00
⚠️ 系统限制:
- 如果选择次日开盘价交易,执行时间必须 ≥ 15:10:00
- 系统会自动禁用15:10之前的时间选项
- 建议选择15:30:00,给系统充足的计算时间
时间选择逻辑:
- 15:00-15:10:禁用(收盘数据未完全确定)
- 15:10之后:可用
- 建议:15:30:00(平衡数据准确性和系统稳定性)示例:
实盘模拟日期:2024年1月5日(周五)
【次日开盘价交易实盘模拟】
15:30 - 系统触发策略计算(执行时间:15:30:00)
15:30 - 计算动量,触发买入信号
15:30 - 获取收盘价:3.500元(已确定)
15:30 - 生成买入订单:买入1万股(待执行)
15:30 - 订单状态:等待次日开盘执行
下一个交易日:2024年1月8日(周一)
09:25 - 集合竞价阶段(可选:此时提交集合竞价订单)
09:30 - 获取开盘价:3.540元(实时数据,可能高开)
09:30 - 应用滑点0.15%:成交价 = 3.540 × 1.0015 = 3.5453元
09:30 - 执行订单:买入1万股,成本35,453元
09:30 - 更新持仓:买入完成
✅ 优势:
- 有充足时间准备和审核订单
- 开盘流动性好,成交概率高
- 执行结果与回测高度一致3.3 执行时间对实盘模拟的影响
执行时间的重要性:
在实盘模拟中,执行时间直接影响策略的计算时机和成交价格,特别是对于当天收盘价交易:
3.4.1 当天收盘价交易的执行时间影响
当天收盘价交易时,执行时间同时决定策略动量计算时获取的价格、成交时机、以及信号推送的时间
执行时间过早(如14:00):
- ❌ 市场波动较大,动量排名可能不稳定
- ❌ 距离收盘时间较长,价格可能发生变化
- ❌ 策略信号可能不够准确
执行时间适中(14:50-15:00):
- ✅ 市场波动较小,动量排名趋于稳定
- ✅ 接近收盘,价格接近最终收盘价
- ✅ 策略信号准确性高
执行时间过晚(15:00之后):
- ❌ 无法成交(收盘价已确定,但是已经收盘无法买入)
- ❌ 必须使用次日开盘后才手动买入,此时存在隔夜跳空风险3.4.2 次日开盘价交易的执行时间影响
次日开盘价交易时,执行时间只决定了信号推送的时间,动量计算的价格是确定的(收盘价),成交时机也是固定的,次日开盘时(9:30)
执行时间过早(15:00之前):
- ❌ 系统禁止(收盘数据未完全确定)
- ❌ 无法准确计算动量指标
执行时间合适(15:10-23:59):
- ✅ 收盘数据已完全确定
- ✅ 有充足时间计算和生成订单
- ✅ 可以在当晚或次日早上下单最佳实践建议:
当天收盘价交易:
- 执行时间:14:50:00 ~ 15:00:00
- 越接近收盘越好
次日开盘价交易:
- 执行时间:15:30:00(推荐)
- 必须在15:10之后