Die Ressourcen sind geladen. Beförderung...

Die Risikopositionen werden von den Risikokapitalgebern und den Kreditinstituten und den Kreditinstituten der Union in Bezug auf die Risikopositionen und die Risikopositionen von Kreditinstituten und Kreditinstituten in Bezug auf die Risikopositionen und die Risikopositionen von Kreditinstituten und Kreditinstituten in Bezug auf die Risikopositionen und die Risikopositionen von Kreditinstituten und Kreditinstituten in Bezug auf die Risikopositionen und die Risikopositionen von Kreditinstituten in Bezug auf die Risikopositionen und die Risikopositionen von Kreditinstituten in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen in Bezug auf die Risikopositionen.

Schriftsteller:ChaoZhang, Datum: 2024-06-21 14:16:31
Tags:RSI, PIVOT

img

Übersicht

Diese Strategie ist ein mehrstufiges Mittelumkehrhandelssystem, das auf dem RSI-Indikator und der Preisvolatilität basiert. Es verwendet extreme RSI-Werte und ungewöhnlich große Preisschwankungen als Einstiegssignale, während es Pyramiden-Stil-Positionsskalierungen und dynamische Take-Profit-Niveaus verwendet, um Risiken zu managen und Renditen zu optimieren. Die Kernidee dieser Strategie besteht darin, während extremer Volatilität und Gewinn auf den Markt zu kommen, wenn die Preise wieder auf normales Niveau zurückkehren.

Strategieprinzipien

  1. Eintrittsbedingungen:

    • Verwendet den 20-Perioden-RSI (RSI20) als Hauptindikator
    • Die Risikopositionen werden von den Risikopositionen gemäß Anhang I der Richtlinie 2009/138/EG des Europäischen Parlaments und des Rates [2] berechnet.
    • Auslöst das Eingangssignal, wenn der RSI einen Schwellenwert erreicht und die aktuelle Kerzenkörpergröße den entsprechenden Volatilitätsschwellenwert überschreitet
    • Zusätzliche Bedingung: Der Preis muss die jüngste hohe/niedrige Unterstützungsstufe um einen bestimmten Prozentsatz durchbrechen
  2. Mechanismus zur Skalierung der Position:

    • Ermöglicht bis zu 5 Einträge (Ersteinträge + 4 zusätzliche Einträge)
    • Jeder zusätzliche Eintrag erfordert die Einhaltung strengerer RSI- und Volatilitätsbedingungen
  3. Ausfahrtmechanismus:

    • Setzt 5 verschiedene Ebenen von Take-Profit-Punkten
    • Take-Profit-Punkte werden dynamisch auf Basis von Unterstützungs-/Widerstandsniveaus beim Einstieg berechnet
    • Mit zunehmender Anzahl offener Positionen sinken die Gewinnziele allmählich
  4. Risikokontrolle:

    • Verwendet ein Prozentsatzrisikomodell, bei dem für jeden Handel ein festes Risiko von 20% des Kontowerts besteht
    • Festlegt die maximal zulässige gleichzeitige offene Position auf 5, wodurch die Gesamtrisikobelastung begrenzt wird

Strategische Vorteile

  1. Multi-Level-Entry: Durch die Festlegung mehrerer RSI- und Volatilitätsschwellenwerte kann die Strategie unterschiedliche Grade von Marktextremen erfassen und die Handelsmöglichkeiten erhöhen.

  2. Dynamische Gewinnspanne: Die auf Basis von Unterstützungs-/Widerstandsniveaus berechneten Gewinnspanne können sich an die Marktstruktur anpassen und die Gewinne schützen, ohne zu früh zu verlassen.

  3. Pyramidenartige Skalierung von Positionen: Die Erhöhung der Positionen im Zuge der Entwicklung der Trends kann das Gewinnpotenzial erheblich erhöhen.

  4. Risikomanagement: Festes Prozentsatzrisiko und maximale Positionslimits kontrollieren das Risiko für jeden Handel und insgesamt wirksam.

  5. Flexibilität: Dank zahlreicher anpassbarer Parameter kann die Strategie sich an unterschiedliche Marktumgebungen und Handelsinstrumente anpassen.

  6. Durchschnittliche Umkehrung + Trendverfolgung: kombiniert die Vorteile der durchschnittlichen Umkehrung und des Trendverfolgens und erfasst kurzfristige Umkehrungen, ohne wichtige Trends zu verpassen.

