John Bollinger教你写布林线策略代码
John Bollinger教你写布林线策略代码
1980年代,一位名叫John Bollinger的交易员发明了一种革命性的技术分析工具——布林线(Bollinger Bands)。这一创新不仅改变了交易者分析市场的方式,更成为了现代金融交易中不可或缺的技术指标。布林线通过计算价格的移动平均线和标准差,为交易者提供了一个动态的市场波动性衡量工具,帮助他们更好地把握市场趋势和转折点。
布林线由三条线组成:中轨(Moving Average,MA)是价格的简单移动平均线,上轨(Upper Band)和下轨(Lower Band)则分别位于中轨上方和下方,距离由价格的标准差决定。这种设计使得布林线能够随着市场波动性自动调整其宽度,为交易者提供了一个动态的市场观察窗口。
布林线的计算公式如下:
- 中轨(Middle Band):MA(Close, Length)
- 上轨(Upper Band):MA(Close, Length) + StdDev * Std(Close, Length)
- 下轨(Lower Band):MA(Close, Length) - StdDev * Std(Close, Length)
其中,Length是移动平均周期,StdDev是标准差倍数,Close是收盘价。
在实际交易中,布林线有多种应用方式。最常见的是将其作为超买超卖指标:当价格触及上轨时,市场可能处于超买状态;当价格触及下轨时,市场可能处于超卖状态。然而,John Bollinger本人更倾向于将其作为趋势跟踪工具,特别是在结合其他指标和分析方法时。
下面,我们以交易开拓者(TB)平台上的布林线策略代码为例,深入解析其工作原理和应用要点。
# 布林线趋势策略
# 参数设置
Length = 20; # 移动平均周期
StdDev = 2.0; # 标准差倍数
ATR_Period = 14; # ATR周期
ATR_Multiplier = 3.0; # ATR倍数用于止损
# 变量声明
UpperBand = 0;
LowerBand = 0;
MiddleBand = 0;
# 初始化函数
def init():
global UpperBand, MiddleBand, LowerBand
MiddleBand = MA(Close, Length)
Std = STD(Close, Length)
UpperBand = MiddleBand + StdDev * Std
LowerBand = MiddleBand - StdDev * Std
# 策略逻辑
def strategy():
if not IsPosition:
if Close > UpperBand:
Buy(Symbol, 1) # 突破上轨,开多仓
elif Close < LowerBand:
Short(Symbol, 1) # 跌破下轨,开空仓
else:
atr_stop_long = EntryPrice - ATR(ATR_Period) * ATR_Multiplier
atr_stop_short = EntryPrice + ATR(ATR_Period) * ATR_Multiplier
if PositionType == PT_BUY and Low <= atr_stop_long:
Sell(Symbol, 1) # 多头触及止损,平仓
elif PositionType == PT_SELL and High >= atr_stop_short:
Cover(Symbol, 1) # 空头触及止损,平仓
# 主程序循环
while True:
init()
strategy()
Sleep(BarInterval * 60 * 1000)
Alert("策略运行中...")
这段代码实现了一个基本的布林线突破策略。让我们逐行解析其关键部分:
- 参数设置:
- Length:移动平均周期,决定了布林线的灵敏度
- StdDev:标准差倍数,控制布林线的宽度
- ATR_Period和ATR_Multiplier:用于设置动态止损
- 变量声明:
- UpperBand、LowerBand和MiddleBand分别存储布林线的三条轨道值
- 初始化函数(init):
- 计算布林线的三条轨道值
- MiddleBand是收盘价的简单移动平均
- 上下轨基于标准差计算得出
- 策略逻辑(strategy):
- 无持仓时:根据收盘价突破布林带上轨或跌破下轨进行开仓
- 有持仓时:使用ATR动态止损保护利润
- 主程序循环:
- 持续执行策略并更新数据
在实际应用中,布林线策略需要结合其他指标和分析方法来提高其准确性和可靠性。例如,可以结合相对强弱指数(RSI)来过滤交易信号,或者使用移动平均线(MA)来确定市场趋势的方向。此外,合理设置止损和止盈点位,以及科学的仓位管理,都是实现稳定盈利的关键因素。
值得注意的是,布林线策略并非万能的。在市场波动性较低或趋势不明显的情况下,布林线可能会频繁发出错误信号。因此,交易者需要根据市场状况灵活调整策略参数,并始终保持谨慎的态度。
布林线策略的价值在于其简洁性和适应性。它不仅适用于股票市场,还可以应用于期货、外汇等各类金融市场的交易。通过不断优化参数设置和交易逻辑,交易者可以开发出适合自己交易风格的布林线策略,从而在市场中获得持续稳定的收益。