AlphaTrend and Bollinger Bands Combined Mean Reversion + Trend Following Strategy

Author: ChaoZhang, Date: 2024-03-28 16:32:35



This strategy combines the characteristics of the AlphaTrend indicator and the Bollinger Bands strategy. The AlphaTrend indicator is used to capture market trends, while the Bollinger Bands strategy is used to capture the mean reversion characteristics of the market. The main idea of the strategy is: when the price breaks through the upper Bollinger Band and the AlphaTrend indicator is upward, go long; when the price breaks through the lower Bollinger Band and the AlphaTrend indicator is downward, go short. The exit condition of the strategy is: when the price falls below the AlphaTrend indicator, close the position.

Strategy Principle

  1. Calculation of the AlphaTrend indicator:
    • Determine whether to use RSI or MFI based on the novolumedata parameter
    • Calculate ATR as a volatility reference
    • Calculate upT and downT as upper and lower thresholds for trend determination
    • Update the AlphaTrend indicator based on the relationship between price and upT and downT
  2. Calculation of Bollinger Bands:
    • Calculate the simple moving average (SMA) of the closing price over the BBPeriod as the middle band
    • Calculate the standard deviation (SD) of the closing price
    • Upper band = SMA + BBMultiplier * SD
    • Lower band = SMA - BBMultiplier * SD
  3. Strategy entry conditions:
    • Long condition: closing price breaks above the upper Bollinger Band and AlphaTrend indicator is upward
    • Short condition: closing price breaks below the lower Bollinger Band and AlphaTrend indicator is downward
  4. Strategy exit conditions:
    • Based on the AlphaTrend indicator: close the position when the price falls below the AlphaTrend indicator

The strategy combines the characteristics of trend following and mean reversion. It closely follows the trend when the trend is obvious and seeks excess returns in range-bound markets. The AlphaTrend indicator can flexibly adjust according to price movements and has good adaptability to trends. At the same time, Bollinger Bands can objectively depict the relative highs and lows of prices. The combination of the two can form effective entry signals.

Advantage Analysis

  1. Combining trend following and mean reversion, it can seize opportunities in various market conditions
  2. The AlphaTrend indicator can flexibly adapt to price movements and balance trends and volatility
  3. The AlphaTrend indicator considers both price and volume information, making the signals highly reliable
  4. The concept of Bollinger Bands is simple and can objectively depict the relative highs and lows of prices. Combined with the AlphaTrend indicator, it forms an effective filtering mechanism
  5. Parameters are adjustable, and the strategy has high flexibility, which can be optimized according to market characteristics

Risk Analysis

  1. The AlphaTrend indicator is relatively sensitive to parameters, and improper parameter settings may cause the signals to fail
  2. When the market is in a range-bound period, the combination of Bollinger Bands and AlphaTrend may generate frequent signals
  3. The strategy may fail in the event of sudden market movements
  4. Fixed stop-loss points may bear greater risks
  5. The strategy lacks position management and capital management

In response to the above risks, the following measures can be taken:

  1. Parameter optimization and backtesting for different markets and varieties
  2. Further filter signals to reduce costs caused by frequent trading
  3. Set reasonable stop-loss points and strictly execute stop-loss
  4. Introduce more robust trend determination indicators to improve the accuracy of trend identification
  5. In actual trading, strictly follow capital management principles to reduce the risk exposure of a single transaction

Optimization Direction

  1. Optimization of indicator parameters: perform parameter optimization for different varieties and periods to improve the effectiveness of signals
  2. Signal filtering: introduce more filtering conditions, such as the price must close outside the Bollinger Bands after breaking through, to reduce noise signals
  3. Stop-loss optimization: adopt more flexible stop-loss strategies, such as ATR stop-loss or percentage stop-loss
  4. Position management: dynamically adjust positions according to the level of risk, reducing positions during high-risk periods and increasing positions during low-risk periods
  5. Combine with other indicators: introduce more effective indicators, such as trend indicators like ADX and momentum indicators like RSI, to further improve the reliability of signals
  6. Capital management: strictly implement capital management principles, with the risk exposure of a single transaction not exceeding 2% of the account and the total risk exposure not exceeding 10% of the account

The strategy still has a lot of room for optimization. Parameter optimization and signal filtering can intuitively improve strategy performance. Introducing position management can smooth the return curve. More flexible stop-loss methods can reduce the risk of a single transaction. Through the combined optimization of these methods, the performance of the strategy can be further improved, enabling it to steadily profit in actual trading.


This strategy ingeniously combines two common quantitative strategy ideas: trend following and mean reversion, while employing the AlphaTrend indicator and the classic Bollinger Bands indicator. The AlphaTrend indicator makes full use of price and volume information, adapting well to market rhythms while grasping trends. The Bollinger Bands indicator objectively depicts the relative highs and lows of prices and can effectively capture overbought and oversold opportunities. The combination of the two indicators forms a resonance of trend and price, enabling flexible capture of opportunities in both trending and range-bound markets.

The overall logic of the strategy is clear, and the parameter settings are flexible, making it convenient to optimize for different varieties and periods. At the same time, the risk points of the strategy are also relatively obvious, and position management and stop-loss need further optimization. In addition, to further improve the reliability of signals, it is worth considering introducing trend indicators such as ADX and momentum indicators such as RSI. Overall, this strategy is a classic combination of trend investing and mean reversion ideas, making good use of the advantages of the AlphaTrend indicator and deserving further optimization and follow-up research. It is believed that after further refinement, this strategy can become a powerful tool in actual trading.

start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at
// © brlu99

strategy(title="AlphaTrend and Bollinger Bands 120324 Strategy", shorttitle="AT_BB120324", overlay=true, format=format.price, precision=2, pyramiding=0)

// AlphaTrend Indicator
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(, 20)
src = input(close)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

// Bollinger Bands Strategy
BBPeriod =, title="BB Period", minval=1)
BBMultiplier = input.float(2.0, title="BB Multiplier", minval=0.1)
basis = ta.sma(close, BBPeriod)
dev = ta.stdev(close, BBPeriod)
upper = basis + BBMultiplier * dev
lower = basis - BBMultiplier * dev

// Strategy Conditions
longCondition = ta.crossover(close, upper) and ta.crossover(AlphaTrend, AlphaTrend[1])
shortCondition = ta.crossunder(close, lower) and ta.crossunder(AlphaTrend, AlphaTrend[1])
// Exit conditions for Strategy 6
longExit_AT_6 = ta.crossover(close, AlphaTrend)
shortExit_AT_6 = ta.crossunder(close, AlphaTrend)
// Exit condition series
exit1 = input.bool(true, title="Enable Exit Condition for Strategy 1")

// Define exit conditions for each strategy
exit1_condition = close < AlphaTrend ? 1.0 : na

// Strategy Actions
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.entry("Sell", strategy.short, when=shortCondition)
// Exit conditions for Strategy 1
strategy.exit("Buy", "longExit_AT_6", stop = exit1_condition, when =shortExit_AT_6 )
strategy.exit("Sell", "shortExit_AT_6", stop = exit1_condition, when =longExit_AT_6)

// Plotting
plot(AlphaTrend,, title="AlphaTrend")
plot(upper,, title="Upper Bollinger Band")
plot(lower,, title="Lower Bollinger Band")

// Alerts
alertcondition(longCondition, title='Potential Buy Signal', message='AlphaTrend crossed above Upper Bollinger Band')
alertcondition(shortCondition, title='Potential Sell Signal', message='AlphaTrend crossed below Lower Bollinger Band')