Momentum-Trend-Synchron-Strategie


Erstellungsdatum: 2024-01-16 14:10:25 zuletzt geändert: 2024-01-16 14:10:25
Kopie: 0 Klicks: 818
1
konzentrieren Sie sich auf
1617
Anhänger

Momentum-Trend-Synchron-Strategie

Überblick

Die Dynamik-Trend-Synchronisation-Strategie ermöglicht eine effektive Kombination aus Dynamik-Analyse und Trendbeurteilung durch die Integration der Vorteile des Relative Dynamics Index (RMI) und der Supertrend-Indikator. Die Strategie konzentriert sich gleichzeitig auf die Entwicklung von Preisveränderungen und die Dynamik des Marktes und beurteilt die Marktentwicklung aus einer umfassenderen Perspektive.

Strategieprinzip

Relative Masse-Index (RMI)

RMI ist eine verbesserte Version des Relative Strength Index (RSI). Es enthält mehr Merkmale wie die Richtung und Größe der Preisänderungen, um die Marktdynamik genauer zu beurteilen.

RMI-Berechnung

Der RMI wird berechnet, indem der durchschnittliche Anstieg und der durchschnittliche Rückgang innerhalb eines bestimmten Zeitraums berechnet wird. Anders als der RSI verwendet der RMI die Veränderung des heutigen Schlusskurses im Vergleich zum Schlusskurs des Vortages, anstatt einfache positive Zuwächse und negative Zuwächse. Der durchschnittliche Anstieg wird dann durch den durchschnittlichen Rückgang geteilt und dann mit einer Standardisierung behandelt, so dass der Wert im Bereich 0-100 liegt.

Bewegungsentscheidung

Diese Strategie verwendet die Mittelwerte des RMI und der MFI, um die vorgegebenen positiven und negativen Dynamik-Trenchwerte zu vergleichen, um das aktuelle Marktdynamikniveau zu beurteilen und so zu entscheiden, ob eine Position eröffnet oder gelöscht wird.

Supertrend-Indikatoren

Der Supertrend-Indikator basiert auf höheren Zeitzyklen und bietet eine Beurteilung der großen Trends. Er passt die ATR-Dynamikparameter an die tatsächliche Wellenlänge an, um die Trendwendepunkte effektiv zu erkennen.
Die Strategie umfasst auch die VWMA, die die Fähigkeit zur Identifizierung von wichtigen Trendwechseln weiter verbessert.

Auswahl der Handelsrichtung

Diese Strategie bietet die Möglichkeit, zu handeln in Plus-, Defizit- oder Zwei-Wege-Handel. Dies ermöglicht den Händlern, sich flexibel an ihre Marktansichten und Risikopräferenzen anzupassen.

Strategische Stärkenanalyse

Kombination von Dynamik und Trendbeurteilung

Im Vergleich zu Strategien, die nur Dynamik- oder Trendindikatoren verwenden, ermöglicht diese Strategie eine genauere Beurteilung der Marktentwicklung durch die Integration der Vorteile von RMI und Supertrendindikatoren.

Mehrzeit-Analyse

Die Verwendung von RMI- und Supertrend-Indikatoren für verschiedene Perioden ermöglicht eine bessere Vorstellung von kurz- und langfristigen Trends.

Echtzeit Stop Loss Strategie

Die Echtzeit-Stopp-Mechanismen basieren auf Supertrends und ermöglichen eine effektive Kontrolle von Einzelschäden.

Flexibel in der Handelsrichtung

Die Option auf mehr-, kurz- oder zweiseitigen Handel ermöglicht die Anpassung der Strategie an unterschiedliche Marktbedingungen.

Risikoanalyse

Parameter sind schwierig zu optimieren

Die Optimierung von Parametern wie RMI und Supertrends ist kompliziert und kann die Effektivität der Strategie beeinträchtigen.

Ein zu enger Stop-Loss kann zu einem zu hohen Stop-Loss führen

Zu hohe Sensibilität für kurzfristige Marktbewegungen führt zu zu häufigen Stop-Loss-Problemen.

Lösungen: Entspannung der Schadensspanne oder andere Schwingungsschutzmethoden.

Richtung der Strategieoptimierung

Optimierung der Anpassung an mehrere Arten

Erweiterung des Anwendbarkeitsbereichs, Identifizierung der verschiedenen Varianten und Optimierung der Parameter. Ermöglicht die Vervielfältigung der Strategie in mehr Märkten.

Dynamische Stop-Loss-Optimierung

Die Dynamische Stop-Methode wurde hinzugefügt, um die Stop-Linie besser auf die aktuelle Bandbreite zu verfolgen und die übermäßige Stop-Verletzung durch kleine Erschütterungen zu reduzieren.

Filterbedingungen hinzugefügt

Es ist wichtig, mehr Indikatoren als Filterbedingungen zu verwenden, um zu vermeiden, dass Lager ohne eindeutige Signale errichtet werden.

Zusammenfassen

Die Strategie ermöglicht durch die geschickte Kombination von RMI und Supertrend-Indikatoren eine präzise Beurteilung des Marktzustands. Sie ist auch sehr gut in der Risikokontrolle. Durch tiefgehende Optimierung wird ihre Leistung in mehreren Sorten und über mehrere Perioden zuverlässig verbessert.

Strategiequellcode
/*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)