Multi-Indicator Integrated Trading System: A Quantitative Strategy Suite Based on Ichimoku Cloud, RSI and VWMA

ICHIMOKU RSI VWMA ATR SL/TP 趋势跟踪 背离反转 突破交易 动量指标
Created on: 2025-06-30 15:20:59 Modified on: 2025-06-30 15:20:59
Copy: 1 Number of hits: 277
avatar of ianzeng123 ianzeng123
2
Follow
319
Followers

 Multi-Indicator Integrated Trading System: A Quantitative Strategy Suite Based on Ichimoku Cloud, RSI and VWMA  Multi-Indicator Integrated Trading System: A Quantitative Strategy Suite Based on Ichimoku Cloud, RSI and VWMA

Strategy Overview

This quantitative trading strategy is a comprehensive trading system that combines multiple technical indicators to capture different trading opportunities in the market. The core of the system consists of the Ichimoku Cloud (a multifunctional trend indicator), Relative Strength Index (RSI), and Volume Weighted Moving Average (VWMA), with Average True Range (ATR) used to dynamically set stop-loss and take-profit levels. The strategy suite offers four different sub-strategies, each targeting different market environments: trend-following (“IchimokuRSITrend”), moving average bounce (“VWMA_RSIBounce”), divergence reversal (“DivergenceReversal”), and flat breakout (“FlatBreakout”). This modular design allows traders to flexibly choose the most suitable strategy variant based on current market conditions, enhancing the strategy’s adaptability and practicality.

Strategy Principles

The core principle of this strategy is to confirm trading signals through a combination of multiple indicators, thereby improving signal reliability. Specifically:

  1. Ichimoku Cloud Components:

    • Calculate Tenkan-sen (Conversion Line, 9-period high-low average)
    • Calculate Kijun-sen (Base Line, 26-period high-low average)
    • Calculate Senkou Span A (Leading Span A, average of Tenkan and Kijun)
    • Calculate Senkou Span B (Leading Span B, 52-period high-low average)
    • Determine price position relative to the cloud and the relationship between Tenkan and Kijun
  2. RSI Indicator: Uses standard 14-period RSI to measure price momentum and overbought/oversold conditions

  3. VWMA Indicator: 20-period Volume Weighted Moving Average, used to confirm price trends

  4. ATR Indicator: Used to dynamically set stop-loss and take-profit levels, adaptively adjusting based on market volatility

Depending on the selected strategy type, the system activates different signal generation logic:

  • Trend Following (IchimokuRSITrend): Generates long signals when price is above the cloud, Tenkan is above Kijun, RSI is above 50, and price is above VWMA; generates short signals under opposite conditions
  • Moving Average Bounce (VWMA_RSIBounce): Generates long signals when price crosses above VWMA, RSI is above 35, and Tenkan is above Kijun; generates short signals under opposite conditions
  • Divergence Reversal (DivergenceReversal): Generates long signals when RSI bullish divergence is detected, Tenkan is above Kijun, and VWMA is above price; generates short signals under opposite conditions
  • Flat Breakout (FlatBreakout): Generates long signals when Tenkan is flat (difference from Kijun less than 1.0), RSI is above 55, and price is above VWMA; generates short signals under opposite conditions

Whenever a trading signal is generated, the system sets dynamic stop-loss and take-profit levels based on the ATR value, with default settings of 1.5x ATR for stop-loss and 3.0x ATR for take-profit, ensuring that risk management is consistent with market volatility.

Strategy Advantages

  1. Multi-dimensional Confirmation Mechanism: By combining Ichimoku Cloud, RSI, and VWMA, the strategy achieves confirmation of trading signals from three dimensions: trend, momentum, and volume, significantly reducing the risk of false signals.

  2. Strong Adaptability: The strategy suite provides four different sub-strategies, capable of adapting to different market environments, from trending markets to oscillating markets.

  3. Dynamic Risk Management: Using the ATR indicator to dynamically set stop-loss and take-profit levels allows risk management to automatically adjust with market volatility, avoiding the limitations of fixed-level stops in different volatility environments.

  4. Anti-Duplicate Signal Mechanism: By tracking the previous signal state (prevSignal variable), the strategy avoids generating consecutive signals in the same direction, reducing unnecessary trading costs.

  5. Visual Assistance: Each trading signal and its source strategy are clearly marked on the chart with labels, facilitating backtest analysis and real-time monitoring.

  6. Modular Design: The code structure is clear with separate functional modules, facilitating subsequent maintenance and expansion, such as easily adding new strategy variants or adjusting existing strategy parameters.

