01学完这一课,你能做到什么
假设你在图表上看到 金叉、 低于 30,或者价格跌破下轨。看到这些信号以后,你还不能马上下单,因为你还要知道:信号怎样定义?什么时候成交?已经持仓时怎么办?
学完这一课,你应该能:
- 写出 MACD、RSI 和布林带的计算与触发条件;
- 区分“指标可以计算”和“指标已经构成有效策略”;
- 处理收盘后才知道的信号、未完成委托和持仓状态;
- 从 2025 年窗口和更长窗口的异常表现出发,按数据、信号、成交和报告逐项排查;
- 用同一个标的、时间区间、资金、费用和成交假设比较三种规则。
这三个指标都只是观察工具。它们能帮你描述趋势、强弱或价格相对区间,但不能保证下一根 一定上涨或下跌。
02MACD:从均线差到交叉信号
假设一条快开始向上,慢均线还没有跟上。MACD 不直接比较两条均线的价格,而是先计算它们的差,再对这个差做平滑。
经典参数通常写成 12、26、9:前两个数字用于快、慢 EMA,最后一个数字用于差值的信号平滑。EMA 是指数移动平均,会让较近的数据权重更高。
DIF = EMA12(收盘价) − EMA26(收盘价)
假设 EMA12 是 105,EMA26 是 100,那么:【】DIF = 105 − 100 = 5【】。
DEA = EMA9(DIF)
如果最近 9 个 DIF 的平滑结果是 4,那么 DEA 就是 4。柱值通常与 【】DIF − DEA【】 成比例;有些软件会再乘以 2,有些不会。假设 DIF 为 5、DEA 为 4,不乘 2 时柱值为 【】5 − 4 = 1【】,乘 2 时显示为 2。过零方向不变,但绝对数值阈值不能混用。
MACD 常见规则可以这样写:空仓时,DIF 向上穿过 DEA,产生买入候选;持仓时,DIF 向下穿过 DEA,产生卖出候选。这里的“穿过”是比较前后两个时点的相对位置,不是只看某一根柱子是否大于 0。
直接比较两条均线;MACD 比较均线差及其平滑值。多一层平滑可能减少一部分短期波动,也会增加延迟,不能因此断言 MACD 一定优于双均线。12/26/9 是广泛使用的参数,不代表天然有效。你也可以比较 10/20 等参数,但参数选择和结果评价要分开。
写成程序时,至少要有四个部分:【】params【】 集中放参数;【】indicator【】 建立 MACD 和交叉指标;【】next【】 在每根新 K 线检查条件;负责避免已有未完成委托时重复提交。收盘后才知道的信号,不能无条件假设自己能以同一根收盘价成交。
DIF = EMA12(close) − EMA26(close);DEA = EMA9(DIF)
DIF=5、DEA=4 时,未乘 2 的柱值为 1。
- 1输入按时间排序的同一复权口径收盘价
- 2计算DIF、DEA 和柱值
- 3判断空仓看向上穿,持仓看向下穿
- 4成交按真实可获得的信号时点执行
一句话记住先写清比较哪两条线,再谈金叉和死叉。
03先查数据,再解释 MACD 的结果
假设你把测试窗口设为 2025 年 1 月 1 日至 12 月 31 日,某次输出显示资金曲线约为 −4%,平均约为 1.79,不高,利润也偏弱。这样的数字只能作为一次运行结果,不能脱离数据、代码和完整日志直接当成可复现结论。
可以把 【】run_and_report【】 想成一个公共流程:读取行情、初始化、设置资金和费用、挂载策略、运行回放,再输出交易和资金报告。数据库里的行情可能包含日期、开盘价、最高价、最低价、收盘价和 volume(成交量);你仍然要检查实际字段和数据覆盖。前也要以实际数据库口径为准,不能只凭配置名称猜测。
如果把起始日期改到 2015 年后,资金曲线看起来不合理,按下面顺序排查:
- 数据库实际覆盖的首日和末日是什么,是否真的包含请求年份;
- 日期是否排序,是否有重复、缺失或非交易日误填;
- OHLC 和 volume 是否对应正确列,复权因子是否一致;
- 指标预热是否足够,首个信号是否落在有效区间;
- 逐笔信号、委托、成交、持仓和现金是否能逐项对上;
- 图表画的是资金、净值、收益率还是回撤,标签是否正确。
如果日志提到约 2015 年 11 月 11 日的一笔交易,就把这一天的原始行情、指标值、信号、订单和成交记录串起来检查。不要因为“这只股票长期应该上涨”就断定程序一定错,也不要因为使用成熟库就断定逻辑一定正确。证据来自记录和小样例的复算。
一句话记住异常曲线先找证据,不用直觉替程序下结论。
04RSI:把超买超卖当条件,不当预测保证
假设最近一段时间上涨幅度较大,下跌幅度较小。RSI 用一个 0 到 100 附近的数,描述上涨和下跌力量的相对关系。
常见公式是:
RSI = 100 − 100 ÷ (1 + RS)
其中,RS = 平均上涨幅度 ÷ 平均下跌幅度。假设平均上涨幅度为 2,平均下跌幅度为 1,那么 【】RS = 2 ÷ 1 = 2【】,【】RSI = 100 − 100 ÷ 3 ≈ 66.7【】。不同指标库可能使用不同平滑和初始化方式,所以参数相同,数值也可能略有差异。
基础示例使用 14 周期、低于 30 视为超卖、高于 70 视为超买。一个简单的均值回归规则是:空仓且 【】RSI < 30【】 买入;持仓且 【】RSI > 70【】 平仓。另一种规则是等待 RSI 从 30 以下重新穿回 30 后才入场,这和“低于 30 立即入场”不是同一条规则,实验时不要混用。
使用收盘价,是为了只用已经完成的一个周期计算信号。如果当天还没有收盘,实时 RSI 只是临时值,不能和历史收盘 RSI 混在一起比较。
超卖可能继续超卖。强趋势里 RSI 可以长时间处于极端区间。因此完整规则还要写清退出、、成本和停用条件。高胜率也可能被少数大亏抵消。
一句话记住RSI 极端可以持续,阈值不是反转保证。
05布林带:滚动均值和波动区间
假设你想知道价格相对近期平均水平偏高还是偏低。布林带用一条滚动均线做中轨,再用标准差估计波动范围。
本课示例参数是 20 日均线和 2 倍过去 20 日标准差:
中轨 = 20 日收盘价均值
假设 20 日均值是 100,那么中轨就是 100。
上轨 = 中轨 + 2 × 标准差;下轨 = 中轨 − 2 × 标准差
假设标准差是 3,那么上轨为 【】100 + 2 × 3 = 106【】,下轨为 【】100 − 2 × 3 = 94【】。
均值回归设想可以把“接近或跌破下轨”作为候选入场,把“接近上轨”作为候选退出。但你必须继续规定:用收盘穿越、盘中触及,还是回到带内确认?三种写法对应不同的信号和成交时点。
“约 95%”只是在特定正态分布条件下对两倍标准差区间的描述。真实价格不是固定均值、固定方差的独立正态样本。对一般有限方差分布,切比雪夫不等式给出的两倍标准差范围下界是 75%,不是 95%。无论使用哪种解释,落在区间外都不能推出下一期一定回归。
布林带反转更依赖震荡环境。趋势中价格可能沿着上轨持续上涨,也可能沿着下轨持续下跌。某次固定样本里,三次交易两次获胜、总收益约 7%、约 2.49%,【】7 ÷ 2.49 ≈ 2.81【】,可以帮助理解“ 接近 3”的说法;但只有三笔交易,不能推断未来胜率,也不能把结果推广到所有蓝筹股。
上轨 = 中轨 + 2σ;下轨 = 中轨 − 2σ
中轨 100、标准差 3 时,上轨 106、下轨 94。
价格跌破下轨
它满足了一个候选条件,需要继续检查环境和成交规则。
下一步一定反弹
趋势行情可能沿下轨继续下跌,必须设置退出和风险边界。
一句话记住跌出下轨是候选信号,不是必然反转。
06用同一实验框架比较三种规则
把三种规则放在同一张表里:
| 项目 | MACD 基础规则 | RSI 基础规则 | 布林带反转规则 |
|---|---|---|---|
| 主要观察 | 趋势及其变化 | 上涨与下跌力量 | 均值与波动区间 |
| 示例参数 | 12/26,信号平滑周期需写清 | 14、30/70 | 20、2 倍标准差 |
| 常见误区 | 认为所有金叉都能延续 | 认为超卖马上上涨 | 认为越界必然回归 |
| 必查问题 | 平滑延迟、震荡反复交叉 | 极端值持续、平滑差异 | 趋势失效、触发价口径 |
比较时固定同一个标的、起止日期、初始资金、费用、、复权方式、成交时点和基准。改变市场窗口是为了研究适用环境,不是为了不断挑选最有利的窗口。
公共模块可以复用数据读取、回测、指标统计和资金图;策略模块只描述参数、指标和交易条件。这样做能减少重复代码,也更容易定位问题究竟来自数据、策略还是报告。
动手验收时,先画三张规则卡,逐项写出输入、指标、触发、成交时点、仓位和退出。为每种策略挑三笔信号,手工核对指标与程序输出。再故意请求数据库没有覆盖的年份,系统应明确提示覆盖不足,不能默默缩短数据却把结果标成全年结果。
最后分别写下:哪条规则在本次样本更好;证据有多充分;换到什么市场环境可能失效。
三策略环境实验
切换趋势上涨、宽幅震荡和单边下跌三种固定行情,对比 MACD、RSI 与布林带规则的收益、回撤、交易次数和盈利结构。
先判断哪种策略假设更匹配当前环境,再运行固定样本。
4 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
还要定义成交时点、持仓状态、仓位、退出和风险边界。
- 指标可计算不等于策略有效
- 超买超卖可能持续
- 比较必须统一口径
记住这 5 句话
- 01MACD 先计算快慢 EMA 的差,再对差值平滑;12/26/9 是常用参数,不是有效性保证。
- 02收盘后才知道的信号要按真实可获得的时点成交,订单状态和持仓状态也要写进规则。
- 03RSI 的 30/70 是候选条件,超卖可能持续,强趋势里不能把极端值当成反转保证。
- 04布林带的两倍标准差不能直接推出价格必然回归,反转规则更依赖震荡环境。
- 05比较三种指标要统一数据、资金、费用、成交和基准,并从交易记录和小样例复核报告。
完成这一课
读完讲义、动手做一次实验、答对小题,这一课就算学完了。
- 读完讲义
- 完成一次三策略环境实验
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定合成趋势、震荡与下跌路径,使用简化的次日成交和教学成本,用于比较策略假设。
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。