Momentum ADX und RSI kombiniert mit anpassbarer Trailing-Stop-Strategie


Erstellungsdatum: 2023-10-09 15:36:07 zuletzt geändert: 2023-10-09 15:36:07
Kopie: 1 Klicks: 711
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie kombiniert Dynamik-Indikatoren mit relativ starken Indikatoren (RSI), unterstützt durch ein nachvollziehbares Stop-Loss-Mechanismus, um die Richtung des Trends zu erfassen und gleichzeitig das Risiko zu kontrollieren. Wenn der Preis eine starke Dynamik aufweist, kauft man mehr; wenn der Preis eine schwache Dynamik aufweist, verkauft man leer. Die Strategie setzt gleichzeitig Stop-Loss-Bedingungen und nutzt die nachvollziehbaren Stop-Loss-Bedingungen, um die höchsten Gewinnniveaus zu verfolgen, um die Gewinne zu sperren und die Verluste zu reduzieren.

Strategieprinzip

Dynamiklinie und RSI-Indikator für den Einstieg

  • Der Dynamikindikator ADX wird verwendet, um die Richtung der Preisentwicklung zu bestimmen

    • ADX größer als 20 zeigt eine Tendenz

    • Bei +DI-Linien ist das -DI-Linien-Signal für die Anzeige der Anzeige.

    • Wenn die -DI-Linie unter die +DI-Linie fällt, ist dies ein Abwärtstrendsignal

  • Der RSI beurteilt Überkauf und Überverkauf

    • RSI über 70 als Überkaufzone, ein Signal nach unten

    • RSI unter 30 als Überverkaufszone, ein Signal für einen Anstieg

Wenn der ADX einen Trend beurteilt und der RSI ein Bestätigungssignal gibt, wird ein entsprechender Positiv-Operation durchgeführt.

Nachfolgende Stop-Loss-Mechanismen

Die Strategie verwendet eine dynamisch anpassbare Nachschub-Stopp-Verlust-Mechanik, die zwei Parameter umfasst:

  • Aktivierungsprozess: Aktivierung nach dem Stop-Loss, wenn der Preis nach dem Börsengang den festgelegten Prozentsatz erreicht

  • Tracking-Ratio: die prozentuale Distanz zwischen den Tracking-Stopps und den jüngsten Höchstgewinnen

Wenn der Preis die Aktivierungsbedingungen erreicht hat, folgt die Stop-Loss-Linie dem höchsten Gewinnniveau. Wenn der Preis zurückgeht, verschiebt sich die Stop-Loss-Linie darunter. Wenn der Rückgang die gesetzte Tracking-Rate übersteigt, wird die Stop-Loss-Linie ausgelöst und alle Positionen geschlossen.

Analyse der Stärken

  • Die Dynamik-Indikatoren zeigen die Richtung des Trends und verhindern, dass Unternehmen ihre Kosten überschreiten.

  • RSI-Indikatoren sorgen dafür, dass keine Umkehrschritte verpasst werden

  • Das System kann mit Stop-Loss-Systemen ausgerüstet werden, um Gewinne zu sichern und Verluste zu reduzieren.

  • Die Strategie ist klar, präzise und leicht verständlich

  • Breite Anwendbarkeit für verschiedene Märkte und Zeiträume

Risiken und Gegenmaßnahmen

  • ADX entscheidet, dass ein falscher Durchbruch ein falsches Signal erzeugt

    • ADX-Parameter angepasst, um einen echten Trendbruch zu gewährleisten
  • RSI erzeugt mehrere Falschsignale

    • Überkauf- und Überverkaufsparameter werden angepasst, um häufige Transaktionen zu verhindern.
  • Die modulierbare Verlustparameter sind falsch eingestellt

    • Optimierung der Parameter, um die optimale Stop-Loss-Ebene zu finden
  • Die Luftwaffe ist in der Lage, die Luft zu überqueren.

    • Berücksichtigen Sie die Kombination mit einer Preisbeschränkung, um Verluste vorzubeugen

