布林带和KDJ到底在说什么
布林带三条线。中轨是20日均线,上轨是中轨加2倍标准差,下轨是中轨减2倍标准差。价格波动大,布林带张口;波动小,布林带收口。它告诉你价格现在处于什么位置,趋势是强是弱。
KDJ指标看的是最近一段时间收盘价在最高价和最低价之间的相对位置。K线快,D线慢,J线最敏感。KDJ超过80算超买,低于20算超卖。它告诉你短期动能是不是用完了。

两个指标一个看趋势和波动区间,一个看短期超买超卖。单用容易踩坑,合起来用能互相补短板。
单用布林带或者KDJ的坑
只用布林带。价格碰到上轨,你以为要跌,结果它沿着上轨一直涨,你逆势做空被套。价格碰到下轨,你以为要涨,结果它沿着下轨一直跌,你抄底抄在半山腰。布林带在单边趋势里会反复发出错误的反转信号。
只用KDJ。震荡市里KDJ很准,超买做空、超卖做多都能赚钱。一到趋势行情,KDJ会在超买区反复钝化,80以上还能继续涨,20以下还能继续跌。你按KDJ信号做,会不断逆势,亏得怀疑人生。
两个指标配合的核心逻辑
布林带定方向,KDJ找买点卖点。这是配合使用的第一原则。
布林带中轨向上,价格在中轨上方运行,这是多头趋势。此时只找做多机会。KDJ从超卖区向上金叉,或者K线在20附近向上穿越D线,就是入场信号。价格回踩中轨不破,KDJ再次金叉,加仓。
布林带中轨向下,价格在中轨下方运行,这是空头趋势。此时只找做空机会。KDJ从超买区向下死叉,或者K线在80附近向下穿越D线,就是入场信号。价格反弹中轨不过,KDJ再次死叉,加仓。
布林带收口走平,价格在中轨上下穿梭,这是震荡市。此时布林带上轨做空,下轨做多。KDJ超买配合上轨做空,KDJ超卖配合下轨做多。震荡市里KDJ的准确率大幅提升,因为趋势惯性消失了。
具体入场和出场规则
做多条件
布林带中轨向上,或者价格从下轨向上突破中轨。KDJ的K线在20以下向上穿越D线形成金叉。两个条件同时满足,进场做多。止损放在布林带下轨下方,或者前一根K线低点下方。
做空条件
布林带中轨向下,或者价格从上轨向下跌破中轨。KDJ的K线在80以上向下穿越D线形成死叉。两个条件同时满足,进场做空。止损放在布林带上轨上方,或者前一根K线高点上方。
出场条件
做多后,价格触及布林带上轨,KDJ进入80以上超买区,减仓一半。KDJ死叉,全部平仓。价格跌破布林带中轨,无条件平仓。
做空后,价格触及布林带下轨,KDJ进入20以下超卖区,减仓一半。KDJ金叉,全部平仓。价格突破布林带中轨,无条件平仓。
什么行情下不能用
布林带极度收口,带宽创近期新低,这时候不要用。因为收口后往往伴随大行情爆发,方向不确定。等布林带开口后再操作。
重要经济数据公布前不要用。数据公布瞬间价格跳空,布林带和KDJ都会瞬间失效。等数据公布后15分钟再找机会。
涨跌停板附近不要用。期货连续涨跌停时,指标钝化严重,KDJ会在极限位置反复徘徊,布林带也会被撑开失真。
量化交易中的代码实现思路
用Python计算布林带和KDJ。
import pandas as pd
import numpy as np
def boll_kdj_strategy(df, n=20, k_period=9, d_period=3):
# 布林带
df['ma'] = df['close'].rolling(n).mean()
df['std'] = df['close'].rolling(n).std()
df['upper'] = df['ma'] + 2 * df['std']
df['lower'] = df['ma'] - 2 * df['std']
# KDJ
low_list = df['low'].rolling(k_period).min()
high_list = df['high'].rolling(k_period).max()
rsv = (df['close'] - low_list) / (high_list - low_list) * 100
df['k'] = rsv.ewm(com=2).mean()
df['d'] = df['k'].ewm(com=2).mean()
df['j'] = 3 * df['k'] - 2 * df['d']
# 信号
df['long_signal'] = (df['close'] > df['ma']) & (df['k'] > df['d']) & (df['k'].shift(1) <= df['d'].shift(1)) & (df['k'] < 30)
df['short_signal'] = (df['close'] < df['ma']) & (df['k'] < df['d']) & (df['k'].shift(1) >= df['d'].shift(1)) & (df['k'] > 70)
return df
这个逻辑在回测中比单指标胜率高10到15个百分点。核心是布林带过滤掉了逆势的KDJ信号。
实战里的两个细节
KDJ参数调整。默认9,3,3在股票日线级别够用。期货短线交易可以改成5,3,3,灵敏度更高。但参数越短,假信号越多,必须配合布林带中轨方向过滤。
布林带中轨的斜率比价格位置更重要。中轨向上,价格偶尔跌破中轨不用慌,只要快速收回就是加仓机会。中轨走平,价格突破上轨也别追,大概率是假突破。
两个指标配合,说到底是让布林带告诉你“能不能做”,让KDJ告诉你“什么时候做”。顺序搞反了,照样亏钱。