Strategy Risks

  1. Parameter Sensitivity: The strategy uses multiple technical indicators, each with its own parameter settings, making the strategy sensitive to parameter selection. Different markets or timeframes may require different parameter combinations for optimal results. The solution is to conduct thorough parameter optimization and backtesting to find robust parameter combinations.

  2. Signal Lag Risk: Technical indicators are inherently lagging, especially moving average-type indicators, which may lead to late entries near trend turning points. The solution is to consider adding some leading indicators or shortening certain indicator periods to improve signal timeliness.

  3. Overtrading Risk: The four strategies may generate frequent signals under certain market conditions, leading to overtrading. The solution is to add signal filtering conditions or implement a trading cooldown mechanism to limit trading frequency within a short period.

  4. Cloud Interpretation Complexity: The Ichimoku Cloud is a relatively complex indicator system, and correct interpretation requires experience. The solution is to deeply learn the principles of using the Ichimoku Cloud, or consider simplifying the cloud usage by only adopting its core components.

  5. Simplified RSI Divergence Detection: The RSI divergence detection in the code uses a simplified algorithm, which may not capture all valid divergence patterns. The solution is to improve the divergence detection algorithm and adopt more precise extremum judgment methods.

  6. Fixed Stop-Loss/Take-Profit Ratios: Although ATR is used to dynamically set stop-loss and take-profit levels, the ATR multiples are fixed, which may not be suitable for all market conditions. The solution is to dynamically adjust ATR multiples based on market volatility characteristics or strategy type, or implement a trailing stop strategy.

Strategy Optimization Directions

  1. Improve Divergence Detection Algorithm: The current RSI divergence detection in the code uses a simplified method. This can be improved by implementing more complex peak-valley detection algorithms to enhance divergence identification accuracy. Specifically, ZigZag indicators or fractal theory can be used to identify key turning points in price and indicators, then compare the relative positions of these points to determine divergence.

  2. Add Time Filters: Many markets exhibit different characteristics at different times. Adding time filtering conditions can enable or disable certain strategies during specific trading sessions to avoid inefficient trading periods.

  3. Increase Volume Confirmation: Although the strategy uses VWMA, direct volume analysis can be further added, such as requiring the volume when a signal is generated to be higher than the average volume of the previous N periods, enhancing signal reliability.

  4. Implement Adaptive Parameters: Design key parameters (such as RSI thresholds, ATR multiples, etc.) to automatically adjust according to market volatility conditions. For example, use more relaxed RSI thresholds and larger stop-loss distances in high-volatility markets, and vice versa.

  5. Add Trend Strength Filtering: Introduce trend strength indicators such as ADX, using trend-following strategies only when trend strength is sufficient, and switching to reversal or oscillation strategies when the trend is weak, improving strategy adaptability.

  6. Implement Partial Position Management: The current strategy uses a fixed position size (default is 10% of account funds). Dynamic position management based on signal strength, market volatility, or account equity curve can be implemented. For example, increase position size when signals are stronger and reduce position size in high-volatility environments.

  7. Add Trailing Stop Functionality: In addition to fixed ATR multiple stops, implement trailing stop functionality that automatically adjusts stop-loss levels as price moves in a favorable direction, locking in partial profits while giving price enough breathing room.

  8. Integrate Machine Learning Methods: Consider using machine learning algorithms to optimize strategy parameters or filter signals. For example, use random forests or support vector machine classifiers to evaluate the reliability of each signal and filter out low-quality signals.

Summary

The Multi-Indicator Integrated Trading System is a comprehensive and flexibly designed quantitative trading strategy suite that provides traders with solutions for various market environments by integrating the Ichimoku Cloud, RSI, and VWMA technical indicators, combined with ATR dynamic risk management. The main advantages of this strategy lie in its multi-dimensional signal confirmation mechanism, flexibility in strategy selection, and dynamic risk management methods, which together enhance the strategy’s robustness and adaptability.

At the same time, we need to recognize the risks in the strategy, such as parameter sensitivity, signal lag, and simplified divergence judgment. To address these risks, we have proposed several optimization directions, including improving divergence detection algorithms, adding time filters, implementing adaptive parameters, and adding trailing stop functionality. These optimization measures can further enhance the strategy’s performance and stability.

