Multi-Cloud Momentum EMA Strategy: A Trend Trading System Based on Ichimoku Cloud and Exponential Moving Average

ICHIMOKU EMA VOLUME FILTER CLOUD BREAKOUT momentum TREND FOLLOWING STOP LOSS
Created on: 2025-08-04 13:51:36 Modified on: 2025-08-04 13:51:36
Copy: 0 Number of hits: 203
avatar of ianzeng123 ianzeng123
2
Follow
319
Followers

 Multi-Cloud Momentum EMA Strategy: A Trend Trading System Based on Ichimoku Cloud and Exponential Moving Average  Multi-Cloud Momentum EMA Strategy: A Trend Trading System Based on Ichimoku Cloud and Exponential Moving Average

Strategy Overview

The Multi-Cloud Momentum EMA Strategy is a trend following system that combines the Ichimoku Cloud with an Exponential Moving Average (EMA). This strategy identifies market trend direction by analyzing price position relative to the cloud, implementing volume filters, and utilizing the EMA technical indicator to generate buy and sell signals. It also incorporates a dynamic stop-loss mechanism for risk control, making it a relatively complete trading system.

Strategy Principles

The strategy is based on the following core principles:

  1. Ichimoku Cloud Analysis:

    • When price is above the cloud (higher than both Tenkan-sen and Kijun-sen) and other conditions are met, the system generates a long signal
    • When price is below the cloud (lower than both Tenkan-sen and Kijun-sen) and other conditions are met, the system generates a short signal
  2. Volume Confirmation:

    • The strategy uses a volume filter to ensure entry only when volume is higher than the average volume of the past N periods
    • This helps ensure sufficient market participation and improves signal reliability
  3. EMA Indicator Filter:

    • Optional EMA filter conditions can be added, requiring price to be above the EMA for long positions and below the EMA for short positions
    • The EMA (44 periods) also serves as an exit signal indicator, closing positions when price breaks through the EMA
  4. Stop Loss Settings:

    • Uses percentage-based stop loss, defaulted to 2% of entry price, which can be customized
    • This provides clear risk control parameters for trades

Strategy execution flow: 1. Calculate Ichimoku Cloud indicators (Tenkan-sen, Kijun-sen, Senkou Span A, Senkou Span B) 2. Calculate 44-period EMA and volume conditions 3. Determine buy/sell opportunities based on price position relative to the cloud, volume conditions, and optional EMA filter 4. Enter positions when conditions are met and set stop loss 5. Exit current positions when price breaks through the EMA

Strategy Advantages

  1. Multiple Indicator Confirmation: Combines multiple technical indicators including Ichimoku Cloud, volume, and EMA, improving signal reliability and reducing false signal risk.

  2. Flexible Condition Configuration: The strategy allows users to customize whether EMA filter conditions need to be met, providing adaptability for different market environments.

  3. Complete Risk Management: Through percentage-based stop loss settings, it provides clear risk control parameters to protect capital.

  4. Trend Capture Capability: The Ichimoku Cloud itself is an excellent trend assessment tool, and combined with EMA confirmation, it enhances the strategy’s ability to capture medium to long-term trends.

  5. Liquidity Consideration: Through the volume filter, it ensures trading only when the market has sufficient liquidity, avoiding uncertainties in low liquidity environments.

  6. Clear Entry and Exit Logic: The strategy has clear entry (cloud breakthrough + volume) and exit (EMA breakthrough or stop loss) conditions, making the trading decision process transparent.

Strategy Risks

  1. Poor Performance in Ranging Markets: As a trend following strategy, it may frequently generate false signals in sideways or range-bound markets, leading to consecutive losses. Solution: Add a volatility filter to pause trading in low volatility environments.

  2. Lag Risk: The Ichimoku Cloud indicator has a certain lag, especially with the leading span set to 26 periods of displacement, which may lead to suboptimal entry timing. Solution: Consider adjusting displacement parameters or incorporating more sensitive short-term indicators as supplements.

  3. Stop Loss Trigger Frequency: In highly volatile markets, the 2% stop loss setting may be too tight, causing frequent triggers. Solution: Dynamically adjust the stop loss percentage based on the volatility characteristics of the trading instrument.

  4. Parameter Sensitivity: Strategy effectiveness is relatively sensitive to parameter settings (such as EMA period, Ichimoku Cloud parameters), and different market environments may require different parameters. Solution: Conduct parameter optimization tests to find more robust parameter combinations.

  5. Lack of Profit Targets: The strategy defines clear stop losses but does not set profit targets, which may lead to losing existing profits during retracements. Solution: Add trailing stop loss or profit target parameters.

