共计 1744 个字符,预计需要花费 5 分钟才能阅读完成。
技术背景:Bollinger Bands 核心原理
Bollinger Bands(布林带)由三条线组成:中轨(N 日移动平均线)、上轨(中轨 + K 倍标准差)、下轨(中轨 – K 倍标准差)。其数学表达式为:

中轨 = SMA(close, N)
上轨 = SMA(close, N) + K * std(close, N)
下轨 = SMA(close, N) - K * std(close, N)
经典参数 N =20(周期),K=2(标准差倍数)。该指标通过动态通道反映价格波动范围,当价格触及通道边界时,往往预示反转机会。
Python 实现:pandas 计算 Boll 指标
import pandas as pd
# 示例数据加载(以沪深 300 为例)data = pd.read_csv('hs300.csv', index_col=0, parse_dates=True)
# Bollinger Bands 计算函数
def bollinger_bands(df, window=20, k=2):
df['MA'] = df['close'].rolling(window).mean()
df['STD'] = df['close'].rolling(window).std()
df['Upper'] = df['MA'] + k * df['STD']
df['Lower'] = df['MA'] - k * df['STD']
return df
# 调用示例
bb_data = bollinger_bands(data)
关键点说明:
– rolling(window) 实现滑动窗口计算
– std() 计算标准差反映波动率
– 参数 window 和 k 需根据标的特性调整
策略构建:均值回归交易逻辑
基础规则:
1. 当价格触及下轨且 RSI<30 时买入
2. 当价格触及上轨且 RSI>70 时卖出
3. 中轨作为止损参考位
# 策略信号生成
def generate_signals(df):
df['Buy'] = (df['close'] <= df['Lower']) & (df['RSI'] < 30)
df['Sell'] = (df['close'] >= df['Upper']) & (df['RSI'] > 70)
return df
回测实战:backtrader 完整示例
import backtrader as bt
class BollStrategy(bt.Strategy):
params = (('window', 20), ('k', 2))
def __init__(self):
self.bb = bt.indicators.BollingerBands(
self.data.close,
period=self.p.window,
devfactor=self.p.k
)
self.rsi = bt.indicators.RSI(self.data.close)
def next(self):
if not self.position:
if self.data.close[0] <= self.bb.lines.bot[0] and self.rsi[0] < 30:
self.buy()
elif self.data.close[0] >= self.bb.lines.top[0] and self.rsi[0] > 70:
self.close()
# 回测设置
cerebro = bt.Cerebro()
data = bt.feeds.PandasData(dataname=bb_data)
cerebro.adddata(data)
cerebro.addstrategy(BollStrategy)
results = cerebro.run()
新手避坑指南
- 参数陷阱
- 避免过度优化:在训练集 / 测试集上表现差异 >20% 即可能过拟合
-
多品种验证:参数应在不同标的保持稳定性
-
数据偏差
- 避免使用未来数据:确保指标计算仅依赖历史信息
-
考虑交易成本:佣金和滑点可能吞噬理论收益
-
市场适应性
- 趋势市中布林带策略易亏损
- 需结合波动率指标过滤信号
性能优化方向
- 动态参数调整:根据市场波动率自动调节 K 值
- 组合过滤:增加成交量 /MACD 等确认指标
- 仓位管理:基于通道宽度调整头寸规模
延伸学习建议
- 多指标组合:尝试 Boll+MACD+KDJ 混合策略
- 机器学习应用:使用 LSTM 预测通道突破概率
- 进阶资源:《量化交易如何构建自己的算法交易业务》
(注:实际代码需处理数据缺失值、添加日志记录等生产级细节)
正文完
发表至: 量化交易
近一天内
