KDJ指标:短线交易的利器

📊 KDJ 是什么?

KDJ又称随机指标,比RSI更灵敏,特别适合短线交易

由三条线组成:

  • 🔵 K线:主力线
  • 🟠 D线:辅助线
  • 🔴 J线:K和D的差值(最灵敏)

🎯 KDJ 交易信号

1. 金叉买入

K线从下往上穿过D线:

if k > d and k_prev 

2. 死叉卖出

K线从上往下穿过D线:

if k = d_prev:
    print("死叉!卖出信号!")

3. 超买超卖

  • 📈 KDJ > 80 → 超买,可能要跌
  • 📉 KDJ 超卖,可能要涨

4. 背离

  • 📈 股价创新高,KDJ没创新高 → 顶背离(卖出)
  • 📉 股价创新低,KDJ没创新低 → 底背离(买入)

👨‍💻 用Python计算KDJ

import pandas as pd
import akshare as ak

# 获取数据
df = ak.stock_zh_a_hist(symbol="600519", adjust="qfq")
df = df.tail(60)

# 计算KDJ
low_n = df["最低"].rolling(9).min()
high_n = df["最高"].rolling(9).max()

rsv = (df["收盘"] - low_n) / (high_n - low_n) * 100

df["K"] = rsv.ewm(com=2, adjust=False).mean()
df["D"] = df["K"].ewm(com=2, adjust=False).mean()
df["J"] = 3 * df["K"] - 2 * df["D"]

print(df[["日期", "收盘", "K", "D", "J"]].tail(10))

📈 完整画图例子

import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 获取数据
df = ak.stock_zh_a_hist(symbol="600519", adjust="qfq")
df = df.tail(60)

# 计算KDJ
low_n = df["最低"].rolling(9).min()
high_n = df["最高"].rolling(9).max()
rsv = (df["收盘"] - low_n) / (high_n - low_n) * 100
df["K"] = rsv.ewm(com=2, adjust=False).mean()
df["D"] = df["K"].ewm(com=2, adjust=False).mean()
df["J"] = 3 * df["K"] - 2 * df["D"]

# 画图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 6))

# 股价
ax1.plot(df["日期"], df["收盘"], label="收盘价")
ax1.set_title("茅台股价")

# KDJ
ax2.plot(df["日期"], df["K"], label="K", color="blue")
ax2.plot(df["日期"], df["D"], label="D", color="orange")
ax2.plot(df["日期"], df["J"], label="J", color="red")
ax2.axhline(y=80, color="red", linestyle="--", alpha=0.5)
ax2.axhline(y=20, color="green", linestyle="--", alpha=0.5)
ax2.set_title("KDJ指标")
ax2.legend()

plt.tight_layout()
plt.show()

⚠️ KDJ 使用注意事项

  • 📊 非常灵敏,适合短线
  • ⚠️ 震荡行情中容易反复金叉死叉
  • 💡 建议配合均线趋势一起用
  • 🎯 只做顺势,不要逆势操作

📚 下一课

学会了KDJ,我们来学布林带——看看股价是不是”贵”了!

发表评论