Overall, this strategy system provides traders with a solid trading framework that can be directly applied to actual trading or serve as a foundation for further development and customization. Through continuous optimization and adjustment, this strategy has the potential to achieve stable trading performance in various market environments.

Strategy source code
/*backtest
start: 2024-06-30 00:00:00
end: 2025-06-28 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/

//@version=5
strategy("Ichimoku + RSI + VWMA Strategy Suite (w/ ATR SLTP)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === STRATEJI SECIMI === //
strategy_type = input.string("IchimokuRSITrend", options=["IchimokuRSITrend", "VWMA_RSIBounce", "DivergenceReversal", "FlatBreakout"], title="Strateji Tipi")

// === ATR PARAMETRESİ === //
atrLength = input.int(14, title="ATR Periyodu")
atrMultSL = input.float(1.5, title="Stop-Loss x ATR")
atrMultTP = input.float(3.0, title="Take-Profit x ATR")
atr = ta.atr(atrLength)

// === GÖSTERGE PARAMETRELERİ === //
rsi = ta.rsi(close, 14)
vwma = ta.vwma(close, 20)

// Ichimoku bileşenleri
tenkan = (ta.highest(9) + ta.lowest(9)) / 2
kijun = (ta.highest(26) + ta.lowest(26)) / 2
senkouSpanA = (tenkan + kijun) / 2
senkouSpanB = (ta.highest(52) + ta.lowest(52)) / 2
priceAboveCloud = close > senkouSpanA and close > senkouSpanB
priceBelowCloud = close < senkouSpanA and close < senkouSpanB
tenkanAboveKijun = tenkan > kijun
tenkanFlat = math.abs(tenkan - kijun) < 1.0

// RSI Divergence Etiketi (basit taklit)
rsiBullishDiv = ta.lowestbars(rsi, 5) < ta.lowestbars(rsi, 5)[1] and ta.lowestbars(close, 5) > ta.lowestbars(close, 5)[1]
rsiBearishDiv = ta.highestbars(rsi, 5) > ta.highestbars(rsi, 5)[1] and ta.highestbars(close, 5) < ta.highestbars(close, 5)[1]

// === SİNYAL TANIMLARI === //
var string prevSignal = "none"
longSignal = false
shortSignal = false

// === STRATEJİ 1: Ichimoku Bulut + RSI Momentum === //
if strategy_type == "IchimokuRSITrend"
    longSignal := priceAboveCloud and tenkanAboveKijun and rsi > 50 and close > vwma and prevSignal != "long"
    shortSignal := priceBelowCloud and not tenkanAboveKijun and rsi < 50 and close < vwma and prevSignal != "short"

// === STRATEJİ 2: VWMA Cross + RSI Aşırı Satım === //
if strategy_type == "VWMA_RSIBounce"
    longSignal := ta.crossover(close, vwma) and rsi > 35 and tenkanAboveKijun and prevSignal != "long"
    shortSignal := ta.crossunder(close, vwma) and rsi < 65 and kijun > tenkan and prevSignal != "short"

// === STRATEJİ 3: RSI Divergence + Ichimoku Reversal === //
if strategy_type == "DivergenceReversal"
    longSignal := rsiBullishDiv and tenkanAboveKijun and vwma > close and prevSignal != "long"
    shortSignal := rsiBearishDiv and kijun > tenkan and vwma < close and prevSignal != "short"

// === STRATEJİ 4: Flat Zone + RSI Breakout === //
if strategy_type == "FlatBreakout"
    longSignal := tenkanFlat and rsi > 55 and close > vwma and prevSignal != "long"
    shortSignal := tenkanFlat and rsi < 45 and close < vwma and prevSignal != "short"

// === STRATEJI GİRİŞ/ÇIKIŞLARI === //
if longSignal
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL Long", from_entry="Long", stop=close - atr * atrMultSL, limit=close + atr * atrMultTP)
    label.new(bar_index, low, strategy_type + " → LONG", style=label.style_label_up, color=color.green, textcolor=color.white)
    prevSignal := "long"

if shortSignal
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL Short", from_entry="Short", stop=close + atr * atrMultSL, limit=close - atr * atrMultTP)
    label.new(bar_index, high, strategy_type + " → SHORT", style=label.style_label_down, color=color.red, textcolor=color.white)
    prevSignal := "short"