RSI-Trendumkehrstrategie

RSI ATR
Erstellungsdatum: 2024-04-28 13:33:19 zuletzt geändert: 2024-04-28 13:33:19
Kopie: 1 Klicks: 546
1
konzentrieren Sie sich auf
1617
Anhänger

RSI-Trendumkehrstrategie

Überblick

Die RSI-Trendwende-Strategie ist eine quantitative Handelsstrategie, die auf einem relativ schwachen Index (RSI) und einer durchschnittlichen realen Breite (ATR) basiert. Die Strategie passt sich an schnelle Marktbewegungen an, indem sie die Stop Loss (TP/SL) dynamisch anpasst, um eine Trendwende-Gelegenheit zu erfassen.

Strategieprinzip

Der Kern der RSI-Trend-Umkehr-Strategie besteht in der Konstruktion von dynamischen Stop-Loss-Bändern. Zuerst werden die höchsten und niedrigsten Preise seit der letzten Kreuzung mit Hilfe der benutzerdefinierten Funktionen “highest_custom” und “lowest_custom” gefunden, um die Basis für die Bandbreite zu bilden. Dann werden der RSI und der ATR für die Länge berechnet, die wie folgt berechnet werden:

  1. Unterstraße = Höchstpreis ×[1 - (ATR/Preis + 1/(RSI unterwegs × Multiplikator))
  2. Aufwärts = niedrigster Preis ×[1 + (ATR/Preis + 1/(RSI auf der Strecke × Multiplikator))

Der Multiplikator erweitert den Faktor für die Benutzerdefinierte Bandbreite. Wenn der Preis nach oben überschreitet, wird mehr getan, wenn der Preis nach unten überschreitet, wird nichts getan. Die Farbe der beiden Bänder ändert sich auch entsprechend der Position des Preises in Bezug auf die Bandbreite, um zu beobachten.

Strategische Vorteile

  1. Der Stop-Loss-Streifen ist sehr anpassungsfähig und kann sich automatisch an die Preisfluktuation anpassen, um so schnell wie möglich auf Veränderungen der Marktlage zu reagieren.
  2. Die Parameter sind verstellbar und die Sensitivität der Strategie kann flexibel gesteuert werden, indem Parameter wie length, multiplier und andere angepasst werden.
  3. Die Logik ist klar, die Code-Struktur ist vernünftig, und es ist leicht zu verstehen und zu verwenden.
  4. Es ist sehr vielseitig einsetzbar und kann als Strategie selbstständig verwendet werden. Es kann auch eine Stop-Loss-Funktion für andere Strategien hinzuzufügen.
  5. Die Berechnungs-Effizienz wird durch die Anpassung von Funktionen wie “highest_custom” erhöht, wodurch eine hohe Anzahl von Rechnungen vermieden wird, die durch die Verwendung von Serien-Typen verursacht werden.

Strategisches Risiko

  1. Eine falsche Parameterwahl kann zusätzliche Risiken mit sich bringen, z. B. kann eine zu kleine Länge zu häufigen Transaktionen führen, und ein zu großer Multiplier kann zu einem zu lockeren Stop-Loss führen.
  2. In bestimmten Marktsituationen kann die Wirkung schlechter sein, z. B. häufige Neuausgleichs- und Falschbrüche in schwankenden Märkten können zu mehr Verlustgeschäften führen.
  3. Die Strategie selbst hat keine Trendsurteilungsfunktion und muss mit anderen Signalen kombiniert werden.

Richtung der Strategieoptimierung

  1. Es kann in Erwägung gezogen werden, Trendmessgrößen, wie beispielsweise Moving Averages, zu verwenden, um nur an den Wendepunkten zu handeln, die in die Richtung des großen Trends laufen.
  2. Die Parameter können optimiert werden, um die optimale Kombination von Parametern wie length, multiplier usw. zu finden.
  3. In Kombination mit anderen technischen Indikatoren oder Marktstimmungsindikatoren kann die Genauigkeit der Platzierung verbessert werden.
  4. Die Risikothek für jeden Handel kann streng kontrolliert werden, indem Positionsmanagement hinzugefügt wird.

Zusammenfassen

Die RSI-Trendwende-Strategie nutzt die RSI und die ATR, um eine Anpassungsbandbreite zu erstellen, die die Stop-Loss-Punkte dynamisch anpasst und zeitnah auf Marktveränderungen reagiert. Die Strategie hat eine klare Logik und eine breite Palette von Anwendungsbereichen und kann als ein leistungsfähiges Werkzeug für quantitative Händler dienen. In der Praxis ist jedoch die Auswahl der Parameter und die Risikokontrolle zu beachten und es wird empfohlen, sie in Kombination mit anderen Indikatoren zu verwenden, um die Gesamtleistung zu verbessern.

Strategiequellcode
/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)


//INPUTS 
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)

//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
    x = src
    for i = 0 to length
        if src[i] > x
            x := src[i]
    x
lowest_custom(src, length) => 
    x = src
    for i = 0 to length
        if src[i] < x
            x := src[i]
    x
rsilev(src, length, mult, sltp) =>
    sl = (100 - sltp) / 100
    tp = (100 + sltp) / 100
    var bool crossup = na
    var bool crossdown = na
    var float dir = na
    dir_change = ta.change(dir)
    var float BearGuy = 0
    BullGuy = ta.barssince(crossup or crossdown)
    if na(BullGuy)
        BearGuy += 1
    else
        BearGuy := BullGuy
    var float upper = na
    var float lower = na
    rsilower = ta.rsi(src, length)
    rsiupper = math.abs(ta.rsi(src, length) - 100)
    atr = ta.atr(length) / src
    lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
    upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
    var float thresh = na
    if na(thresh)
        thresh := lower
    if na(dir)
        dir := 1
    if crossdown
        dir := -1
    if crossup
        dir := 1
    if dir == 1
        thresh := lower
    if dir == -1
        thresh := upper
    crossup := ta.crossover(src, thresh)
    crossdown := ta.crossunder(src, thresh)
    thresh

rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)

//PLOTTING
var color col = color.lime
if hclose > rsiclose
    col := color.lime
if hclose < rsiclose
    col := color.red
plot(rsiclose, linewidth = 2, color = col)

//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)

if buy[lookback]
    strategy.entry("long", strategy.long)
if sell[lookback]
    strategy.entry("Short", strategy.short)