Überverkaufte RSI-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 26.09.2023
Tags:

Übersicht

Diese Strategie verwendet den RSI-Indikator, um festzustellen, ob eine Kryptowährung überverkauft ist, und kauft, wenn der RSI unter 30 liegt, was als überverkauft gilt. Es setzt dann einen Stop-Loss und einen Gewinnpreis. Wenn der Stop-Loss-Preis erreicht wird, wird die Position verlassen. Wenn der Take-Profit-Preis erreicht wird, wird die Position für Gewinn geschlossen.

Wie es funktioniert

  1. Die Strategie verwendet den RSI-Indikator, um Einstiegssignale zu identifizieren. Der RSI misst die Geschwindigkeit und Größe der Preisänderungen, um festzustellen, ob ein Vermögenswert überkauft oder überverkauft ist. Der RSI liegt zwischen 0 und 100, wobei über 70 als überkauft und unter 30 als überverkauft betrachtet werden.

  2. Wenn der RSI unter 30 fällt, tritt die Strategie in eine Long-Position ein und setzt auf eine Trendwende.

  3. Nach Eröffnung der Position werden ein Stop Loss und ein Take Profit gesetzt. Der Stop Loss wird um 1% unter dem Einstiegspreis gesetzt. Der Take Profit wird um 7% über dem Einstiegspreis gesetzt.

  4. Wenn der Preis unter den Stop-Loss fällt, wird die Position geschlossen.

Analyse der Vorteile

  1. Die Verwendung des RSI zur Identifizierung von Überverkaufsbedingungen bietet gute Einstiegspunkte bei relativen Tiefs.

  2. Der enge Stop-Loss kontrolliert das Risiko pro Handel und ermöglicht eine gewisse Abnahme, bevor er gestoppt wird.

  3. Der Take-Profit schließt sich den Gewinnen aus großen Aufwärtsbewegungen an.

  4. Diese Strategie bietet eine starke Auslastungskontrolle und insgesamt geringeres Risiko.

Risikoanalyse

  1. RSI-Überverkaufssignale führen nicht immer zu einer Umkehrung, die Preise könnten weiter sinken, was zu einem Stop-Loss führt.

  2. Der Stop-Loss kann zu eng sein, was zu vorzeitigen Stops führt, wenn der Drawdown groß ist.

  3. Der Gewinn kann zu groß sein, um den Gewinn frühzeitig zu schließen und die Gewinner nicht laufen zu lassen.

  4. Die Strategie könnte sich in unruhigen Märkten mit großen Verlusten konfrontieren.

Optimierung

  1. Die Kombination des RSI mit anderen Indikatoren wie KDJ könnte die Signalgenauigkeit verbessern und falsche Signale vermeiden.

  2. Optimierung von Stop-Loss- und Take-Profit-Prozentsätzen basierend auf der Volatilität verschiedener Münzen.

  3. Verschiedene Zeitrahmenparameter testen, um optimale Kombinationen zu finden.

  4. Optimierung der Positionsgröße basierend auf den Rücktests.

Schlussfolgerung

Insgesamt handelt es sich um eine ziemlich robuste Überverkauft-Breakout-Strategie. Positionen nach RSI-Signalen bieten zu relativ niedrigen Preisen gute Einstiegspunkte. Die Stop-Loss- und Take-Profit-Mechanik hilft, Risiken zu kontrollieren und Gewinne zu erzielen. Die Abzüge sind überschaubar, was sie für längerfristige Bestände geeignet macht. Die Parameter können entsprechend veränderten Marktbedingungen für eine verbesserte Performance optimiert werden.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 15m
basePeriod: 5m
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/
// © brodieCoinrule

//@version=4
strategy(shorttitle='Oversold RSI with tight SL',title='Oversold RSI with tight SL Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

perc_change(lkb) =>
    overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100



// RSI inputs and calculations
lengthRSI = 14
RSI = rsi(close, lengthRSI)
oversold= input(30)


//Entry 
strategy.entry(id="long", long = true, when = RSI< oversold and window())

//Exit
Stop_loss= ((input (1))/100)
Take_profit= ((input (7)/100))

longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())



Mehr