Momentum Trend Synergy Strategy

Author: ChaoZhang, Date: 2024-02-19 14:48:37



The Momentum Trend Synergy Strategy combines the Relative Momentum Index (RMI) and a custom presentTrend indicator into one powerful trading approach. This multifaceted strategy integrates momentum analysis with trend direction to provide traders with a more nuanced and responsive trading mechanism.

Strategy Logic

RMI Indicator

The RMI is a variation of the Relative Strength Index (RSI) that measures the momentum of up moves and down moves relative to previous price changes over a given period. The RMI over N periods is calculated as:

RMI = 100 - 100/(1 + Upward Avg/Downward Avg)

  • Upward Avg is the average upward price change over N periods.
  • Downward Avg is the average downward price change over N periods.

RMI values range from 0 to 100. Higher figures indicate stronger upward momentum while lower values suggest stronger downward momentum.

presentTrend Indicator

The presentTrend indicator combines Average True Range (ATR) with a moving average to determine trend direction and dynamic support/resistance levels. presentTrend over M periods and multiplier F is:

  • Upper Band: MA + (ATR x F)

  • Lower Band: MA - (ATR x F)

  • MA is the moving average close over M periods.

  • ATR is the Average True Range over M periods.

  • F is the multiplier to adjust sensitivity.

Trend direction switches when price crosses the presentTrend bands, signaling potential entry or exit points.

Strategy Logic

Entry Conditions:

  • Long Entry: Triggered when RMI exceeds a threshold like 60, indicating strong bullish momentum, and price is above presentTrend upper band, confirming uptrend.
  • Short Entry: Occurs when RMI drops below a threshold like 40, showing strong bearish momentum, and price is below presentTrend lower band, indicating a downtrend.

Exit Conditions with Dynamic Trailing Stop:

  • Long Exit: Initiated when price crosses below presentTrend lower band or when RMI falls back towards neutral, suggesting weakening bullish momentum.
  • Short Exit: Executed when price crosses above presentTrend upper band or when RMI rises towards neutral, indicating weakening bearish momentum.

Equations for Dynamic Trailing Stop:

  • For Long Positions: Exit price is set at lower presentTrend band once entry condition is met.
  • For Short Positions: Exit price is determined by upper presentTrend band post-entry.

The dual analysis of RMI momentum and presentTrend direction/trailing stop is the strength of this strategy. It aims to enter trending moves early and exit positions strategically to maximize gains and reduce losses across various market conditions.

Advantage Analysis

The advantages of this strategy include:

  1. Multilayered decision framework combining momentum and trend indicators improves efficiency.
  2. Dynamic trailing stops adjust to markets to effectively manage risk.
  3. Flexibility in trade direction caters to preferences and market conditions.
  4. Customizable RMI and presentTrend parameters suit different trading timeframes and sensibilities.

Risk Analysis

Potential risks to consider:

  1. More signals may increase overtrading, costs, slippage.
  2. Dual analysis judges may miss some trade opportunities.
  3. Parameters need alignment with personal trading style.
  4. Requires manual trend direction bias to avoid counter-trend trades.

Proper parameter optimization, trend alignment, and refinements to entry logic can reduce the above risks.

Enhancement Opportunities

Areas for strategy improvement include:

  1. Incorporate volatility indicator to avoid high volatility false signals.
  2. Add volume analysis to ensure sufficient momentum on entries.
  3. Optimize dynamic stop loss levels to balance protection and profitability.
  4. Introduce re-entry conditions to fully capitalize on trends.
  5. Parameter optimization and backtesting to maximize return metrics.


The Momentum Trend Synergy Strategy provides a multilayered approach, incorporating both momentum and trend indicators for accurate and risk-managed trading. The high customizability of this strategy allows traders to tailor it to their personal style and market environments. When optimized, it can fully leverage its trend-capturing capabilities for strong performance. Thus, it represents a recommended addition for most trading toolboxes.

start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

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

strategy("PresentTrend RMI Synergy - Strategy [presentTrading]", shorttitle="PresentTrend RMI Synergy - Strategy [presentTrading]", overlay=false)

// Inputs
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"])
lengthRMI =, title="RMI Length")
lengthSuperTrend =, title="presentTrend Length")
multiplierSuperTrend = input.float(4.0, title="presentTrend Multiplier")

// RMI Calculation
up = ta.rma(math.max(ta.change(close), 0), lengthRMI)
down = ta.rma(-math.min(ta.change(close), 0), lengthRMI)
rmi = 100 - (100 / (1 + up / down))

// PresentTrend Dynamic Threshold Calculation (Simplified Example)
presentTrend = ta.sma(close, lengthRMI) * multiplierSuperTrend // Simplified for demonstration

// SuperTrend for Dynamic Trailing Stop
atr = ta.atr(lengthSuperTrend)
upperBand = ta.sma(close, lengthSuperTrend) + multiplierSuperTrend * atr
lowerBand = ta.sma(close, lengthSuperTrend) - multiplierSuperTrend * atr
trendDirection = close > ta.sma(close, lengthSuperTrend) ? 1 : -1
// Entry Logic
longEntry = rmi > 60 and trendDirection == 1 
shortEntry = rmi < 40 and trendDirection == -1 

// Exit Logic with Dynamic Trailing Stop
longExitPrice = trendDirection == 1 ? lowerBand : na
shortExitPrice = trendDirection == -1 ? upperBand : na

// Strategy Execution
if (tradeDirection == "Long" or tradeDirection == "Both") and longEntry
    strategy.entry("Long Entry", strategy.long)
    strategy.exit("Exit Long", stop=longExitPrice)

if (tradeDirection == "Short" or tradeDirection == "Both") and shortEntry
    strategy.entry("Short Entry", strategy.short)
    strategy.exit("Exit Short", stop=shortExitPrice)

// Visualization
plot(rmi, title="RMI",
hline(50, "Baseline", color=color.white)
hline(30, "Baseline",
hline(70, "Baseline",