做这系列快十期了,几乎每个公式都藏着一两个低级错误:一行里塞两个赋值、累加链前向偏差、条件恒为真。以至于我都快形成肌肉记忆——拿到公式先找 bug。
这份"底背离 + 吸筹起爆"双信号公式,我逐行扫完,居然没找到语法错,也没有死代码。逻辑自洽,变量都用上了。
但我还是跑了回测。结果比"有 bug"更让人头皮发麻。

一、这次源码真的干净
先说它写对了什么,免得你觉得我在黑它:
第一步:用 60 日最高、最低把价格归一化成 0 到 100 的"位置比",低于 30 算低位、高于 70 算高位。
第二步:用 5 日均量算"量比",放量定义为量比大于 1.2。
第三步:低位放量给 +10 分筹码峰,高位放量给 -10 分,其他给 0 分,再累加 10 天得到"净筹码"。
第四步:底背离 = 价格创 20 日新低,但净筹码没创 20 日新低(真背离)。
第五步:吸筹起爆 = 低位 + 放量 + 净筹码拐头向上。
每一步都清晰,没有"从上市第一天累加"那种坑,也没有恒真条件。
讲道理,这是前十期里写得最规范的一份。如果你拿它去通达信粘贴,能直接保存、直接出信号。
二、但回测结果让我缩手
沪深 300 成分股,2025-09-22 到 2026-07-23,两个信号分别扫描,统计 20 日收益:
| 信号 | 触发次数 | 20 日平均收益 | 胜率 |
|---|---|---|---|
| 底背离(选股条件1) | 6882 个 | -0.03% | 44.0% |
| 吸筹起爆(选股条件2) | 4411 个 | -0.36% | 42.1% |
两个信号,胜率都在 42% 到 44% 之间——也就是比抛硬币还稍微差一点。20 日平均收益基本归零,还略微为负。
三、为什么"没 bug"反而更危险
把前十期串起来看,你会发现一个反直觉的规律:
有 bug 的公式——通常信号稀少甚至为零。你贴进去跑不出来,顶多浪费时间,不会真金白银去亏。
没 bug 但无用的公式——像这份,信号哗哗地出,你真去买了,就是在随机分布里亏钱。
这份公式的"问题"不是写错了,是写得对但太松了。在弱市里(2025 下半年到 2026 年中,煤炭涨电子跌),大量股票长期趴在低位,"位置比小于 30 + 量比大于 1.2"这个条件几乎天天被满足——于是 10 个月里甩出 11000 个信号。
信号多到这个程度,等于没筛选。
四、怎么救?三条路
路 A —— 收紧位置约束:把"位置比小于 30"改成"小于 20",只抓更极端的低位。
路 B —— 双信号共振:要求"底背离"和"吸筹起爆"同一天同时满足,而不是分开出。
路 C —— 加环境过滤:像系列第一篇"龙头启动"那样,大盘弱势时自动熄火,只在牛市宽度够时出信号。
(三条可以叠加,越收越紧,信号越少但每个越值钱)
五、给你三个启发
没有 bug ≠ 能赚钱。一个公式能跑通只是及格线,不是优秀线。
信号数量是反向指标。一天给你上万个信号,跟随机扔骰子没区别;好公式应该让你"等得有点不耐烦"。
弱市里"低位放量"不稀奇。熊市每天都有股票低位偶尔放量,这不是主力在吸筹,是散户在割肉。
原版公式(无 bug,可直接复制进通达信;想试优化版请按上文三选一收紧):
周期 := 60;
高位线 := HHV(HIGH, 周期);
低位线 := LLV(LOW, 周期);
位置比 := (CLOSE - 低位线) / (高位线 - 低位线) * 100;
均量 := MA(VOL, 5);
量比 := VOL / 均量;
筹码峰 := IF(位置比 < 30 AND 量比 > 1.2, 量比 * 10, IF(位置比 > 70 AND 量比 > 1.2, -量比 * 10, 0));
净筹码 := SUM(筹码峰, 10);
底背离 := LOW < REF(LLV(LOW, 20), 1) AND 净筹码 > REF(LLV(净筹码, 20), 1);
吸筹起爆 := 位置比 < 30 AND 量比 > 1.2 AND 净筹码 > REF(净筹码, 1);
选股条件1: 底背离;
选股条件2: 吸筹起爆;
如果你也在用"底背离"类公式,打开看看它一天给你多少个信号——如果多到数不清,那它跟随机扔骰子没区别。把这条转给你身边迷信"底背离必涨"的朋友。