问题一、技术指标讲解
{以下定义7个变量}
N2:=13;
M2:=5;
M22:=5;
RSV2:=(CLOSE-LLV(LOW,N2))/(HHV(HIGH,N2)-LLV(LOW,N2))*100;
K2:=SMA(RSV2,M2,1),LINETHICK4;
D2:=SMA(K2,M22,1),LINETHICK4;
J2:=3*K2-2*D2,LINETHICK4;
{KD柱线变色}
STICKLINE(K2>REF(K2,1) AND K2>D2,K2-D2,0,2,0),COLORMAGENTA;(洋红色)
STICKLINE(K2<=REF(K2,1) AND K2>D2,K2-D2,0,2,0),COLORWHITE;{白色}
STICKLINE(K2<=REF(K2,1) AND K2<=D2,K2-D2,0,2,0),COLORCYAN;{青色,空头强劲}
STICKLINE(K2>REF(K2,1) AND K2<=D2,K2-D2,0,2,0),COLORWHITE;{白色,空头减弱}
{JD柱线变色}
STICKLINE(J2>REF(J2,1) AND J2>D2,J2-D2,0,2,0),COLORMAGENTA;(洋红色)
STICKLINE(J2<=REF(J2,1) AND J2>D2,J2-D2,0,2,0),COLORWHITE;(白色)
STICKLINE(J2<=REF(J2,1) AND J2<=D2,J2-D2,0,2,0),COLORCYAN;{青色,空头强劲}
STICKLINE(J2>REF(J2,1) AND J2<=D2,J2-D2,0,2,0),COLORWHITE;{白色,空头减弱}
这是一个股票技术指标公式,主要是基于KDJ指标的变体,并加入了柱状图变色功能。
我来为您详细解释:
(1)参数设置
N2:=13; # 计算周期为13天
M2:=5; # K值的平滑周期为5天
M22:=5; # D值的平滑周期为5天
(2)核心计算(KDJ指标)
# 1. 计算RSV(未成熟随机值)
RSV2 := (收盘价 - 13日最低价的最低值) / (13日最高价的最高值 - 13日最低价的最低值) * 100
# 表示当前价格在最近13天价格区间中的相对位置
# 2. 计算K值(快速随机指标)
K2 := RSV2的5日简单移动平均
# 3. 计算D值(慢速随机指标)
D2 := K2的5日简单移动平均
# 4. 计算J值(KDJ的辅助指标)
J2 := 3*K2 - 2*D2
# J值反映K值与D值的乖离程度
(3)柱状图变色逻辑(核心部分)
<1>第一组柱线:K2-D2 差值
# 情况1:K值上涨且大于D值(多头强势)
IF K2 > 昨天的K2 AND K2 > D2:
绘制洋红色柱线(K2-D2) # 看涨信号最强
# 情况2:K值下跌但大于D值(多头减弱)
IF K2 <= 昨天的K2 AND K2 > D2:
绘制白色柱线(K2-D2) # 看涨,但动能开始减弱了
# 情况3:K值下跌且小于等于D值(空头强势)
IF K2 <= 昨天的K2 AND K2 <= D2:
绘制青色柱线(K2-D2) # 看跌信号最强
# 情况4:K值上涨但小于等于D值(空头减弱)
IF K2 > 昨天的K2 AND K2 <= D2:
绘制白色柱线(K2-D2) # 看跌, 但动能减弱,有反弹的迹象
<2>第二组柱线:J2-D2 差值
# 与K2-D2判断逻辑相同,但是基于J值
# 因为J值波动更大,更能反映短期超买超卖
(4)技术含义总结
-
柱线高度:表示K/D之间的差值或J/D之间的差值
-
颜色含义:
- 洋红色:指标上涨 + 金叉状态(最强烈的看涨信号)
- 青色:指标下跌 + 死叉状态(最强烈的看跌信号)
- 白色:指标方向与交叉状态不一致(趋势不明朗)
-
使用目的:
- 通过颜色变化快速识别趋势强度
- K2-D2反映中期趋势
- J2-D2反映短期波动
- 结合两者判断买卖时机
(5)交易信号解读
- 买入信号:出现连续洋红色柱线,且柱线高度增加
- 卖出信号:出现连续青色柱线,且柱线高度增加(负值更大)
- 观望信号:出现白色柱线,方向不明
这个指标通过视觉化的颜色变化,让投资者更直观地看到KDJ指标的多空变化和动能转换。
问题二、把以上的技术指标,改成选股指标
这是一个非常好的选股思路!您想找的是超卖反弹的潜在信号,即在下跌过程中出现动能减弱的迹象。让我先帮您修改指标,然后详细解释逻辑:
(1)修改后的选股指标代码
{定义7个参数设置}
N2:=13;
M2:=5;
M22:=5;
RSV2:=(CLOSE-LLV(LOW,N2))/(HHV(HIGH,N2)-LLV(LOW,N2))*100;
K2:=SMA(RSV2,M2,1);
D2:=SMA(K2,M22,1);
J2:=3*K2-2*D2;{该变量可写可不写,因为这里选股用的是k和d}
{----------计算柱线条件----------}
{昨天条件:青色柱线(空头强势)}
Yesterday_Cyan:= REF(K2,1) <= REF(K2,2) AND REF(K2,1) <= REF(D2,1) AND REF(K2,1)-REF(D2,1) < 0;
{今天条件:白色柱线(空头减弱)}
Today_White:= K2 > REF(K2,1) AND K2 <= D2 AND K2-D2 < 0;
{柱线在0轴下方(K2<D2)且在近10天内由青转白出现2次以上}
X1:= Yesterday_Cyan AND Today_White; {昨天青色, 今天白色}
{----------输出选股信号----------}
OUTPUT:X1
AND COUNT(X1,10)>=2
AND K2-D2 < 0;
(2)代码逻辑详细解释
<1>原始指标回顾
- 计算13日KDJ指标(K2、D2)
- 柱线颜色规则:
- 青色:
K2下降且K2≤D2(空头强势,继续下跌) - 白色(空头减弱):
K2上升但K2≤D2(空头减弱,可能反弹)
- 青色:
<2>选股条件分解
您要的条件是"柱线在0轴下方,并且颜色由青色变成白色",这包含三个要素:
要素1:柱线在0轴下方 → K2 < D2
要素2:颜色由青变白 → 昨天青色,今天白色
要素3:近10天出现≥2次 → COUNT(条件,10) >= 2
<3>具体条件定义
{昨天青色条件}
昨天K2下降 AND 昨天K2≤昨天D2 AND 昨天柱线<0
→ REF(K2,1) <= REF(K2,2) AND REF(K2,1) <= REF(D2,1) AND REF(K2,1)-REF(D2,1) < 0
{今天白色条件(空头减弱)}
今天K2上升 AND 今天K2≤今天D2 AND 今天柱线<0
→ K2 > REF(K2,1) AND K2 <= D2 AND K2-D2 < 0
(3)技术含义分析
<1>为什么这个信号有选股价值?
市场心理学解释:
- 青色柱线:表示市场空头力量强劲,价格持续下跌
- 白色柱线(空头减弱):虽然价格仍在下跌(K2≤D2),但下跌动能开始减弱(K2开始上升)
- 在0轴下方:意味着股价仍处于弱势区域
这种信号通常表示:
- 空头力量正在耗尽
- 可能有资金开始逢低买入
- 短期可能出现技术性反弹
<2>实战应用建议
{如果您想更严格地筛选,可以添加以下条件:}
{条件1:KDJ处于超卖区域}
超卖条件 := K2 < 20 AND D2 < 30;
{条件2:成交量放大确认}
量能确认 := VOL > MA(VOL,5) * 1.2;
{条件3:价格已跌至重要支撑}
支撑位 := CLOSE < LLV(CLOSE,20) * 1.02;
{综合选股条件}
优化选股信号:选股信号 AND 超卖条件 AND 量能确认;
(4)使用注意事项
- 成功率:这种信号的成功率通常在60-70%,需要结合其他指标确认
- 止损设置:建议设置3-5%的止损位
- 持仓周期:一般为短线操作(3-7天)
- 市场环境:在震荡市或反弹市中效果更好,单边下跌市中要谨慎
(5)扩展思考
如果您想进一步优化这个策略,可以考虑:
{思路1:增加连续信号过滤}
连续青转白 := COUNT(Condition, 5) >= 2 AND
COUNT(K2-D2 < 0, 5) = 5; {连续5天在0轴下}
{思路2:结合MACD底背离}
MACD底背离 := MACD.DIF > REF(MACD.DIF,1) AND
CLOSE < REF(CLOSE,1);
{思路3:增加价格位置判断}
相对位置 := CLOSE/MA(CLOSE,60) < 0.9; {股价低于60日均线10%}
这个选股指标的核心思想是捕捉空头衰竭的转折点,当这种信号在短期内多次出现时,往往意味着下跌动能已经充分释放,反弹可能即将来临。
问题三、是JD柱线起作用?还是KD柱线起作用?
您观察得很仔细!这段代码确实绘制了两组柱线,但实际上起作用的主要是第二组(J2-D2柱线)。
让我为您详细分析:
(1)为什么是J2-D2柱线起作用?
<1>绘制顺序问题
先绘制:K2-D2柱线(第一组4条STICKLINE)
后绘制:J2-D2柱线(第二组4条STICKLINE)
在图形软件中,后绘制的图形会覆盖先绘制的图形,所以您实际看到的主要是J2-D2的柱线。
<2>视觉差异对比
| 特征 | K2-D2柱线 | J2-D2柱线 |
|---|---|---|
| 计算基础 | K值(较平滑) | J值(波动大) |
| 波动幅度 | 较小 | 较大(因J=3K-2D) |
| 视觉表现 | 会被覆盖 | 覆盖在K2柱线上 |
| 信号灵敏度 | 较迟钝 | 较敏感 |
<3>具体验证方法
您可以通过修改代码来验证:
{隐藏J2柱线,只看K2柱线}
{注释掉J2柱线部分}
{STICKLINE((J2>REF(J2,1) AND J2>D2),J2-D2,0,2,0),COLORMAGENTA;}
{STICKLINE((J2<=REF(J2,1) AND J2>D2),J2-D2,0,2,0),COLORWHITE;}
{STICKLINE(J2<=REF(J2,1) AND J2<=D2,J2-D2,0,2,0),COLORCYAN;}
{STICKLINE((J2>REF(J2,1) AND J2<=D2),J2-D2,0,2,0),COLORWHITE;}
(2)技术含义分析
<1>实际起作用的是J2-D2柱线
由于J值的计算公式是 J2 = 3*K2 - 2*D2:
- J值放大波动:J值对K值和D值的差异进行了3倍放大
- 更早发出信号:J值比K值更敏感,能更早显示趋势变化
- 更适合短期交易:J2-D2的变色信号更适合捕捉短期买卖点
<2>两组柱线的实际应用价值
{虽然J2柱线覆盖了K2柱线,但两者各有用途:}
{如果只显示K2柱线(隐藏J2)}
- 信号更稳定,过滤了部分噪音
- 适合中短线趋势判断
- 减少虚假信号
{如果显示J2柱线(默认情况)}
- 信号更灵敏,反应更快
- 适合短线或超短线交易
- 可能产生更多虚假信号
(3)针对您的选股需求
基于您的需求"柱线在0轴下方,并且颜色由青色变成白色",应该基于J2-D2柱线来编写选股公式,因为:
- J2柱线是实际可见的:在图表上看到的就是J2柱线
- J2信号更及时:能更早捕捉到空头减弱的迹象
- 符合指标设计意图:作者将J2柱线绘制在后,就是为了让它作为主要观察对象
<1>修改后的选股代码(基于J2柱线)
{----------参数设置----------}
N2:=13;
M2:=5;
M22:=5;
{----------计算KDJ指标----------}
RSV2:=(CLOSE-LLV(LOW,N2))/(HHV(HIGH,N2)-LLV(LOW,N2))*100;
K2:=SMA(RSV2,M2,1);
D2:=SMA(K2,M22,1);
J2:=3*K2-2*D2;
{----------基于J2柱线的选股条件----------}
{昨天条件:青色柱线(J2空头强势)}
Yesterday_Cyan_J := REF(J2,1) <= REF(J2,2) AND REF(J2,1) <= REF(D2,1);
{今天条件:白色柱线(J2空头减弱)}
Today_White_J := J2 > REF(J2,1) AND J2 <= D2;
{柱线在0轴下方(J2<D2)且在近10天内由青转白出现2次以上}
Condition_J := Today_White_J AND Yesterday_Cyan_J AND J2-D2 < 0;
Count_Condition_J := COUNT(Condition_J, 10) >= 2;
{----------输出选股信号----------}
选股信号:Count_Condition_J;
(4)实用建议
- 如果您想要更稳定的信号:可以同时要求K2柱线和J2柱线都满足条件
- 确认信号有效性:可以结合成交量放大来确认
- 设置过滤条件:避免在极度弱势的市场中使用
{综合K2和J2的选股条件(双重确认)}
Condition_K := (K2 > REF(K2,1) AND K2 <= D2) AND
(REF(K2,1) <= REF(K2,2) AND REF(K2,1) <= REF(D2,1)) AND
K2-D2 < 0;
综合选股信号:COUNT(Condition_J AND Condition_K, 10) >= 2;
(5)总结
- 实际起主导作用的是J2-D2柱线(后绘制,覆盖显示)
- J2柱线更敏感,适合短线交易信号
- 如果追求稳定性,可以考虑K2和J2的双重确认
- 您的选股思路(空头衰竭转反弹)在J2柱线上表现会更明显