RMI-Trend-Sync-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-16 14:10:25
Tags:

img

Übersicht

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.

Strategieprinzipien

Relativer Impulsindex (RMI)

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.

RMI-Berechnungsmethode

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.

Momentum-Urteil

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.

Super-Trend-Indikator

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.

Auswahl der Handelsrichtung

Diese Strategie erlaubt es, zwischen langen, kurzen oder zwei-Wege-Handel zu wählen.

Analyse der Vorteile

Kombination von Dynamik- und Trendanalyse

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.

Mehrzeitanalyse

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.

Echtzeit-Stop Loss

Der auf dem Super Trend basierende Echtzeit-Stop-Loss-Mechanismus kann den Verlust pro Handel effektiv begrenzen.

Flexible Handelsrichtung

Die Wahl zwischen langem, kurzem oder Zwei-Wege-Handel ermöglicht es dieser Strategie, sich an verschiedene Marktumgebungen anzupassen.

Risikoanalyse

Schwierige Optimierung von Parametern

Die Optimierung für Parameter wie RMI und Super Trend ist ziemlich komplex.

Stopp Verlust zu eng

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.

Optimierungsrichtlinien

Anpassungsfähigkeit zwischen verschiedenen Vermögenswerten

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.

Dynamischer Stop-Loss

Einbeziehung dynamischer Stop-Loss-Mechanismen zur besseren Nachverfolgung der aktuellen Schwingwellen und zur Verringerung übermäßiger Stop-Loss durch geringfügige Retracements.

Zusätzliche Filterbedingungen

Hinzufügen von Beurteilungen aus mehreren Indikatoren als Filterbedingungen, um zu vermeiden, dass ohne klare Signale Positionen betreten werden.

Schlussfolgerung

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)

Mehr