Algorithmus RSI-Range-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-17 17:14:09
Tags:

img

Übersicht

Diese Strategie überwacht den Ausbruch des RSI-Indikators in verschiedenen Bandbreiten, um niedrig zu kaufen und hoch zu verkaufen.

Strategie Logik

  1. RSI-Periode auf 14 festlegen

  2. RSI-Kaufsignalbereiche festlegen:

    • Der RSI-Bereich 1
    • Der RSI-Bereich 2
  3. RSI-Verkaufssignalbereiche festlegen:

    • Der RSI-Bereich 1
    • Der RSI-Bereich
  4. Wenn der RSI den Kaufbereich erreicht, gehen Sie lang:

    • Wenn der RSI in den Bereich 1 (unter 27) eintritt, geht man Long 1 Lot
    • Wenn der RSI in den Bereich 2 (unter 18) eintritt, gehen Sie zusätzlich 1 Lot lang.
  5. Wenn der RSI in den Verkaufsbereich kommt, gehen Sie kurz:

    • Wenn der RSI in den Bereich 1 (über 68) eintritt, wird 1 Lot kurz gehalten.
    • Wenn der RSI in den Bereich 2 (über 80) eintritt, wird ein weiterer Short 1 Lot durchgeführt.
  6. Festsetzung des Gewinns auf 2500 Pips und Stop-Loss auf 5000 Pips

  7. Schließung der Position, wenn der RSI den Signalbereich überschreitet

Analyse der Vorteile

  1. Die Doppelbereichs-Einstellung hilft, Überkauf- und Überverkaufsbedingungen besser zu identifizieren und verpasste Umkehrmöglichkeiten zu vermeiden

  2. Die Einführung von Fixed Take Profit und Stop Loss in Pips verhindert, dass Trends zu sehr verfolgt werden.

  3. Der RSI ist ein ausgereifter Oszillator, mit dem Überkauf- und Überverkaufswerte mit Vorteilen gegenüber anderen Indikatoren ermittelt werden können.

  4. Mit der richtigen Einstellung der Parameter kann diese Strategie effektiv Trendumkehrpunkte erfassen und überschüssige Renditen generieren

Risikoanalyse

  1. RSI-Divergenz kann zu aufeinanderfolgenden Verlusten aus einer anhaltenden Leerposition führen

  2. Festverzinsung und Stop-Loss entsprechen möglicherweise nicht der Marktvolatilität, können nicht gewinnen oder stoppen vorzeitig

  3. Eine unsachgemäße Range-Einstellung kann zu fehlenden Trades oder häufigen unrentablen Trades führen

  4. Diese Strategie stützt sich stark auf die Optimierung von Parametern basierend auf Backtests.

Optimierungsrichtlinien

  1. Testwirksamkeit von RSI bei unterschiedlichen Periodenlängen

  2. Optimierung der Kauf- und Verkaufsbereichswerte für die Eigenschaften verschiedener Produkte

  3. Forschungsdynamik Gewinn und Stop-Loss zur Verbesserung der Rentabilität und Verhältnismäßigkeit

  4. Erwägen Sie die Kombination anderer Indikatoren für den Ensemble-Handel, um die Robustheit zu verbessern

  5. Erforschung von Techniken des maschinellen Lernens zur automatischen Optimierung von Parameterbereichen für die Robustheit

Schlussfolgerung

Diese Strategie basiert auf den Prinzipien von RSI überkauft und überverkauft. Durch die Annahme doppelter Handelsbereiche nutzt sie den RSI-Indikator effektiv und erfasst Marktextreme mit angemessener Stabilität. Sie hat jedoch eine gewisse Parameterabhängigkeit und muss über Produkte hinweg optimiert werden. Wenn sie richtig abgestimmt ist, kann diese Strategie gute Überzinsungen erzielen. Zusammenfassend ist es eine einfache, aber effektive Handelsstrategie mit einem ausgereiften Indikator, die es wert ist, nach Verbesserungen zu suchen und Einblicke für den quantitativen Handel zu geben.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
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/
// © Rawadabdo

// Ramy's Algorithm

//@version=5
strategy("BTC/USD - RSI", overlay=false, initial_capital = 5000)

// User input
length = input(title = "Length", defval=14, tooltip="RSI period")

first_buy_level = input(title = "Buy Level 1", defval=27, tooltip="Level where 1st buy triggers")
second_buy_level = input(title = "Buy Level 2", defval=18, tooltip="Level where 2nd buy triggers")

first_sell_level = input(title = "Sell Level 1", defval=68, tooltip="Level where 1st sell triggers")
second_sell_level = input(title = "Sell Level 2", defval=80, tooltip="Level where 2nd sell triggers")

takeProfit= input(title="target Pips", defval=2500, tooltip="Fixed pip stop loss distance")
stopLoss = input(title="Stop Pips", defval=5000, tooltip="Fixed pip stop loss distance")

lot = input(title = "Lot Size", defval = 1, tooltip="Trading Lot size")

// Get RSI
vrsi = ta.rsi(close, length)

// Entry Conditions
long1 = (vrsi <= first_buy_level and vrsi>second_buy_level)
long2 = (vrsi <= second_buy_level)

short1= (vrsi >= first_sell_level and vrsi<second_sell_level)
short2= (vrsi >= second_sell_level)


// Entry Orders
// Buy Orders
if (long1 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long, qty=lot, comment="Buy")
    if (long2 and  strategy.position_size == 0)
        strategy.entry("Long", strategy.long, qty=lot, comment="Buy")

// Short Orders
if (short1 and strategy.position_size == 0)
    strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    if (short2 and strategy.position_size == 0)
        strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    
// Exit our trade if our stop loss or take profit is hit
strategy.exit(id="Long Exit", from_entry="Long",qty = lot, profit=takeProfit, loss=stopLoss)
strategy.exit(id="Short Exit", from_entry="Short", qty = lot, profit=takeProfit, loss=stopLoss)

// plot data to the chart
hline(first_sell_level, "Overbought Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_sell_level, "Overbought Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
hline(first_buy_level, "Oversold Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_buy_level, "Oversold Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
plot (vrsi, title = "RSI", color = color.blue, linewidth=2)





Mehr