先给结论,再讲道理:"KDJ低位金叉"最大的坑在于"低位"没有统一定义。有人用J<20,有人用J<10,有人用K<20。更关键的是,KDJ是"快指标",在震荡市里极度敏感,金叉信号一天出好几次,全是噪音。原版公式用J<20硬编码,是典型的"参数僵化"型坑。 源码用J<20定义低位,K上穿D定义金叉,简单直接但问题不少。 以下为基于源码逻辑的主观结构评分,未经历史数据验证,仅作拆解参考。 系列编号:本文为「1000个公式拆解」系列 · KDJ系 · 第 7 篇(7/1000)。 震荡市里股价上下波动,RSV值反复穿越区间底部,J值一天之内可以从15跳到25再回到18。每次穿越都产生一个"金叉"信号,但股价根本没动多少。这种信号毫无价值。 在快速下跌中,J值可以跌到-10、-20甚至更低。此时"J<20"持续成立,金叉也会触发,但这是下跌途中的反抽,不是底部。 KDJ金叉发生在下跌趋势中途,往往是短暂的超跌反弹。原版公式完全不看20日线或60日线的方向,容易在下跌途中抄底被套。 超跌反弹区 ✓ 横盘震荡末期 △ 需结合突破 单边下跌趋势 ✗ 修复思路:用"J值处于近期最低20%分位"替代硬编码J<20,要求20日线走平或向上,且股价不在近期新低。 用法:寻找经过一轮下跌后,KDJ在低位区(J值极低)出现金叉,且20日线开始走平的标的。 确认:金叉后次日若放量阳线,且J值快速回升,可视为有效信号。 止损:金叉后股价再创新低,或J值再度下行跌破前低,应止损。 启发一:"低位"应该是相对的,不是绝对的。J<20 对高价股和低价股意义不同,要用分位数自适应。 启发二:KDJ是快指标,天生爱"撒谎"。单独用KDJ金叉交易,胜率极低,必须配合趋势过滤。 启发三:J值可以为负。当J<-10时,市场处于极度超卖,但"超卖"不等于"见底",还需要止跌信号。一、原版源码长这样
RSV:=(C-LLV(L,9))/(HHV(H,9)-LLV(L,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
低位:=J<20;
金叉:=CROSS(K,D);
选股:低位 AND 金叉;
二、公式体检评分表
评分项 得分 说明 语法完整性 95 通达信可运行,无语法错误 逻辑完整度 45 J<20硬编码,震荡市假信号泛滥,无趋势过滤 信号可用性 40 震荡市天天触发,高位钝化区也入选 三、问题一:J<20 在震荡市天天触发
四、问题二:J值可以为负,没有下限
五、问题三:没有趋势过滤
六、适用环境
七、修复版源码
{=== KDJ低位金叉 · 修复版(通达信可运行)===}
RSV:=(C-LLV(L,9))/(HHV(H,9)-LLV(L,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
{=== 改动1:自适应低位(J值处于近期最低20%分位)===}
J低位:=J=REF(MA(C,20),5);
{=== 改动4:股价不在近期新低 ===}
非新低:=C>LLV(C,10)*1.03;
{=== 改动5:排除ST及数据不足 ===}
排雷:=NOT(NAMELIKE('ST') OR NAMELIKE('*ST')) AND COUNT(C>0,60)=60;
选股:J低位 AND 金叉 AND 趋势垫 AND 非新低 AND 排雷;八、实战操作建议
九、三条启发
KDJ低位金叉选股公式:我拆源码时发现"低位"用J小于20一刀切,震荡市全是假信号(附修复版)
风险提示:本文通达信指标公式仅作技术教学与研究使用,不构成任何投资建议。股市有风险,入市需谨慎,不可直接依据公式信号交易。
拆这个公式时,我停在了第4行:J<20。这行代码的意思是"J值小于20就算低位"。听起来很合理对吧?但KDJ的J值在震荡市里,一天可以上下穿越20好几次。更离谱的是,J值可以变成负数——如果J=-5也算"低位金叉",你敢买吗?

