跳转至

单股多技术指标混合交易模型实战教学实验室(以甲骨文 US.ORCL 为例)

所属模块:@knowledge 量化知识库实战教学模块(关联 M02 交易策略范式、M03 数据与回测工程、M04 资金管理与风险控制) 研究标的:甲骨文公司(Oracle Corp., US.ORCL),只做多不做空(Long-Only, 仓位 \(\in [0, 1]\),无杠杆) 对比基准:同周期甲骨文(US.ORCL)100% 满仓买入持有(Buy & Hold,含分红再投资) 状态:verified(内置随仓 Git 种子数据与 SHA-256 校验,任何设备拉取代码即可一键复现) 一键复现命令:uv run python -m knowledge.Labs.technical_indicators_lab.run_lab


一、教学目标:为什么单靠一个技术指标往往亏钱,而多指标分态共振能大幅跑赢个股本身?

在股票实战中,个人投资者最常接触的就是 MACD(指数平滑异同移动平均线)、RSI(相对强弱指标)、BOLL(布林带通道)、OBV(能量潮) 与 ATR(真实波幅) 等经典技术指标。然而,照搬教科书上的“金叉买、死叉卖”或“超卖买、超买卖”,在真实个股回测中往往跑输简单的“买入持有(Buy & Hold)”。

本实验以美股软件与云计算巨头 甲骨文(US.ORCL) 在 2008-01-02 至 2026-10-02(共 18.72 年、4,718 个交易日,另有 2006.09–2007.12 作为 200 日均线暖机期)的真实日线历史数据为样本,严格遵循「本地回测 → 诊断问题 → 调整模型 → 再回测」的科学迭代闭环,完整演示 5 个递进式技术指标模型方案:

  1. 为什么对甲骨文直接用经典 MACD(12,26,9) 金叉死叉会严重跑输买入持有?(揭示大盘蓝筹股的短期均值回归特征与相位滞后陷阱)
  2. 为什么用 RSI + BOLL 均值回归能达到 83% 胜率,却仍然承受超过 50% 的最大回撤?(揭示“左侧无确认接飞刀”与缺乏尾部止损的隐患)
  3. 如何将 MACD(动能拐点)、RSI(超买超卖)、BOLL(波动率通道)、OBV(量价确认)、ATR(吊灯追踪止损)与 SMA50/200(牛熊分态)有机耦合,在不做空、不加杠杆的前提下,将年化收益从基准的 11.67% 提升至 17.04% ~ 19.20%,并将最大回撤从 64.58% 史诗级压降至 23.26%?

二、甲骨文(US.ORCL)技术指标特征诊断与五大核心指标公式

2.1 五大核心技术指标定义

