Skip to content

第 5 讲:定投加均线门禁

本讲要点

加判断可以躲跌,也可能踏空;不保证比定投更好。


1. 先把样本拆成两段行情

第 2–4 讲使用的整段窗口(2021-01-012026-03-04)把下跌与随后修复叠在一起。若只看整段终点,容易把两种路径下的机制搅在一起。

本讲改为分两次实验

实验窗口行情特征(本样本)
实验一2021-01-012023-12-31下跌主导(约 −31%)
实验二2023-01-012026-03-04自下跌区间延续至修复(约 +27%)

两次实验各自独立起算累计成本与收益,互不接力。这样便于分别观察:同一条规则在弱势段与修复段是否同向有效。


2. 再引入均线门禁

N 日均线 = 最近 N 个交易日收盘价的算术平均。它把短期噪声抹平,给出一条可观察的趋势参考线。

关系常见含义
价格在均线上方短期偏强
价格在均线下方短期偏弱

在定投上增加一条门禁:

每月第一个交易日,仅当收盘价 > N 日均线时,才投入 1000 元;否则该月跳过。

本讲试 N = 10 / 20 / 60。实验二的均线用 2023 之前的价格预热,避免窗口起点处均线尚未形成。

常规上为什么可能更好

定投的缺点是下跌途中仍按月买入。均线门禁的意图是:

  1. 躲跌:跌破均线则暂停买入,少在持续下行区间加仓。
  2. 顺势恢复:价格重新站上均线后再买,更接近强势阶段参与。

在趋势分段清晰的弱势行情里,这常能减轻亏损——这是均线过滤的常规逻辑。但常规不等于必然:加判断改变的是买入时点与累计仓位,不保证终点收益高于定投。


3. 代码:分两次运行

python
WINDOWS = [
    ("实验一:下跌行情", "2021-01-01", "2023-12-31"),
    ("实验二:下跌延续至修复", "2023-01-01", "2026-03-04"),
]

df_full = load_df()  # 仍取完整样本,供均线预热

for name, start, end in WINDOWS:
    print(f"\n=== {name} {start}{end} ===")
    data = df_full.loc[:end]  # 含 start 之前的价格,用于均线
    result_dca = backtest_dca(data, trade_start=start)
    print(f"定投: {result_dca['return'].iloc[-1]:.2%}")

    for n in (10, 20, 60):
        r = backtest_dca_with_ma(data, ma_period=n, trade_start=start)
        buys = int(r["signal"].sum())
        print(f"MA{n:3d}: 收益 {r['return'].iloc[-1]:.2%},买入 {buys}/{len(r)} 次")

核心函数与第 3–4 讲相同;trade_start 表示从该月起才允许买入。完整脚本:easy-quant/code/05_ma_timing.py


4. 实验一结果:下跌行情(2021—2023)

text
=== 实验一:下跌行情 2021-01-01 → 2023-12-31 ===
定投: -18.49%
MA 10: 收益 -17.73%,买入 19/36 次
MA 20: 收益 -19.67%,买入 14/36 次
MA 60: 收益 -19.69%,买入 12/36 次

实验一下跌行情

读法:

  • 终点价格显著低于起点,定投与均线方案均为负收益——符合下跌样本。
  • MA10 略好于定投(−17.73% vs −18.49%):较短均线更频繁暂停弱势月买入,体现「躲跌」的常规方向。
  • MA20 / MA60 在本段并未更好:过滤过严或节奏与路径不匹配时,即使处在下跌市,也不保证占优。

因此:下跌行情里,均线有机会减轻亏损,但不是「凡均线必胜定投」。


5. 实验二结果:自 2023 下跌延续至 2026

text
=== 实验二:下跌延续至修复 2023-01-01 → 2026-03-04 ===
定投: 22.88%
MA 10: 收益 18.74%,买入 22/39 次
MA 20: 收益 17.69%,买入 17/39 次
MA 60: 收益 16.62%,买入 21/39 次

实验二修复行情

读法:

  • 本段价格由低位修复上行,定投终点收益约 22.88%
  • 三条均线均低于定投:弱势月被跳过,低价份额买得少;价格重新站上均线时再买,仓位更轻——这就是踏空
阶段定投定投 + 均线
价格多在均线下方照常买入,低位份额多跳过,仓位偏轻
价格回到均线上方已持有较多低价份额才恢复买入,累计份额更少

6. 两段合起来看

实验一(下跌)实验二(修复)
定投−18.49%+22.88%
均线是否更好MA10 略好;MA20/60 未更好三条均线均不如定投

对应本讲那句话:

  • 躲跌:弱势阶段少买,有时能减轻亏损(实验一中 MA10)。
  • 踏空:修复阶段少买低价,终点常输给定投(实验二)。
  • 不保证更好:同一规则、不同路径,结论可以相反;参数不同,结论也可以不同。

更一般地,均线易吃亏的情形还包括宽幅震荡中的反复穿越,以及底部短暂的 V 型反转。

结论:均线有明确的常规优势原理,但不是对定投的严格占优;是否更好取决于行情路径与参数。


7. 自然产生的下一个念头

「那我把 N 从 5 扫到 120,一定能找到最好的!」

下一讲我们就做这件事——在同一段历史上扫描,找出「最优」均线参数。


上一讲 · 下一讲:参数扫描