90% 套牢成本一穿就买?这个公式回测数据戳穿了"筹码选股"的真相

你以为的"主力成本穿越信号",可能从来不是穿越——是一条 20 年的资金总额干扰了你今天的判断。

最近有一类公式非常火,叫"筹码选股"。它的逻辑听起来很高级:散户被套的 90% 成本线一旦被主力穿越,就可能涨。

听起来很有道理。但我把这类公式里最典型的一个版本做了 300 只股票、260 个交易日的全回测,结果让我心里凉了一截——

一、原版公式在做什么?

先拆三层:

第一层:定义两根 K 线和 4 个变量(G1=收盘,G2=最低,G3=开盘,G4=最高),再加两个永远不用的死变量 VAR1=30、VAR2=10。

第二层:算个"单日资金净额"——用成交量除以两日高低差,再乘以今天的涨幅,得到一个买盘强度的近似。

第三层:把从公司上市第一天开始的所有资金净额累加到一个叫 VAR7 的变量里,作为权重,再去模拟"90% 套牢成本线"。

最后是选股:两条 EMA 线交叉时,买。

复杂吧?我把它翻译成人话就一句:价格穿越 90% 散户成本时,买。问题是这"一句"里藏着一个 20 年的累加炸弹。

二、回测结果——出乎意料

用沪深 300 全部成分股,从 2025-09-22 跑到 2026-07-23(接近 10 个月),按原版逐日扫描,统计 20 日后的收益:

指标原版(你正在用的)优化版(见下文)
触发信号数1404 个1734 个
20 日平均收益+0.61%+2.48%
胜率43.1%49.1%

如果你是花钱买来的、当信号使的,原版胜率 43%——还不到一半,收益基本等于随机。

三、bug 在哪?一行代码偷走你三年收益

问题就藏在那两个累加变量里:

VAR7 等于 SUM(VAR6,0)

VAR8 等于 VAR7

(SUM 的第二个参数写 0,意思是"从开盘第一天开始全部累加",VAR7=VAR8 是个没有任何作用的死代码)

后面两条"筹码线"的分子分母里都乘了这个 VAR8:

筹码1 = EMA((价格差 × VAR8 ÷ 20 + 250)× 1.2 ÷ 5,3)

筹码2 = EMA((价格差反向 × VAR8 ÷ 20 + 250)× 1.2 ÷ 5,3)

分子分母里同一个数,约掉之后 VAR8 其实只对那个"250"产生微小扰动——本来它该是核心权重,结果变成了一个 5 位数上的小数点偏移。换句话说,公式号称"穿越 90% 成本",其实穿越的是约等于 250 的两根相近均线,跟成本线没半毛钱关系。

那为什么原作者要写 SUM 这个 0?基本只可能是——从网上复制粘错了。SUM(X,0)在通达信里几乎没有正确用法(要么写 5、10、20 表示窗口,要么别用)。

四、修复后,效果立竿见影

我把那条不该出现的累加去掉,把死变量清掉,重新跑:

G1 等于 CLOSE;G2 等于 LOW;G4 等于 HIGH。

COST90 用 CLOSE 的 60 日 EMA 替代,作为长期均线。

单日资金净额用两日高低差计算,不再累加

两条筹码线分别算"价格高于/低于长期均线"的 EMA。

XG 等于 CROSS(筹码1,筹码2)。

(完整可复制版本见文末)

信号从 1404 个涨到 1734 个(说明之前累加还压掉了一些真实信号),胜率从 43% 升到 49%20 日均收益从 0.61% 升到 2.48%——只是删一行的事。

五、给你的三个判断启发

  • 公式里如果有 SUM 后面跟 0,先想想是不是写错了——0 表示"从开头累加",几乎都是 bug。

  • 分子分母同时乘同一个常量,这个常量大概率是冗余或错误——一个有效权重不会在两端都用满。

  • 号称"穿越 90% 成本"的公式,在没有真实筹码分布数据的前提下,可能只是两根均线。

优化版公式(可直接复制进通达信,先删除上次粘贴的同名公式):

G1:=CLOSE;G2:=LOW;G4:=HIGH;

COST90:=EMA(CLOSE,60);

VAR5:=SUM(VOL,2)/((HHV(G4,2)-LLV(G2,2))*100);

VAR6:=(G1-REF(G1,1))*VAR5;

筹码1:=EMA((G1-COST90)/20*1.2/5+5,3);

筹码2:=EMA((COST90-G1)/20*1.2/5+5,3);

XG:CROSS(筹码1,筹码2);

如果你身边有人在迷信"穿越 90% 成本线"这种公式——把这条转给他。他可能跑了一年,跑出一堆"信号",回放复盘才发现:那串数字从来就是错的


相关阅读

在线客服
QQ:332879389
联系电话
13605084160