指标类别 指标名称与参数 核心公式与统计含义 在混合模型中的角色
趋势与动能 MACD (12, 26, 9) \(\text{DIF} = \text{EMA}_{12}(P) - \text{EMA}_{26}(P)\)
\(\text{DEA} = \text{EMA}_9(\text{DIF})\),\(\text{Hist} = 2(\text{DIF}-\text{DEA})\)
用 \(\text{Hist}_t > \text{Hist}_{t-1}\)(绿柱缩短)捕捉下跌减速拐点;用 \(\text{Hist}_t < \text{Hist}_{t-1}\)(红柱缩短)识别顶部动能衰竭
超买超卖摆动 Wilder RSI (14 / 6) \(\text{RSI}_n = 100 - \frac{100}{1 + \text{EMA}_n(\Delta P^+) / \text{EMA}_n(\Delta P^-)}\) 度量多空力量极值:牛市回调 < 40、熊市恐慌 < 34 识别超卖;> 69 识别过热
波动率通道 BOLL (20, 2) 百分比 %B \(\text{Mid} = \text{SMA}_{20}(P)\),\(\text{Up/Low} = \text{Mid} \pm 2\sigma_{20}\)
\(\%B = \frac{P - \text{Low}}{\text{Up} - \text{Low}}\)
度量价格在布林通道内的相对分位:%B < 0.15 触及下轨支撑,%B > 0.85 触及上轨压力,%B > 1.10 极度偏离吹顶
量价资金流 OBV 能量潮 \(\text{OBV}_t = \sum_{k=1}^t \text{sign}(P_k - P_{k-1}) \cdot V_k\) 要求突破信号满足 \(\text{OBV}_t > \text{EMA}_{20}(\text{OBV})\),过滤无量诱多假金叉
波动率风控与分态 ATR(14) 吊灯止损 + SMA(50/200) (\text{TR}_t = \max(H-L, H-P_{t-1}

2.2 关键数据诊断:为什么甲骨文的指标规律与指数不同?

在编写策略前,我们对甲骨文 2008–2026 共 4,718 个交易日在不同技术指标状态下的未来 1 日 / 5 日年化期望收益率进行了统计检验:

  • 全样本基线(4,718 天):日均算术年化收益 +16.47%(几何复利年化 11.67%),最大回撤高达 -64.58%(发生在 2025.09 算力泡沫高点 $345.72 跌至 2026.07 低点 $114.50 期间)。
  • 超卖低吸区(RSI14 < 40 或 BOLL %B < 0.20):未来 1 日年化期望收益高达 +46.4% ~ +56.2%!因为甲骨文作为现金流极强的企业级软件龙头,每逢短期急跌进入超卖区,公司大规模股票回购与价值买盘便会强力介入。
  • 超买动能衰竭区(RSI14 > 68 或 %B > 0.85 且 MACD Hist 缩短):未来 1 日年化期望收益骤降至 -64.9% ~ -87.8%!短期情绪过热且动能柱转弱时,极易发生均值回归回调。
  • 相位错位定律(Phase Alignment):在价格波段见顶当日,快指标(RSI14、%B)率先冲高;而慢指标(MACD DIF/DEA 死叉)往往滞后 5–12 个交易日才触发。用 RSI + BOLL 识别位置极值,用 MACD Hist 一阶差分识别动能拐点,才能实现真正的“多指标相位对齐共振”!

三、五个模型方案的「回测 → 诊断 → 调整 → 再回测」完整对比

所有方案均严格满足:只做多不做空(仓位 \(\in [0, 1]\))、\(t\) 日收盘信号在 \(t+1\) 日生效(无前视偏差)、单边交易成本 10 bps(0.10%)、空仓期货币基金年化收益 1.5%、初始资金 $100,000。

3.1 绩效指标总表(2008-01-02 至 2026-10-02,共 18.72 年)

模型编号 模型方案名称 年化收益 CAGR (%) 相对 ORCL 超额年化 (%) 累计总收益 (%) 年化波动 Vol (%) 夏普 Sharpe 索提诺 Sortino 最大回撤 MaxDD (%) 卡玛 Calmar 在市时间占比 (%) $100k 期末净值 ($)
BM_ORCL 基准: 甲骨文买入持有 (Buy & Hold) 11.67% 0.00% +689.8% 33.12% 0.50 0.75 64.58% 0.18 100.0% $789,850
方案 1 经典 MACD 趋势跟踪 (M1_MACD_Trend) 6.46% -5.21% +222.7% 21.87% 0.40 0.58 50.99% 0.13 49.3% $322,742
方案 2 RSI + BOLL 通道均值回归 (M2_RSI_BOLL_Reversion) 12.14% +0.47% +754.6% 30.96% 0.52 0.79 51.71% 0.23 82.8% $854,591
方案 3 MACD + RSI + BOLL 三元混合模型 (M3_Hybrid) 16.83% +5.16% +1,740.3% 26.19% 0.72 1.15 42.27% 0.40 63.6% $1,840,318
方案 4 MACD+RSI+BOLL+OBV+ATR 高弹性共振 (M4_Chandelier) 19.20% +7.53% +2,578.1% 25.68% 0.81 1.31 41.26% 0.47 59.5% $2,678,150
方案 5 终局牛熊分态多指标共振模型 (M5_Regime_Alpha) 17.04% +5.37% +1,801.5% 21.67% 0.83 1.38 23.26% 0.73 40.5% $1,901,518

3.2 交易行为、胜率、盈亏比与成本概括性总结总表

模型编号 模型方案名称 总交易指令 (笔) 买入建仓 (次) 超买止盈卖出 (次) 止损/趋势离场 (次) 完整波段轮次 (轮) 单笔波段胜率 (%) 平均单笔盈利 (%) 平均单笔亏损 (%) 盈亏幅度比 (Payoff) 利润因子 (Profit Factor) 平均持仓天数 (交易日) 累计总成本 ($) 年化成本拖累 (bps/yr)
BM_ORCL 基准: 甲骨文买入持有 (Buy & Hold) 1 1 0 0 1 100.0% +689.85% 0.00% — — 4,718.0 $100 0.5 bps
方案 1 经典 MACD 趋势跟踪 (M1_MACD_Trend) 346 173 0 173 173 42.2% +7.05% -3.58% 1.97x 1.27 13.5 $55,628 184.8 bps
方案 2 RSI + BOLL 通道均值回归 (M2_RSI_BOLL_Reversion) 47 24 23 0 24 83.3% +14.32% -11.55% 1.24x 2.67 162.8 $20,352 25.1 bps
方案 3 MACD + RSI + BOLL 三元混合模型 (M3_Hybrid) 88 44 28 16 44 70.5% +17.27% -14.09% 1.23x 2.16 68.2 $48,652 47.0 bps
方案 4 MACD+RSI+BOLL+OBV+ATR 高弹性共振 (M4_Chandelier) 112 56 25 31 56 57.1% +17.82% -7.58% 2.35x 2.17 50.1 $79,487 59.8 bps
方案 5 终局牛熊分态多指标共振模型 (M5_Regime_Alpha) 84 42 20 22 42 59.5% +17.36% -6.14% 2.83x 3.49 45.5 $40,024 44.9 bps

3.3 五个模型方案的逐轮演进深度复盘

🔹 方案 1(M1_MACD_Trend):经典 MACD(12,26,9) 趋势跟踪 —— 为什么单靠 MACD 会亏钱?

  • 交易规则:DIF > DEA(金叉)买入满仓做多;DIF < DEA 且 MACD Hist 下降(死叉确认)卖出清仓。
  • 回测诊断:18.72 年共触发 346 笔交易(173 轮波段),平均持仓仅 13.5 天,胜率仅 42.2%,年化成本拖累高达 184.8 bps/年,最终年化收益仅 6.46%(大幅跑输甲骨文自身买入持有 11.67% 达 -5.21%/年)。
  • 核心教训:EMA12 - EMA26 具有天然的相位滞后。在甲骨文这类高回购蓝筹股上,等 DIF > DEA 金叉出现时,股价往往已经连涨两周逼近布林带上轨;等死叉出现时,股价已经回调到了布林带下轨支撑区。单用滞后趋势指标在震荡蓝筹股上交易,本质上是在“高点追涨、低点杀跌”。

🔹 方案 2(M2_RSI_BOLL_Reversion):RSI(14) + BOLL(20,2) 通道均值回归 —— 高胜率背后的深回撤软肋

  • 针对性调整:既然甲骨文短期均值回归极强,我们改用 RSI(14) < 42 或触及布林下轨(%B < 0.15)超卖买入;当 RSI(14) > 74 且突破布林上轨(%B > 0.90)超买止盈。
  • 回测结果:24 轮波段中 20 轮盈利,单笔波段胜率高达 83.3%!年化收益率提升至 12.14%(首次超越买入持有基准 +0.47%/年),交易指令从 346 笔锐减至 47 笔。
  • 遗留问题诊断:虽然胜率极高,但最大回撤仍高达 51.71%!原因有二:
  • 左侧盲目接刀:在 2008 金融危机、2022 熊市与 2025.10–2026.07 崩盘初期,股价刚跌破布林下轨(%B < 0.15)但下跌动能仍在加速时就过早满仓买入;
  • 没有风控止损出口:买入后如果遇到熊市单边下跌,股价永远涨不到 RSI14 > 74,模型就会一路死扛到底。

🔹 方案 3(M3_MACD_RSI_BOLL_Hybrid):MACD + RSI + BOLL 三元混合模型 —— 相位对齐与风控闭环

  • 针对性调整(把 MACD 从“滞后发令枪”改造为“拐点确认器”):
  • 右侧确认超卖低吸:当 RSI14 < 40 或 BOLL %B < 0.15 进入超卖区时,不再盲目左侧接刀,必须等待 MACD Hist 绿柱缩短拐头向上(Hist[t] > Hist[t-1]) 或极端超卖(RSI6 < 20)才买入;
  • 顺势突破轨补充:当股价站稳布林中轨且未过热(RSI14 < 56)时,若出现 MACD 金叉则顺势入场,避免踏空主升浪;
  • 共振止盈 + 移动追踪止损:当 RSI14 > 69 且 %B > 0.85 同时伴随 MACD 红柱缩短(Hist[t] < Hist[t-1] 动能衰竭) 或极值吹顶(RSI14 > 78 & %B > 1.10)时精准止盈;若持仓从波段最高点回撤超 18% 且 DIF < DEA,立即止损离场并冷静 10 个交易日。
  • 回测验证:年化收益率大幅跃升至 16.83%(跑赢甲骨文基准 +5.16%/年,期末净值从 $79.0万 翻倍至 $184.0万),夏普升至 0.72,最大回撤降至 42.27%,卡玛翻倍至 0.40!

🔹 方案 4(M4_OBV_ATR_Chandelier):+ OBV 能量潮 + ATR(14) 吊灯止损 —— 年化 19.20% 的进攻巅峰

  • 针对性调整:
  • 加入 OBV 量价资金流确认:要求 MACD 顺势金叉突破时必须满足 OBV > OBV_EMA20(能量潮处于均线之上,代表真金白银净流入),剔除无量虚涨假突破;
  • 引入 Chuck LeBeau 的 ATR(14) 吊灯追踪止损(Chandelier Exit):用 max(Peak - 4.5 * ATR14, Peak * 0.84) 替代死板的 18% 固定止损。当波动率放大时给予合理呼吸空间,当高点回落超 4.5 倍 ATR 时迅速斩断亏损。
  • 回测验证:
  • 净年化收益率冲上 19.20%(相对甲骨文基准超额 +7.53%/年!),累计总收益高达 +2,578.1%($100,000 增至 $2,678,150,是买入持有期末财富的 3.39 倍!);
  • 平均单笔亏损从方案 3 的 -14.09% 大幅收敛至 -7.58%,盈亏幅度比从 1.23x 跃升至 2.35x,夏普升至 0.81,索提诺升至 1.31!

🏆 方案 5(M5_Regime_Adaptive_Alpha):终局牛熊分态多指标共振模型 —— 将最大回撤从 64.58% 压至 23.26%

  • 最后一道诊断:为什么方案 4 在 2022 年熊市和 2025.11–2026.07 暴跌中仍有 41.26% 的最大回撤?
  • 复盘发现:当股价处于中长期空头下跌趋势(Close < SMA200,或者从泡沫高点崩盘跌破 SMA50 且 MACD DIF < 0、DEA < 0 双线落入零轴水下)时,普通的超卖阈值(RSI14 < 40 或 %B < 0.15)会在下跌第一波中继就过早触发抄底,导致在 2022 年与 2026 年连续遭遇 3–4 次止损磨损!
  • 终局调整(牛熊分态非对称阈值 Regime-Adaptive Thresholds):
  • 多头上升态(Uptrend Regime):保持敏捷的 RSI14 < 40 / %B < 0.15 回调低吸与 MACD + OBV 顺势突破;
  • 空头下跌态(Downtrend Regime:Close < SMA200 或 Close < SMA50 & DIF < 0 & DEA < 0):将低吸门槛严格收紧至 深度极值恐慌(RSI14 < 34 或 BOLL %B < 0.08),且必须同时满足 MACD Hist 绿柱缩短 + 当日收盘价高于前一日收盘价(阳线企稳确认) 才允许入场!
  • 终局验证(全面超越预期):
  • 净年化收益率达 17.04%(超越甲骨文同周期基准 +5.37%/年,期末净值 $1,901,518);
  • 最大回撤从甲骨文基准的 64.58% 断崖式压降至 23.26%(整整削减了 41.32 个百分点!);
  • 夏普比率达 0.83(基准 0.50),索提诺比率达 1.38(基准 0.75),卡玛比率达 0.73(基准 0.18 的 4.05 倍!);
  • 仅用 40.5% 的在市持仓时间(其余 59.5% 时间安享空仓无风险收益、规避暴跌),42 轮波段胜率 59.5%,平均盈利 +17.36% vs 平均亏损 -6.14%,盈亏幅度比高达 2.83x,利润因子高达 3.49!

四、全套回测结果与 K 线买卖点可视化详解

4.1 累计净值(对数坐标)与水下回撤对比图 (01_orcl_equity_and_drawdown.png)

甲骨文五种技术指标模型净值与回撤对比

核心看点: - 在 2008 金融危机、2022 加息熊市 与 2025–2026 估值剧震 (-64.6%) 三个黄色阴影区内,深蓝虚线(甲骨文买入持有)每次都经历惨烈深跌;而紫色实线(方案 4)与青绿粗实线(方案 5)在主升浪同步跃升,在崩盘期则化身平坦的“避险高台”,水下回撤曲线(下图绿色填充区)始终稳稳守在 -25% 控制线以内。


4.2 五个模型方案核心指标阶梯演进仪表盘 (02_five_models_progression.png)

甲骨文技术指标混合模型五阶段演进

核心看点: - 清晰展示从 方案 1 (单MACD踩坑: 6.46%) → 方案 2 (RSI+BOLL: 12.14%) → 方案 3 (三元混合: 16.83%) → 方案 4 (+OBV+ATR进攻型: 19.20%) → 方案 5 (终局分态稳健型: 17.04%, 回撤 23.26%, 卡玛 0.73) 的完整优化轨迹。


4.3 2023–2026 主升浪与暴跌周期的 K 线 + BOLL + RSI + MACD + 仓位四联主副图 (03_kline_multi_indicator_signals_recent.png)

甲骨文2023-2026多指标主副图联动与K线买卖点标注

主副图多指标共振经典战例拆解: 1. 2024 年三连胜波段:分别在 24.02.21(+19.0%, 21天)、24.04.17(+18.3%, 45天)、24.08.08(+27.9%, 25天)利用价格回踩 BOLL 下轨 + RSI14 < 40 + MACD 绿柱缩短精准低吸,并在冲上 BOLL 上轨 + RSI14 > 69 时触发 ▼ 止盈; 2. 2025.08 – 2025.09 算力狂潮精准逃顶(+38.6%): - 25.08.25 在布林下轨附近触发 ▲ 买入建仓; - 25.09.10 甲骨文因云算力大单单日暴涨 +36%,直冲布林上轨上方(%B = 1.50)、RSI14 飙至 83.1(极度超买吹顶阈值触发),模型于 25.09.11 果断触发 ▼ 止盈(12个交易日锁定 +38.6% 暴利)! - 随后甲骨文从 $345 一路暴跌 -64.6% 至 $114,而方案 5 因 Close < SMA50 且 MACD 双线水下触发空头分态保护,严拒中途接飞刀,完美避开 2025.10–2026.01 的主跌浪! 3. 2026.02 – 2026.06 恐慌极值抄底大捷(+74.0%): - 26.02.06 当 RSI14 跌破 34 深度恐慌阈值且出现阳线 + MACD 绿柱缩短确认时,模型精准触发 ▲ 买入建仓,一路持有 78 个交易日 至 26.06.02 再次触及超买吹顶阈值触发 ▼ 止盈,单轮大赚 +74.0%,同时又一次在 2026 年 6–7 月 -53% 二次暴跌前全身而退!


4.4 四大历史周期 K 线买卖点全景切片 (04_kline_historical_cycles_zoom.png)

甲骨文四大历史周期K线交易信号全景切片

  • 子图 (A) 2008–2011 金融危机与复苏:2008 年 2 月触发止损离场后,在 2008 下半年雷曼危机暴跌中安全避险,并在 2009–2011 连续斩获 +28.0%、+20.0%、+16.4%、+17.7% 四轮完整止盈;
  • 子图 (B) 2012–2016 云转型箱体震荡期:在长达 4 年的横盘箱体中连续打出 +25.7%、+18.5%、+15.8%、+9.6%、+11.2% 波段连胜;
  • 子图 (C) 2019–2023 疫情熔断与 2022 加息熊市:20.03 底部突破买入大赚 +36.2%,而在 2022 年加息熊市下跌段几乎全程空仓避险,2022 年 9 月底精准抄底并在 10 月底止盈 +19.5%;
  • 子图 (D) 2023–2026 AI 算力狂潮与泡沫破裂:完整呈现连续 6 轮正收益止盈与 2025.09 / 2026.06 两次教科书级逃顶。

4.5 六大历史阶段对比与月度收益热力图 (05_phase_and_monthly_heatmap.png)

甲骨文六大历史阶段收益拆解与月度热力图


4.6 交易点分布、波段盈亏比、滑点压力测试与总成绩单 (06_trade_summary_and_cost_dashboard.png)

甲骨文技术指标实验全景总结仪表盘

交易概括性总结亮点: - 子图 (A) 全部 84 笔 K 线交易点:42 次 ▲ 买入建仓、20 次 ▼ 超买止盈、22 次 ◆ ATR吊灯止损; - 子图 (B) 42 轮波段盈亏分布:25 轮盈利波段平均净赚 +17.36%,17 轮亏损波段平均仅亏 -6.14%(单笔最大亏损被严格锁定在 -17.6% 以内),盈亏幅度比 2.83x,利润因子 3.49; - 子图 (C) 滑点与佣金压力测试(0 ~ 40 bps):即便将单边交易成本从默认的 10 bps 翻 4 倍至极端严苛的 40 bps(双边 0.80%),方案 4(17.35% CAGR)与 方案 5(15.48% CAGR)依然大幅跑赢甲骨文买入持有基准(11.67%)。


五、跨设备一键复现指南(零外部依赖)

为了让任何其他设备(Windows / macOS / Linux)在 git pull 拉取代码后无需配置富途 OpenD、无需联网下载数据即可 100% 复现本教学案例:

  1. 本模块在 knowledge/Labs/technical_indicators_lab/seed_data/ 下内置了经过 SHA-256 校验的甲骨文(US.ORCL)历史日线与分红除权种子数据(US.ORCL_bars.csv 与 US.ORCL_actions.csv);
  2. 当本机存在 data/processed/snapshots/futu-us-eq50-bil-20261006 快照时,data_sandbox.py 会自动校验快照哈希并拷贝至本地沙箱;当在全新设备上直接运行时,会自动无缝回退读取 seed_data/ 种子包,产出完全一致的回测结果与图表。

目录结构

knowledge/Labs/technical_indicators_lab/
├── __init__.py
├── README.md                                          # 本教学讲义与实验报告
├── data_sandbox.py                                    # 跨设备可复现数据沙箱与前向复权引擎
├── backtest_engine.py                                 # 单股只做多回测引擎、K线交易账本与波段统计
├── indicator_models.py                                # 7大技术指标计算库与 5 个递进模型方案实现
├── visualize.py                                       # 6 张高清诊断与 K 线标注图表渲染脚本
├── run_lab.py                                         # 一键复现运行入口
├── seed_data/                                         # 随 Git 提交的甲骨文历史数据种子包 (SHA-256 校验)
│   ├── US.ORCL_bars.csv
│   ├── US.ORCL_actions.csv
│   └── manifest.json
├── figures/                                           # 自动生成的 6 张可视化图表
│   ├── 01_orcl_equity_and_drawdown.png
│   ├── 02_five_models_progression.png
│   ├── 03_kline_multi_indicator_signals_recent.png
│   ├── 04_kline_historical_cycles_zoom.png
│   ├── 05_phase_and_monthly_heatmap.png
│   └── 06_trade_summary_and_cost_dashboard.png
└── outputs/                                           # 自动导出的绩效汇总、交易账本与 JSON 报告
    ├── model_performance_summary.csv
    ├── trade_execution_summary.csv
    ├── m4_kline_trade_events.csv
    ├── m4_round_trip_trades.csv
    ├── m5_kline_trade_events.csv
    ├── m5_round_trip_trades.csv
    └── orcl_lab_report.json

在任意设备上执行复现

git pull
uv run python -m knowledge.Labs.technical_indicators_lab.run_lab