乖离率、动量和 MACD 底背离,怎样变成能回测的规则?

乖离率、动量与 MACD 背离

约 12 分钟1 个动手实验4 道小题

学完你能说清楚先写清假设和条件,再调参数、查数据、做样本外验证。

01学完这一课,你能做到什么

假设价格连续下跌,你想判断它是短期偏离,还是下跌趋势仍在延续;又或者,价格接近前低,但下跌动能正在减弱。不同判断对应不同策略,不能只因为图上出现一个指标就下结论。

学完这一课,你应该能:

  1. 写出和 20 日的计算式,并说明它们背后的不同假设;
  2. 把“ 底”拆成价格、柱值和右侧确认条件;
  3. 解释参数变化为什么会改变交易频率、持有时间和结果;
  4. 先排查价格、和日期范围等数据问题,再解释收益曲线;
  5. 用插件方式组织策略,并用窗口检查是否只是记住历史。

这节课的重点不是找一个永远有效的阈值,而是把主观判断变成可重复检查的规则。

一句话记住先写假设,再写条件,最后才看收益。

02乖离率:衡量价格离均线有多远

乖离率回答的是一个具体问题:当前收盘价相对某条均线偏离了百分之多少。

BIAS_N = (当日收盘价 − SMA_N) ÷ SMA_N × 100%

其中,SMA_N 是最近 N 个交易日收盘价的简单平均。假设 20 日均线是 100 元,今天收盘价是 94 元:

BIAS_20 = (94 − 100) ÷ 100 × 100% = −6%如果收盘价是 106 元:

BIAS_20 = (106 − 100) ÷ 100 × 100% = +6%正值表示价格在均线上方,负值表示价格在均线下方。它不是单日涨跌幅,也不是交易所规定的比例。

一个基础的均值回归规则可以写成:空仓且 BIAS < −6% 时买入;持仓且 BIAS > +6% 时卖出。它隐含的假设是,价格偏离均值较远后,偏离可能缩小。但均线也会随新数据移动,偏离缩小不一定代表价格上涨。

、和乖离率都能用于反转研究,但观察对象不同:RSI 比较上涨与下跌力量,布林带加入波动尺度,乖离率直接比较价格和均线的百分比。把它们放进同一个策略前,先说明每个指标增加了什么信息。

乖离率的计算

BIAS_N = (close − SMA_N) ÷ SMA_N × 100%

SMA=100、收盘价=94 时,BIAS=-6%。

三种指标看的不是同一件事
乖离率

价格离均线多远

看相对均值的百分比偏离。

RSI / 布林带

力量或波动区间

分别看涨跌力量,或把波动尺度放进价格区间。

一句话记住乖离率是相对均线的偏离,不是单日涨跌幅。

03参数变化会改变怎样的交易

常见观察周期包括 5、10、20、60 个交易日。短周期对价格变化更敏感,可能更早触发,也可能带来更多来回交易;长周期更平滑,但可能错过早期变化。

演示中曾出现一组结果:初始参数的总收益约 1.89%、年化约 1.96%,回撤较大;把阈值扩大到约 8% 后,几乎没有交易;保持买入阈值 −6%,把卖出阈值改为 +3% 后,年化曾被描述为约 6.8%。这些数字只是特定数据和运行口径下的样例,不能单独证明后一组参数更可靠。

买入和卖出阈值可以不对称。更深的负偏离意味着等待更强的下跌,较低的正阈值可能更早退出。早退出可能少让浮盈回吐,也可能错过继续上涨;晚退出可能拿到更完整的回归,也可能把盈利还回去。

“股性”不要停留在形容词。可以把它拆成可计算特征,例如收益波动、/价格、成交活跃度和趋势持续性,并且在每个历史时点用当时可得的数据计算。一个标的过去波动小,不代表未来永远稳定。

调参时要记录什么
  1. 1固定假设先决定研究回归还是趋势延续
  2. 2小范围试验只选有解释的周期和阈值
  3. 3保存每次结果记录收益、回撤、交易次数
  4. 4换窗口复核用未参与选择的时间段评价

一句话记住一次参数变好,不等于策略变可靠。

04数据异常要排在参数之前检查

如果 MACD 曲线突然出现异常,先检查数据,不要先改策略逻辑。某段前复权序列曾被怀疑出现负价;同时,请求的长区间和实际返回区间可能不一致。演示中还出现过“总收益约四倍、年化约 20% 或 24%”等不同说法,这些数字没有统一的可复算记录,不能当作已验证结果。

