
做这系列到第 13 期,我遇到过语法错、优先级暗坑、死代码链。这份"拈花指"属于"老毛病复发 + 新笔误"——而且它依赖一个外部副图指标"拈花指"的四条线(THXHX/THKX/THZX/THMX),这四条线的算法我正好在第 2 篇的回测脚本里存档过,所以能完整复刻、能回测。
一、两处硬伤,对照看清
| 位置 | 原写法 | 正确写法 | 后果 |
|---|---|---|---|
| 第三处 CROSS | CROSS(THXHX,THZX) (和上一行重复) | CROSS(THXHX,THMX) | "四线开花"只检查了 THKX 和 THZX 两条线,THMX 那次上穿被漏掉了 |
| 低位 约束 | (THKX AND THZX AND THMX)<10 | (THKX<10) AND (THZX<10) AND (THMX<10) | 三个布尔值 AND 后只能是 0 或 1,永远小于 10,条件恒为真——和第 2 篇一模一样的坑 |
第一个是复制粘贴的粗心:本该各上穿一次的三条线,THMX 那次被写成了 THZX 的复制。第二个是和第 2 篇同源的"恒真"老毛病——作者想表达"三线都在低位(小于 10)",却错写成"三个布尔值 AND 完再跟 <10",结果恒真。
二、回测:修 bug 有用,但挡不住弱市
沪深 300 成分股,2025-09-22 到 2026-07-23(弱市:煤炭涨、电子跌,宽度持续收窄),用复刻的 TH 算法扫描:
| 版本 | 信号数 | 20 日平均收益 | 胜率 |
|---|---|---|---|
| 原版(恒真 + 漏线) | 355 个 | -1.59% | 37.1% |
| 修复版(补线 + 正确低位) | 121 个 | -3.37% | 33.3% |
修 bug 确实滤掉了 66% 的噪音(355 → 121),这点有价值。但两个版本都是负收益、胜率都不到 40%——说明这不是"修修就好"的问题。
三、为什么这次"修了更亏"
修复版加的"TH 三线都小于 10"把信号推向了更极端的低位。在弱市里,极端低位往往意味着"还在加速下跌",资金越抄越套,所以修复版反而更差(-3.37%)。
这给了我们一个反直觉的提醒:修 bug 只能滤噪音,救不了"环境错配"。第 2 篇当时用"低位 + 放量"优化是有效的,但那是基于不同窗口的判断;放到这段弱市,任何"抄底反转"类公式都先天不利。
四、适用环境
宽幅震荡 ✓ 牛市初中期 ✓ 单边熊市 ✗
这公式本质是"超跌后三线开花反转",和第 12 篇的"主力吸筹抄底"是同一类——抄底公式的死穴永远是环境。它在"跌多了会反弹"的阶段有效,在"跌多了还能跌"的弱市里就是持续亏。
五、三个启发
复制自己的公式,也在复制自己的 bug。恒真这个条件,第 2 篇写过一次,第 13 篇又写了一遍——同源公式最容易反复踩同一个坑。
修 bug ≠ 能赚钱。滤掉 66% 噪音很爽,但环境不对,剩下的 34% 照样亏。
弱市里先问"现在是不是底"。任何抄底公式,第一步不是看信号,是看大盘处在什么阶段。
修复版公式(补全缺失的 THMX 上穿,并把恒真约束改成"三线分别小于 10";TH 系列为"拈花指"副图指标输出,需先安装该副图):
拈花指选股:(CROSS(THXHX,THKX) AND CROSS(THXHX,THZX) AND CROSS(THXHX,THMX) AND (THKX<10) AND (THZX<10) AND (THMX<10)) AND C>MA(C,5) AND C>REF(H,2);
(顺带提醒:THKX/THZX/THMX 数值通常不小,"<10"这个阈值在弱市里会把信号压到极端低位。如果你打算在震荡市用,建议把 10 放宽到 20~30,或干脆去掉这段、只留三线开花 + 价格条件)
你翻翻自己以前发的公式,有没有这种"同一个 bug 写了两遍"的?恒真、死代码、复制漏行——这些坑一旦写顺手,就会在不同公式里反复出现。