Moving Average Ribbon Trend Strategy

Author: ChaoZhang, Date: 2023-11-02 15:22:17



The Moving Average Ribbon Trend Strategy is a trend-following strategy based on moving averages. It uses a single moving average to construct a price channel and determines the trend direction based on the price relative to the channel, then places trades accordingly. This strategy works well in trending markets and is able to capture longer-term price trends.

Strategy Logic

The strategy calculates a simple moving average with a specified period length (default 20 periods) and builds a price channel using the MA values. The upper and lower bands of the channel are the highest and lowest values of the MA respectively. If the closing price is above the upper band, an uptrend is determined. If the closing price is below the lower band, a downtrend is identified.

When a trend change is detected, the strategy will place trades. If the trend changes from down to up, a long position will be opened. If the trend changes from up to down, a short position will be opened. Existing long positions will be closed if the trend turns down, and existing short positions will be closed if the trend turns up.

Specifically, the trading logic is:

  • Open long if closing price > previous upper band
  • Open short if closing price < previous lower band
  • Close long if closing price < lower band
  • Close short if closing price > upper band

The strategy uses a single MA to construct the price channel and identify trend changes by price breakouts. It is simple, intuitive and easy to implement, suitable as a trend following strategy.

Advantage Analysis

The Moving Average Ribbon Trend Strategy has the following advantages:

  • Simple logic, easy to understand and implement, lowers execution difficulty
  • Uses single MA, fewer parameters, avoids overfitting
  • Price channel clearly identifies trend turning points
  • Customizable channel width to adjust sensitivity
  • MA breakout filters some false breakouts
  • Position size accumulates along the trend, captures trend moves
  • Position adjusted by MA, actively controls risk

In summary, the strategy is based on simple logic, uses the price channel to identify trend changes, and can effectively follow longer-term price trends. It is suitable as a trend following strategy.

Risk Analysis

The strategy also has some risks:

  • MA lag may miss best entry timing for trend change
  • Whipsaws may cause unnecessary losses in ranging markets
  • Long term trend trading can face larger drawdowns, requires adequate capital
  • Single parameter may cause overfitting, underperform in live trading
  • Unable to distinguish cycles, may be insensitive to shorter fluctuations

The risks can be addressed by:

  • Adjust MA period to reduce lag
  • Add filters to avoid whipsaws in ranging markets
  • Optimize position sizing to limit losses
  • Parameter tuning with live data
  • Add multiple MAs to identify trends on different levels

Enhancement Opportunities

The strategy can be enhanced in the following aspects:

  • Optimize MA indicator: Test different MAs like WMA to improve performance.

  • Add filters: Add filters like volume, volatility before entry to avoid whipsaws.

  • Multiple timeframes: Use MAs on different timeframes to identify more trends.

  • Dynamic parameters: Allow dynamic adjustment of MA period and channel width based on market conditions.

  • Position sizing: Adjust position size based on market conditions to limit losses. Can set profit targets to reduce size.

  • Machine learning: Use ML to find optimal parameter combinations.

  • Ensemble methods: Combine with other trend following strategies for more robustness.

In summary, the strategy can be enhanced comprehensively in terms of indicator selection, filters, timeframes, dynamic parameters, position sizing etc. This will make the strategy more robust and flexible across different market environments.


The Moving Average Ribbon Trend Strategy is a simple trend following strategy. It uses a single MA to build a price channel and identifies trend direction by channel breakouts, aiming to capture medium- to long-term trends. The strategy has advantages like simple logic, few parameters, and ease of implementation. But it also has risks like lagging in trend identification and being whipsawed. Further enhancements can be made through optimizing MA, adding filters, dynamic parameters etc. to improve live performance. Overall, the strategy provides an intuitive approach to using price channels for trend identification and serves as a basic trend following strategy.

start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

// This source code is subject to the terms of the Mozilla Public License 2.0 at
// © noro

strategy(title = "Noro's Trend Ribbon Strategy", shorttitle = "Trend Ribbon str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)

len = input(20, minval = 5, title = "MA Length")
src = input(ohlc4, title = "MA Source")

ma = sma(src, len)
plot(ma, color =

h = highest(ma, len)
l = lowest(ma, len)
ph = plot(h)
pl = plot(l)

trend = 0
trend := close > h[1] ? 1 : close < l[1] ? -1 : trend[1]

col = trend == 1 ? :
fill(ph, pl, color = col, transp = 50)

if close > h[1]
    strategy.entry("Long", strategy.long)
if close < l[1]
    strategy.entry("Short", strategy.short)