Strategische Risiken

  1. Übertrading: Kann häufige Handelssignale in stark volatilen Märkten auslösen, was zu übermäßigen Gebühren führt.

  2. Falsche Ausbrüche: Auf den Märkten kann es zu kurzer extremer Volatilität kommen, gefolgt von schnellen Umkehrungen, die falsche Signale verursachen.

  3. Folgende Verluste: Kontinuierliche einseitige Marktbewegungen können nach mehrfacher Erhöhung der Positionen zu erheblichen Verlusten führen.

  4. Parameterempfindlichkeit: Die Strategieleistung kann sehr empfindlich auf die Parameter-Einstellungen ausgerichtet sein, was zu einer Überanpassung führen kann.

  5. Schwankungswirkung: In Zeiten starker Volatilität kann es zu starken Schwankungen kommen, die sich auf die Strategieergebnisse auswirken.

  6. Abhängigkeit vom Marktumfeld: Die Strategie kann in bestimmten Marktumgebungen, wie niedrigen Volatilitäten oder starken Trendmärkten, unterdurchschnittlich abschneiden.

Strategieoptimierungsrichtlinien

  1. Dynamische Anpassung der Parameter: Einführung anpassungsfähiger Mechanismen zur dynamischen Anpassung der RSI- und Volatilitätsschwellenwerte anhand der Marktbedingungen.

  2. Mehrzeitanalyse: Einbeziehung längerfristiger Marktentwicklungsbeurteilungen zur Verbesserung der Eintrittsqualität.

  3. Optimierung des Stop-Loss: Hinzufügen von Trailing-Stop-Loss oder ATR-basierten dynamischen Stop-Loss zur weiteren Risikokontrolle.

  4. Filterung des Marktzustands: Trendstärke, Volatilitätszyklus und andere Filterungsbedingungen sind zu berücksichtigen, um den Handel in ungeeigneten Marktumgebungen zu vermeiden.

  5. Optimierung des Kapitalmanagements: Implementieren Sie ein detaillierteres Positionsmanagement, z. B. Anpassung der Handelsgröße anhand verschiedener Signalstufen.

  6. Integration des maschinellen Lernens: Verwenden von Algorithmen des maschinellen Lernens zur Optimierung der Parameterwahl und der Signalgenerierungsprozesse.

  7. Korrelationsanalyse: Korrelationsanalyse mit anderen Vermögenswerten einbeziehen, um die Stabilität und Vielfalt der Strategie zu verbessern.

Schlussfolgerung

Diese mehrstufige RSI-Mittel-Reversion-Handelsstrategie ist ein sorgfältig konzipiertes quantitatives Handelssystem, das klug technische Analyse, dynamisches Risikomanagement und Pyramiden-Stil-Positionsscaling-Techniken kombiniert. Durch die Erfassung extremer Marktvolatilität und das Gewinnen, wenn die Preise umkehren, zeigt die Strategie ein starkes Gewinnpotenzial. Allerdings steht sie auch vor Herausforderungen wie Überhandel und Abhängigkeit vom Marktumfeld. Die zukünftige Optimierung sollte sich auf die Verbesserung der Anpassungsfähigkeit und Risikokontrollfähigkeit der Strategie konzentrieren, um verschiedenen Marktumgebungen gerecht zu werden. Insgesamt ist dies ein Strategierahmen mit einem soliden Fundament, das sich durch weitere Optimierung und Backtesting zu einem robusten Handelssystem entwickeln kann.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Retorno_Pivots_5min_Novo_v3.3')

// Input variables
bars_left1 = input(1, title = "Entry - Pivot Left Bars")
bars_right1 = input(1, title = "Entry - Pivot Right Bars")
rsi20_longentry0 = input(35, title = "Entry 1 - RSI20 Long")
rsi20_shortentry0 = input(65, title = "Entry 1 - RSI20 Short")
bar_size_entry0 = input.float(1, title="Entry 1 - Bar Size")
rsi20_longentry1 = input(30, title = "Entry 2 - RSI20 Long")
rsi20_shortentry1 = input(70, title = "Entry 2 - RSI20 Short")
bar_size_entry1 = input.float(0.8, title="Entry 2 - Bar Size")
rsi20_longentry2 = input(25, title = "Entry 3 - RSI20 Long")
rsi20_shortentry2 = input(75, title = "Entry 3 - RSI20 Short")
bar_size_entry2 = input.float(0.7, title="Entry 3 - Bar Size")
rsi20_longentry3 = input(20, title = "Entry 4 - RSI20 Long")
rsi20_shortentry3 = input(80, title = "Entry 4 - RSI20 Short")
bar_size_entry3 = input.float(0.5, title="Entry 4 - Bar Size")
limit_perc1 = input.float(0.60, title="Profit Range 1")
limit_perc2 = input.float(0.40, title="Profit Range 2")
limit_perc3 = input.float(0.20, title="Profit Range 3")
limit_perc4 = input.float(0.00, title="Profit Range 4")
limit_perc5 = input.float(0.00, title="Profit Range 5")
minimum_pivot_distance = input.float(0, title="Minimum Pivot Distance %")
barsize_1h_input = input(288, title="Highest Bar Lookback")
rsi20 = ta.rsi(close, 20)
rsi200 = ta.rsi(close, 200)
Pivot_High_Last1 = ta.valuewhen(ta.pivothigh(high, bars_left1, bars_right1), ta.pivothigh(high, bars_left1, bars_right1), 0)
Pivot_Low_Last1 = ta.valuewhen(ta.pivotlow(low, bars_left1, bars_right1), ta.pivotlow(low, bars_left1, bars_right1), 0)

