这是一个基于三重布林带的趋势跟踪策略。策略通过结合不同周期(20、120和240)的布林带来识别市场超买超卖状态,并在价格突破三条布林带时产生交易信号。这种多周期布林带的组合可以有效过滤虚假信号,提高交易的准确性。
策略使用三个不同周期的布林带(20、120和240周期),每个布林带都由中轨(SMA)和上下轨(标准差的2倍)构成。当价格同时突破三条布林带的下轨时,表明市场可能出现超卖,系统发出做多信号;当价格同时突破三条布林带的上轨时,表明市场可能出现超买,系统发出平仓信号。通过观察多个时间周期的布林带,可以更好地确认市场趋势的强度和持续性。
这是一个基于多周期布林带的趋势跟踪策略,通过三重布林带的交叉来确认交易信号,具有较强的可靠性和适应性。策略的核心优势在于多重确认机制和清晰的风险控制体系,但也需要注意在震荡市场中的表现和参数优化问题。通过加入量价关系分析、改进止损机制和动态参数调整等优化方向,可以进一步提升策略的稳定性和盈利能力。
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy(title="Bollinger Bands Strategy (Buy Below, Sell Above)", shorttitle="BB Strategy", overlay=true)
// Bollinger Bands parameters
length1 = input(20, title="BB Length 20")
mult1 = input(2.0, title="BB Multiplier 20")
length2 = input(120, title="BB Length 120")
mult2 = input(2.0, title="BB Multiplier 120")
length3 = input(240, title="BB Length 240")
mult3 = input(2.0, title="BB Multiplier 240")
// Calculate the basis (simple moving average) and deviation for each Bollinger Band
basis1 = ta.sma(close, length1)
dev1 = mult1 * ta.stdev(close, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
basis2 = ta.sma(close, length2)
dev2 = mult2 * ta.stdev(close, length2)
upper2 = basis2 + dev2
lower2 = basis2 - dev2
basis3 = ta.sma(close, length3)
dev3 = mult3 * ta.stdev(close, length3)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
// Buy Condition: Price is below all three lower bands
buyCondition = close < lower1 and close < lower2 and close < lower3
// Sell Condition: Price is above all three upper bands
sellCondition = close > upper1 and close > upper2 and close > upper3
// Plot Buy and Sell signals with arrows
plotshape(buyCondition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(sellCondition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)
// Strategy orders for buy and sell
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy") // Close the long position for a sell signal
// Plotting the Bollinger Bands without filling the area
plot(basis1, color=color.blue, title="Basis 20", linewidth=2)
plot(upper1, color=color.green, title="Upper Band 20", linewidth=2)
plot(lower1, color=color.red, title="Lower Band 20", linewidth=2)
plot(basis2, color=color.orange, title="Basis 120", linewidth=2)
plot(upper2, color=color.purple, title="Upper Band 120", linewidth=2)
plot(lower2, color=color.yellow, title="Lower Band 120", linewidth=2)
plot(basis3, color=color.teal, title="Basis 240", linewidth=2)
plot(upper3, color=color.fuchsia, title="Upper Band 240", linewidth=2)
plot(lower3, color=color.olive, title="Lower Band 240", linewidth=2)