按下面顺序排查:

  1. 保存原始返回数据,不要先删除异常行;
  2. 核实价格来源、复权方式和字段含义;
  3. 对比未复权与复权序列,确认异常出现在哪一步;
  4. 检查计算库是否接受这组输入;
  5. 写明修复原则,再重新运行;
  6. 对照资金、成交、持仓和净值,而不只是看收益曲线是否变好。

请求从 2015 年开始,不代表返回结果一定覆盖到 2015 年;实际数据可能只到 2016 年 6 月 6 日。报告必须同时写请求区间和实际数据区间。

负值可能来自调整方式、采集错误或字段错位,必须取证。不能为了让图表好看就删除、取绝对值或强行改成正数。即使不写代码,也可以定义测试:请求和返回日期范围要能对上;没有信号时不应凭空成交;费用应减少现金。

异常曲线排查顺序
  1. 1原始数据保存异常输入
  2. 2字段和复权核对来源与算法
  3. 3指标和信号检查输入是否被接受
  4. 4成交和资金逐项对上日志
  5. 5重新运行报告实际日期范围

一句话记住先证明数据修复,再讨论参数效果。

05动量策略:研究延续,而不是回归

乖离率的出发点是“偏离后可能回归”,动量策略的出发点正好不同:近期强势可能延续一段时间。

用 20 个交易日表示动量:

M20 = close_t ÷ close_(t−20) − 1

假设 20 个交易日前收盘价为 100 元,今天收盘价为 106 元:

M20 = 106 ÷ 100 − 1 = 0.06 = 6%示例规则可以写成:空仓且 M20 > 5% 时买入;持仓且 M20 < −5% 时退出。退出条件看的是滚动 20 日变化,不是“买入以后亏损 5%”。如果还要设置成本,应另写条件,并规定它与动量退出谁优先。

“打板”和“强者恒强”只是风格描述,落地时还要考虑涨停是否能成交、次日是否能卖、和拥挤风险。某个标的在特定样本里动量表现较差,只能说明这组规则和这段行情不匹配,不能据此断定它永远不适合动量。

两个策略的假设不同
乖离率

偏离后可能回归

价格远离均线时寻找回归机会。

动量

强势可能延续

过去一段时间上涨较强时跟随趋势。

一句话记住20 日动量不是买入后的成本止损。

06把 MACD 底背离写成明确条件

“底背离”要表达的研究问题是:价格接近或跌破前低,但下跌动量没有同步恶化。要让程序执行,至少拆成价格条件、MACD 柱条件和可选的右侧确认。

假设使用 30 日窗口,并允许当前低价比过去低点高不超过 1%:

当前低价 ≤ 过去窗口最低价 × 1.01

例如旧低是 1,290 元,当前价格是 1,298 元。两者差为 8 元,

8 ÷ 1,290 ≈ 0.62%所以它落在 1% 的容忍范围内。1,290 元的 1% 是 12.90 元;如果基准是 1,455 元,1% 则是 14.55 元。

值要特别注意符号。假设前一个比较低点的柱值为 −10,当前柱值为 −8:下跌动能的绝对值从 10 变成 8,缩小了 20%。在旧柱为负数且比较对象定义一致时,可以用“当前柱值 ≥ 旧柱值 × 0.8”表达改善方向。旧柱为零或正数时,这条比例规则不能直接套用。

前两项是左侧识别条件。还可以增加 DIF 向上穿过信号线的右侧确认,用更晚的入场换取一个额外条件;确认仍可能失败。退出示例可以是 MACD 死叉。策略说明必须写清窗口是否排除今天、比较的是哪个低点、柱值定义、确认有效期和。

底背离的条件拆解

价格接近前低 + 当前负柱改善 + 可选 DIF 上穿 DEA 确认

每一项都要定义比较窗口、极值和时间边界。

左侧识别和右侧确认
左侧

先找可能的底部

价格接近前低,MACD 下跌动能减弱。

右侧

等更多确认

DIF 上穿信号线后再入场,但价格可能已经反弹。

一句话记住背离不是一句“没创新低”,而是一组可计算条件。

07用插件机制管理多种策略

当策略越来越多,不必每次都改主程序。可以让主程序扫描策略目录,读取每个插件的 metadata,再统一执行和生成报告。

