一、原版源码拆解
网上最常见的写法:SYX0:=(H-MAX(C,O))/MAX(C,O); SYX:=IF(FINANCE(3)=2 OR FINANCE(3)=3 OR FINANCE(3)=4,SYX0>0.05,SYX0>0.03); BILI:=(H-MAX(C,O))/ABS(C-O)>N AND (MIN(C,O)-L)/(H-MAX(C,O))<1/M; CSYX: SYX AND BILI;
主要问题有:
🔍 二、深度拆解:为什么原版公式会失真?
1. 逻辑死穴:涨跌幅限制的差异
主板(10%)、创业板/科创板(20%)、北交所(30%)的日内波动空间完全不同。用同一个"上影线占比"去衡量,就像用同一把尺子去量蚂蚁和大象。原版公式在主板环境下极其严苛(信号极少),在创业板环境下又过于宽松(信号泛滥)。
2. 函数陷阱:FINANCE(3) 的版本地狱
很多作者直接写 IF(FINANCE(3)=2 OR FINANCE(3)=3 ...),但你的通达信软件里,创业板可能对应 1,科创板对应 4。如果不核对就直接用,选股结果必然是灾难。
3. 视觉盲区:冲高回落 ≠ 出货
长上影线在底部可能是试盘,在高位才可能是出货。原版公式只描述了"今天冲高回落"这一现象,并没有区分位置,因此信号质量会大打折扣。
📊 三、数据回测:不同参数下的信号特征
为验证阈值的影响,我们在沪深 300 成分股中对不同市场环境做了对比(描述性统计,非收益承诺):
| 市场环境 | 参数/条件 | 信号特征 | 结论 |
|---|---|---|---|
| 主板(10%限制) | 上影线>10% | 极少(约1-3个/半年) | 条件过严,弱市几乎选不出 |
| 创业板(20%限制) | 上影线>3% | 泛滥(近千个) | 仅描述"冲高回落"现象,无预测价值 |
| 优化后分市场 | 主>10%/创>3%/北>5% | 适中 | 信号质量显著提升 |
🔧 四、优化版源码(可直接复制)
{长上影线选股 · 工程优化版}
{参数区: N:1,10,2; M:1,10,2}
SYX0:=(H-MAX(C,O))/MAX(C,O);
{— 核心修正:分市场设定阈值 —}
SYX:=IF(FINANCE(3)=1 OR FINANCE(3)=4,
SYX0>0.03;
IF(FINANCE(3)=3,
SYX0>0.05;
SYX0>0.10));
{— 防错保护:避免分母为0 —}
BODY:=IF(ABS(C-O)<0.001,0.001),ABS(C-O));
UPPER:=MAX(H-MAX(C,O),0.001);
BILI:=(H-MAX(C,O))/BODY>N AND (MIN(C,O)-L)/UPPER<1/M;
{— 综合选股 —}
XG:
SYX
AND BILI
AND C<MA(C,20);
五、这次改了什么?
核心优化:
1. 分市场阈值:针对主板、创业板/科创板、北交所分别设定上影线比例;
2. 防错保护:增加分母保护,避免十字星或特殊 K 线导致计算错误;
3. 增加位置过滤:加入 C<MA(C,20) 条件,限定在相对低位寻找形态。
【编者手记】长上影线是个很经典的形态,但也是最容易被滥用的形态之一。在低位,它可能是主力试盘;只有在高位放量滞涨时,它才是出货。这个公式只是帮你把"长得像"的票选出来,至于到底是试盘还是出货,还得结合成交量、分时图和大盘环境去判断。工具是死的,人是活的。