barsize = math.abs(close - open)
barsize_1h = ta.highest(barsize, barsize_1h_input)

Bar0Long = rsi20 < rsi20_longentry0 and barsize >= (barsize_1h * bar_size_entry0)
Bar1Long = rsi20 < rsi20_longentry1 and barsize >= (barsize_1h * bar_size_entry1)
Bar2Long = rsi20 < rsi20_longentry2 and barsize >= (barsize_1h * bar_size_entry2)
Bar3Long = rsi20 < rsi20_longentry3 and barsize >= (barsize_1h * bar_size_entry3)

// Long Entries
Long_Entry1 = strategy.opentrades == 0 and rsi20 < rsi20[1] and ((rsi20 < rsi20_longentry0 and barsize >= (barsize_1h * bar_size_entry0)) or (rsi20 < rsi20_longentry1 and barsize >= (barsize_1h * bar_size_entry1)) or (rsi20 < rsi20_longentry2 and barsize >= (barsize_1h * bar_size_entry2)) or (rsi20 < rsi20_longentry3 and barsize >= (barsize_1h * bar_size_entry3))) and close < (Pivot_Low_Last1 * (1 - (minimum_pivot_distance / 100)))
Long_Entry2 = strategy.opentrades == 1 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry3 = strategy.opentrades == 2 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry4 = strategy.opentrades == 3 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry5 = strategy.opentrades == 4 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
if Long_Entry1 or Long_Entry2 or Long_Entry3 or Long_Entry4 or Long_Entry5
    strategy.entry("Long", strategy.long, comment = "ENTER-LONG_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")
// Longs Exits
Long_Exit1 = strategy.opentrades == 1 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc1))
Long_Exit2 = strategy.opentrades == 2 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc2))
Long_Exit3 = strategy.opentrades == 3 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc3))
Long_Exit4 = strategy.opentrades == 4 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc4))
Long_Exit5 = strategy.opentrades == 5 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc5))
if Long_Exit1 or Long_Exit2 or Long_Exit3 or Long_Exit4 or Long_Exit5
    strategy.close("Long", comment = "EXIT-LONG_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")

Bar0Short = rsi20 > rsi20_shortentry0 and barsize >= (barsize_1h * bar_size_entry0)
Bar1Short = rsi20 > rsi20_shortentry1 and barsize >= (barsize_1h * bar_size_entry1)
Bar2Short = rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2)
Bar3Short = rsi20 > rsi20_shortentry3 and barsize >= (barsize_1h * bar_size_entry3)

// Short Entries
Short_Entry1 = strategy.opentrades == 0 and rsi20 > rsi20[1] and ((rsi20 > rsi20_shortentry0 and barsize >= (barsize_1h * bar_size_entry0)) or (rsi20 > rsi20_shortentry1 and barsize >= (barsize_1h * bar_size_entry1)) or (rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2)) or (rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2))) and close > (Pivot_High_Last1 * (1 + (minimum_pivot_distance / 100)))
Short_Entry2 = strategy.opentrades == 1 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry3 = strategy.opentrades == 2 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry4 = strategy.opentrades == 3 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry5 = strategy.opentrades == 4 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
if Short_Entry1 or Short_Entry2 or Short_Entry3 or Short_Entry4 or Short_Entry5
    strategy.entry("Short", strategy.short, comment = "ENTER-SHORT_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")
// Short Exits
Short_Exit1 = strategy.opentrades == 1 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc1))
Short_Exit2 = strategy.opentrades == 2 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc2))
Short_Exit3 = strategy.opentrades == 3 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc3))
Short_Exit4 = strategy.opentrades == 4 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc4))
Short_Exit5 = strategy.opentrades == 5 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc5))
if Short_Exit1 or Short_Exit2 or Short_Exit3 or Short_Exit4 or Short_Exit5
    strategy.close("Short", comment = "EXIT-SHORT_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")

// Plots
plot(rsi20, color=color.new(#fbff00, 0), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc1))), color=color.new(#00ff2a, 0), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc2))), color=color.new(#00ff2a, 50), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc3))), color=color.new(#00ff2a, 80), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc4))), color=color.new(#00ff2a, 100), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc1)), color=color.new(#ff0000, 0), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc2)), color=color.new(#ff0000, 50), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc3)), color=color.new(#ff0000, 80), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc4)), color=color.new(#ff0000, 100), linewidth=2)
plot(strategy.position_avg_price, color=color.new(#ffc400, 0), linewidth=2)
plot(strategy.opentrades * (strategy.position_size / math.abs(strategy.position_size)), color=color.new(#ff00bb, 0), linewidth=2)
plot(((barsize / barsize_1h) * 100), color=color.new(#0000ff, 0), linewidth=2)

Verwandt

Mehr