Optimierung

  • Testen von verschiedenen ADX- und RSI-Parameterkombinationen Optimierung der Aufnahme

  • Die Optimierung von verschiedenen Stop-Loss-Aktivierungspunkten und Tracking-Werten

  • Erwägen Sie Filter für andere Indikatoren, um die Signalqualität zu verbessern

  • Verschiedene Märkte werden getestet, um allgemeine Parameter einzustellen.

Zusammenfassen

Die Strategie integriert Dynamikanalyse, RSI-Indikatoren und Stop-Loss-Mechanismen, um die Richtung des Trends zu bestimmen, Umkehrpunkte zu identifizieren und das Handelsrisiko zu kontrollieren. Die Strategie ist klar konzipiert, einfach umzusetzen und ist für den Trendhandel in Märkten wie Aktien, Devisen und Digitalwährungen geeignet. Die Strategie kann durch Parameteroptimierung und Indikatorfilterung weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trailing Stop with RSI", overlay=true)

length = input.int(12, "Momentum Length")
price = close
momentum(seria, length) =>
    mom = seria - seria[length]
    mom
mom0 = momentum(price, length)
mom1 = momentum(mom0, 1)

rsiLength = input.int(14, "RSI Length")
rsiOverbought = input(70, "RSI Overbought Level")
rsiOversold = input(30, "RSI Oversold Level")

rsiValue = ta.rsi(close, rsiLength)

tsact = input.float(0.0, "Trailing Stop Activation (%)", group="strategy", tooltip="Activates the Trailing Stop once this PnL is reached.") / 100
tsact := tsact ? tsact : na
ts = input.float(0.0, "Position Trailing Stop (%)", group="strategy", tooltip="Trails your position with a stop loss at this distance from the highest PnL") / 100
ts := ts ? ts : na

in_long = strategy.position_size > 0
in_short = strategy.position_size < 0

var ts_ = array.new_float()
ts_size = array.size(ts_)
ts_get = ts_size > 0 ? array.get(ts_, ts_size - 1) : 0

if in_long
    if tsact and high > strategy.position_avg_price + strategy.position_avg_price * tsact
        if ts_size > 0 and ts_get < high
            array.push(ts_, high)
        if ts_size < 1
            array.push(ts_, high)
    if not tsact
        if ts_size > 0 and ts_get < high
            array.push(ts_, high)
        if ts_size < 1
            array.push(ts_, high)
if in_short
    if tsact and low < strategy.position_avg_price - strategy.position_avg_price * tsact
        if ts_size > 0 and ts_get > low
            array.push(ts_, low)
        if ts_size < 1
            array.push(ts_, low)
    if not tsact
        if ts_size > 0 and ts_get > low
            array.push(ts_, low)
        if ts_size < 1
            array.push(ts_, low)

trail = in_long and ts_size > 0 ? low < ts_get - ts_get * ts : in_short and ts_size > 0 ? high > ts_get + ts_get * ts : na

if (mom0 > 0 and mom1 > 0)
    strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
    strategy.cancel("MomLE")
if (mom0 < 0 and mom1 < 0)
    strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
    strategy.cancel("MomSE")

tsClose = in_long ? ts_get - ts_get * ts : in_short ? ts_get + ts_get * ts : na
if trail
    strategy.close_all()
if not strategy.opentrades
    array.clear(ts_)

rsiOverboughtCondition = rsiValue >= rsiOverbought
rsiOversoldCondition = rsiValue <= rsiOversold

if rsiOverboughtCondition
    strategy.close("SHORT", "SX")
    strategy.entry("LONG", strategy.long)

if rsiOversoldCondition
    strategy.close("LONG", "LX")
    strategy.entry("SHORT", strategy.short)

plotchar(ts_get, "GET", "")
plot(strategy.position_avg_price > 0 ? strategy.position_avg_price : na, "Average", color.rgb(251, 139, 64), 2, plot.style_cross)
plot(tsClose > 0 ? tsClose : na, "Trailing", color.rgb(251, 64, 64), 2, plot.style_cross)
plot(strategy.position_avg_price - strategy.position_avg_price * tsact > 0 ? strategy.position_avg_price - strategy.position_avg_price * tsact : na, "TS Activation", color.fuchsia, 2, plot.style_cross)