【Python量化实战全攻略 #19】KDJ、BOLL 通道手册:超买超卖与布林带(附代码)
摘要:【Python量化实战全攻略 #19】KDJ、BOLL 通道手册:超买超卖与布林带(附代码) 手册定位:模块三第 3 篇。通道类指标两个代表:KDJ(超买超卖,抓反转)与 BOLL(布林带,看波动与突破)。两者互补—&mdash
手册定位:模块三第 3 篇。通道类指标两个代表:KDJ(超买超卖,抓反转)与 BOLL(布林带,看波动与突破)。两者互补——一个看「过头没」,一个看「宽不宽」。
数据来源复用 #02 历史K线(KDJ/BOLL 也可由/hs/history/kdj、/hs/history/boll直出,本文自算讲透)。
1. 你将得到什么
- KDJ(K/D/J) 自算代码与超买(>80)/超卖(<20)信号;
- BOLL(中轨/上轨/下轨) 自算与突破/回归信号;
- KDJ 与 BOLL 的组合用法;
- 通道指标的 4 个坑(钝化、参数、单边市、周期)。
2. 取数约定(复用)
| 信号 | 来源 | 见 |
|---|---|---|
| 日线 OHLC | /hs/history/{代码}.{市场}/d/n |
#02 |
| KDJ 直出 | /hs/history/kdj/{代码}.{市场}/d/n |
#02 |
| BOLL 直出 | /hs/history/boll/{代码}.{市场}/d/n |
#02 |
3. 数据来源(复用,不重复罗列)
详见 #02 历史K线接口手册(日线 + 技术指标 KDJ/BOLL 端点)。
4. 核心模板函数(自包含可跑)
import pandas as pd
import numpy as np
_MOCK = True
def calc_kdj(high, low, close, n=9):
h, l, c = pd.Series(high), pd.Series(low), pd.Series(close)
hh = h.rolling(n).max(); ll = l.rolling(n).min()
rsv = (c - ll) / (hh - ll + 1e-9) * 100
K = rsv.ewm(com=2, adjust=False).mean()
D = K.ewm(com=2, adjust=False).mean()
J = 3 * K - 2 * D
return K, D, J
def calc_boll(close, n=20, k=2):
s = pd.Series(close)
mid = s.rolling(n).mean()
std = s.rolling(n).std(ddof=0)
up, dn = mid + k * std, mid - k * std
return mid, up, dn
def run_check():
high = [10.5, 10.8, 11.2, 11.0, 10.6, 10.9, 11.4, 11.7, 11.5, 11.9, 12.3, 12.1]
low = [10.0, 10.3, 10.7, 10.4, 10.1, 10.4, 10.9, 11.2, 11.0, 11.4, 11.8, 11.6]
close = [10.2, 10.6, 11.0, 10.8, 10.3, 10.7, 11.2, 11.5, 11.3, 11.7, 12.1, 11.9]
K, D, J = calc_kdj(high, low, close)
mid, up, dn = calc_boll(close, n=10)
assert not K.isna().all() and len(up.dropna()) > 0
print("校验通过 | KDJ末端K=%.1f 布林中轨=%.2f" % (K.iloc[-1], mid.iloc[-1]))
return K, D, J, mid, up, dn
if __name__ == "__main__":
run_check()
5. 跑通示例
K, D, J, mid, up, dn = run_check()
band_width = (up - dn) / mid
print("布林带宽(末端):", round(band_width.iloc[-1], 3))
6. 坑与注意事项
- KDJ 钝化:强趋势中 K/D 长期贴 80 或 20,别机械抄底摸顶。
- 参数敏感:默认 9/3/3,短周期 KDJ 摆动剧烈,要配合趋势过滤。
- 单边市布林失效:单边上涨会沿上轨走,回归信号会反复止损。
- 周期匹配:日线指标做日线决策,别拿日线做分钟级交易。
7. 小结与下一篇预告
通道指标(KDJ/BOLL)补上「波动与超买超卖」维度。下一篇讲动量/反转择时——趋势跟随与均值回归。
下一篇预告:《【Python量化实战全攻略 #20】动量、反转择时手册:趋势跟随与均值回归(附代码)》
8. 免责声明
本文为择时方法示例,演示数据为虚构,不构成投资建议。
关于数据来源:本文 KDJ/BOLL 所需的日线数据来自智兔数服(www.zhituapi.com)官方文档接口(详见本系列 #02),覆盖 200+ 已验证路径,注册可领免费 token 做研究测试。
更多实战手册见技术博客:zhituapi.com/blog.html。
本系列《Python量化实战全攻略》共 32 篇,下一篇讲动量反转择时。
想亲自试一下?免费获取证书