Die RMI Trend Sync Strategie kombiniert effektiv die Stärken des Relative Momentum Index (RMI) und des Super Trend Indikators, um die Integration von Momentumanalyse und Trendbeurteilung zu realisieren.
RMI ist eine erweiterte Version des Relative Strength Index (RSI). Es enthält mehr Merkmale von Preisänderungen wie Richtungs- und Größenordnung, um die Marktdynamik genauer zu messen.
Die RMI-Berechnungsmethode besteht darin, zunächst den durchschnittlichen Gewinn und den durchschnittlichen Verlust über einen bestimmten Zeitraum zu berechnen. Im Gegensatz zum RSI verwendet RMI die Veränderung zwischen dem aktuellen Schlusskurs und dem vorherigen Schlusskurs, anstatt einfaches positives und negatives Wachstum. Dann dividiert der durchschnittliche Gewinn durch den durchschnittlichen Verlust und normalisiert den Wert, um innerhalb einer Skala von 0-100 zu passen.
Diese Strategie verwendet den Mittelwert des RMI und des MFI, um ihn mit vorgegebenen Schwellenwerten für positive und negative Impulse zu vergleichen, um das aktuelle Marktdynamikniveau für Ein- und Ausstiegsentscheidungen zu bestimmen.
Der Super Trend-Indikator wird auf der Grundlage eines höheren Zeitrahmens berechnet, der Beurteilungen zu den wichtigsten Trends liefern kann.
Diese Strategie umfasst auch den volumengewichteten gleitenden Durchschnitt (VWMA), um seine Fähigkeit zur Erkennung wichtiger Trendveränderungen weiter zu verbessern.
Diese Strategie erlaubt es, zwischen langen, kurzen oder zwei-Wege-Handel zu wählen.
Im Vergleich zu Strategien, die sich ausschließlich auf Dynamik- oder Trendindikatoren stützen, ermöglicht diese Strategie eine genauere Markttendenzidentifizierung durch die Integration der Stärken von RMI und Super Trend.
Die Anwendung von RMI und Super Trend in verschiedenen Zeitrahmen führt zu einem angemessenen Verständnis sowohl der kurzfristigen als auch der langfristigen Trends.
Der auf dem Super Trend basierende Echtzeit-Stop-Loss-Mechanismus kann den Verlust pro Handel effektiv begrenzen.
Die Wahl zwischen langem, kurzem oder Zwei-Wege-Handel ermöglicht es dieser Strategie, sich an verschiedene Marktumgebungen anzupassen.
Die Optimierung für Parameter wie RMI und Super Trend ist ziemlich komplex.
Eine übermäßige Empfindlichkeit gegenüber kleinen Schwankungen kann zu übermäßigen Stop-Loss-Triggern führen.
Lösung: Entsprechende Lockerung des Stop-Loss-Bereichs oder andere volatilitätsbasierte Stop-Loss-Methoden.
Erweiterung der anwendbaren Vermögenswerte und Ermittlung von Parameteroptimierungsrichtlinien für verschiedene Vermögenswerte, um eine breitere Replikation auf mehr Märkten zu ermöglichen.
Einbeziehung dynamischer Stop-Loss-Mechanismen zur besseren Nachverfolgung der aktuellen Schwingwellen und zur Verringerung übermäßiger Stop-Loss durch geringfügige Retracements.
Hinzufügen von Beurteilungen aus mehreren Indikatoren als Filterbedingungen, um zu vermeiden, dass ohne klare Signale Positionen betreten werden.
Durch die geniale Kombination von RMI und Super Trend realisiert diese Strategie genaue Marktverhältnisse. Sie zeichnet sich auch bei der Risikokontrolle aus. Mit eingehender Optimierung wird angenommen, dass ihre Leistung über mehr Vermögenswerte und Zeitrahmen hinweg zunehmend bemerkenswert wird.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // @ presentTrading //@version=5 strategy("RMI Trend Sync - Strategy [presentTrading]", shorttitle = "RMI Sync [presentTrading]", overlay=true ) // ---> Inputs -------------- // Add Button for Trading Direction tradeDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"]) // Relative Momentum Index (RMI) Settings Length = input.int(21, "RMI Length", group = "RMI Settings") pmom = input.int(70, "Positive Momentum Threshold", group = "RMI Settings") nmom = input.int(30, "Negative Momentum Threshold", group = "RMI Settings") bandLength = input.int(30, "Band Length", group = "Momentum Settings") rwmaLength = input.int(20, "RWMA Length", group = "Momentum Settings") // Super Trend Settings len = input.int(10, "Super Trend Length", minval=1, group="Super Trend Settings") higherTf1 = input.timeframe('480', "Higher Time Frame", group="Super Trend Settings") factor = input.float(3.5, "Super Trend Factor", step=.1, group="Super Trend Settings") maSrc = input.string("WMA", "MA Source", options=["SMA", "EMA", "WMA", "RMA", "VWMA"], group="Super Trend Settings") atr = request.security(syminfo.tickerid, higherTf1, ta.atr(len)) TfClose1 = request.security(syminfo.tickerid, higherTf1, close) // Visual Settings filleshow = input.bool(true, "Display Range MA", group = "Visual Settings") bull = input.color(#00bcd4, "Bullish Color", group = "Visual Settings") bear = input.color(#ff5252, "Bearish Color", group = "Visual Settings") // Calculation of Bar Range barRange = high - low // RMI and MFI Calculations upChange = ta.rma(math.max(ta.change(close), 0), Length) downChange = ta.rma(-math.min(ta.change(close), 0), Length) rsi = downChange == 0 ? 100 : upChange == 0 ? 0 : 100 - (100 / (1 + upChange / downChange)) mf = ta.mfi(hlc3, Length) rsiMfi = math.avg(rsi, mf) // Momentum Conditions positiveMomentum = rsiMfi[1] < pmom and rsiMfi > pmom and rsiMfi > nmom and ta.change(ta.ema(close,5)) > 0 negativeMomentum = rsiMfi < nmom and ta.change(ta.ema(close,5)) < 0 // Momentum Status bool positive = positiveMomentum ? true : negativeMomentum ? false : na bool negative = negativeMomentum ? true : positiveMomentum ? false : na // Band Calculation calculateBand(len) => math.min(ta.atr(len) * 0.3, close * (0.3/100)) * 4 band = calculateBand(bandLength) // Range Weighted Moving Average (RWMA) Calculation calculateRwma(range_, period) => weight = range_ / math.sum(range_, period) sumWeightedClose = math.sum(close * weight, period) totalWeight = math.sum(weight, period) sumWeightedClose / totalWeight rwma = calculateRwma(barRange, rwmaLength) colour = positive ? bull : negative ? bear : na rwmaAdjusted = positive ? rwma - band : negative ? rwma + band : na max = rwma + band min = rwma - band longCondition = positive and not positive[1] shortCondition = negative and not negative[1] longExitCondition = shortCondition shortExitCondition = longCondition // Dynamic Trailing Stop Loss vwma1 = switch maSrc "SMA" => ta.sma(TfClose1*volume, len) / ta.sma(volume, len) "EMA" => ta.ema(TfClose1*volume, len) / ta.ema(volume, len) "WMA" => ta.wma(TfClose1*volume, len) / ta.wma(volume, len) upperBand = vwma1 + factor * atr lowerBand = vwma1 - factor * atr prevLowerBand = nz(lowerBand[1]) prevUpperBand = nz(upperBand[1]) float superTrend = na int direction = na superTrend := direction == -1 ? lowerBand : upperBand longTrailingStop = superTrend - atr * factor shortTrailingStop = superTrend + atr * factor // Strategy Order Execution if (tradeDirection == "Long" or tradeDirection == "Both") strategy.entry("Long", strategy.long, when = longCondition) strategy.exit("Exit Long", "Long", when=longExitCondition, stop = longTrailingStop) if (tradeDirection == "Short" or tradeDirection == "Both") strategy.entry("Short", strategy.short, when =shortCondition) strategy.exit("Exit Short", "Short", when=shortExitCondition, stop = shortTrailingStop)