一个插件至少应包含:

  • 唯一策略 ID、名称和说明;
  • 参数及其允许范围;
  • 所需数据字段和最短预热期;
  • 指标初始化逻辑;
  • 每根 判断交易条件的 next 逻辑;
  • 版本和依赖信息。

公共模块负责数据读取、资金、订单和报告,策略插件只描述自己的指标与规则。扫描成功后,还要检查参数是否兼容、预热期是否足够、运行结果是否有交易记录。

某些时间窗口可能完全没有背离交易,这是规则和样本的结果,不一定是程序出错。即使换到 2024–2025 年窗口,出现持有收益约 −12%、策略年化亏损不足 −1% 的描述,也必须先统一两种口径:持有总收益与策略年化不能直接并列比较。不要不断更换窗口直到得到好看的成绩。

策略插件的执行链
  1. 1扫描目录发现可信策略模块
  2. 2读取 metadata核对 ID、参数和依赖
  3. 3初始化指标准备数据和预热期
  4. 4运行 next按时间判断信号
  5. 5统一报告比较交易、资金和风险

一句话记住插件减少重复改主程序,不会自动减少研究偏差。

08调参和研究边界:一次只增加一种自由度

调参前先固定策略的经济或行为假设,再选小范围、能解释的候选值。网格搜索只是遍历参数组合并比较训练指标,它不会自动发现可靠参数。你应该保存每次尝试,并用另一个时间窗口评价。

如果想给 MACD 增加确认、K 线形态确认或波动过滤,一次只增加一种条件,再和原基线比较。每增加一个条件,就增加一次选择自由:可能减少假信号,也可能减少样本并增强。指标多不等于信息多,策略还必须包括入场、出场、、成本、执行和停用规则。

“筹码集中度”也不能简单从成交量直接得到。按成交价量分布构造的只是估计指标;有成交记录,不代表你知道每个投资者当前剩余持仓的成本。如果使用外部平台指标,要核对算法、历史覆盖和权限。网页能看到,也不等于允许任意抓取或调用。

最后用同一份数据分别实现乖离率、20 日动量和底背离。固定资金、成本和成交假设;第二轮只改一个参数;为每种策略记录三笔触发或未触发的手工核查。再用未参与调参的窗口测试,写出适用行情和失效条件。能复现、解释并承认失败边界,才算完成从指标到交易系统的一步。

一次完整的研究验收
  1. 1规则卡写清输入、条件和退出
  2. 2数据记录保存异常与实际区间
  3. 3参数表记录所有尝试
  4. 4交易日志手工核对触发和成交
  5. 5样本外用新窗口检查边界

一句话记住能复现并解释失败,才是研究完成。

动手试试

三种市场假设实验

切换趋势、震荡和下跌样本,调整阈值与确认条件,在 K 线上比较乖离率、动量和 MACD 底背离的信号。

固定教学样本三种市场假设实验
上涨 K 线下跌 K 线MA / BIAS
正在载入策略图表
均值回归乖离率

价格偏离移动平均线过远时寻找修复,单边下跌时容易过早入场。

运行后将显示K 线买卖点样本收益与回撤信号数量市场环境匹配度
检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01SMA 为 100 元、收盘价为 94 元时,BIAS 是多少?
0220 个交易日前价格 100 元,当前价格 106 元,M20 是多少?
03前一个低点的 MACD 柱为 −10,当前为 −8,且定义允许负柱改善。说明什么?
04为了减少过拟合,哪种调参方式更合适?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · 乖离率、动量与 MACD 背离把指标变成策略前,最先要做什么?

先写清市场假设、计算口径、触发条件和成交时点。

  • 回归和动量假设不同
  • 参数要留出样本外验证
  • 数据异常先于调参排查
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01乖离率比较价格和均线的相对偏离,动量比较滚动窗口内的价格变化,两者假设不同。
  2. 02周期和阈值会改变触发频率、退出时点和样本数量,一次好结果不足以证明参数可靠。
  3. 03异常价格、复权方式和实际日期范围要先查清,不能为了美化曲线任意修数据。
  4. 04MACD 底背离要定义价格低点、窗口、负柱符号、容忍比例和右侧确认。
  5. 05插件负责复用策略结构,样本外验证和统一口径仍然需要研究者完成。
完成这一课

完成这一课

读完讲义、动手做一次实验、答对小题,这一课就算学完了。

  • 读完讲义
  • 完成一次三种市场假设实验
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定合成趋势、震荡与下跌路径,按收盘确认、次日执行、100 股整手和简化交易成本模拟。

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。