Strategy Optimization Directions

  1. Dynamic Parameter Adjustment:

    • Dynamically adjust Ichimoku Cloud parameters and EMA periods based on market volatility
    • Use longer periods in high-volatility markets and shorter periods in low-volatility markets to adapt to different market environments
    • This can reduce the risk of overfitting that comes with fixed parameters
  2. Add Market Environment Filters:

    • Add trend strength indicators (such as ADX) to trade only in strong trend environments
    • Add volatility indicators (such as ATR) to adjust position size or pause trading in extreme volatility environments
    • This will improve strategy stability across different market conditions
  3. Optimize Profit-Taking Mechanism:

    • Add trailing stop loss functionality to automatically adjust stop loss levels as price moves favorably
    • Set volatility-based profit targets to lock in partial profits when specific returns are achieved
    • This will address the strategy’s lack of clear profit objectives
  4. Phased Entry and Exit:

    • Implement mechanisms for phased position building and liquidation to reduce timing risk
    • Adjust position size based on signal strength (such as distance between price and cloud)
    • This approach can reduce the risk of all-in operations and improve capital efficiency
  5. Add Reversal Confirmation Indicators:

    • Incorporate momentum indicators (such as RSI or MACD) to confirm trend reversal signals
    • This will improve the accuracy of exit timing and reduce false signals

Summary

The Multi-Cloud Momentum EMA Strategy is a trend following system that comprehensively utilizes the Ichimoku Cloud, EMA, and volume filters. Through the combination of multiple technical indicators, this strategy can effectively identify trends and provide clear entry and exit signals. At the same time, the built-in stop loss mechanism provides assurance for risk control.

The core advantage of the strategy lies in its comprehensive consideration of key trading factors including price position, trend direction, volume, and dynamic stop loss, constructing a relatively complete trading decision framework. However, as a trend following system, this strategy may not perform well in ranging markets, and parameter settings have a certain sensitivity.

By implementing the suggested optimization directions, especially dynamic parameter adjustment, market environment filtering, and optimized profit-taking mechanisms, this strategy has the potential to achieve more stable performance across different market environments. Ultimately, this strategy provides trend-following traders with a structured technical analysis framework, helping them capture trend opportunities while controlling risk.

Strategy source code
/*backtest
start: 2024-08-04 00:00:00
end: 2025-08-02 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud Buy & Sell w/ Custom EMA & Volume Filters", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === INPUTS ===
conversionPeriods = input.int(9, title="Tenkan-sen Periods")
basePeriods      = input.int(26, title="Kijun-sen Periods")
displacement     = input.int(26, title="Cloud Displacement")
laggingSpan      = input.int(52, title="Senkou Span B Periods")

emaPeriod        = input.int(44, title="EMA Length for Exit", minval=1)
avgVolLen        = input.int(10, title="Average Volume Length for Filter")
useStopLoss      = input.bool(true, title="Use Stop Loss for Exits")
stopLossPerc     = input.float(2.0, title="Stop Loss (%)", minval=0.1, step=0.1)
requireAboveEMA  = input.bool(true, title="Only Buy Above EMA?")
requireBelowEMA  = input.bool(true, title="Only Sell Below EMA?")

// === ICHIMOKU CALCULATIONS ===
tenkan = (ta.highest(high, conversionPeriods) + ta.lowest(low, conversionPeriods)) / 2
kijun  = (ta.highest(high, basePeriods) + ta.lowest(low, basePeriods)) / 2
senkouA = (tenkan + kijun) / 2
senkouB = (ta.highest(high, laggingSpan) + ta.lowest(low, laggingSpan)) / 2
senkouA_now = senkouA[displacement]
senkouB_now = senkouB[displacement]

// === EMA CALC ===
emaVal = ta.ema(close, emaPeriod)

// === VOLUME CONDITION ===
avgVol = ta.sma(volume[1], avgVolLen) // Excludes current candle's volume
volCondition = volume > avgVol

// === BUY CONDITION ===
buyCondition = (close > senkouA_now and close > senkouB_now and volCondition and (not requireAboveEMA or close > emaVal))

if buyCondition
    stopLevel = useStopLoss ? close * (1 - stopLossPerc / 100) : na
    strategy.entry("Buy", strategy.long)
    if useStopLoss
        strategy.exit("Buy SL", from_entry="Buy", stop=stopLevel)

// === SELL CONDITION ===
sellCondition = (close < senkouA_now and close < senkouB_now and volCondition and (not requireBelowEMA or close < emaVal))

if sellCondition
    stopLevelSell = useStopLoss ? close * (1 + stopLossPerc / 100) : na
    strategy.entry("Sell", strategy.short)
    if useStopLoss
        strategy.exit("Sell SL", from_entry="Sell", stop=stopLevelSell)

// === EXIT CONDITIONS ===
exitBuy = close < emaVal // Exit long if close < EMA
if exitBuy
    strategy.close("Buy")

exitSell = close > emaVal // Exit short if close > EMA
if exitSell
    strategy.close("Sell")

// === PLOTS ===
plot(emaVal, color=color.yellow, linewidth=2, title="EMA")
plot(senkouA, color=color.green, title="Senkou Span A", offset=displacement)
plot(senkouB, color=color.red, title="Senkou Span B", offset=displacement)