Dynamische RSI-Oszillationshandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 16:04:07
Tags:

img

Übersicht

Diese Strategie kombiniert dynamische Unterstützungs-/Widerstandsniveaus und den Relative Strength Index (RSI) Indikator. Sie setzt Überkauf/Überverkaufsschwellen für den RSI und erzeugt Kauf/Verkaufsignale, wenn der Preis die dynamischen Unterstützungs-/Widerstandsniveaus durchbricht, während sich der RSI nicht im Überkauf/Überverkaufszone befindet.

Grundsätze

1. Dynamische Unterstützung/Widerstand

Verwenden Sie die Sicherheitsfunktion, um den Schlusskurs als dynamische Unterstützungs-/Widerstandsniveaus zu erhalten.

2. RSI-Indikator

Berechnen Sie den durchschnittlichen Gewinn und den durchschnittlichen Verlust über einen bestimmten Zeitraum, um RSI-Werte zu ermitteln und festzustellen, ob der RSI den Überkauf-/Überverkaufsbereich erreicht.

3. Handelssignale

Wenn der Preis die dynamischen Niveaus durchbricht, wenn der RSI nicht im Überkauf-/Überverkaufsbereich liegt, werden Kauf-/Verkaufssignale generiert. Ansonsten werden die Ausbruchssignale ignoriert.

4. Ausfahrtssignale

Schließen Sie Positionen, wenn der Preis wieder auf das dynamische Niveau fällt oder wenn der RSI wieder in den normalen Bereich zurückkehrt.

Analyse der Vorteile

  1. Verwenden Sie dynamische Unterstützungs-/Widerstandsmöglichkeiten, um die Trendrichtung für eine höhere Gewinnrate zu bestimmen.

  2. RSI filtert falsche Ausbrüche aus und vermeidet falsche Einträge.

  3. Die Kombination von Trend und Indikator macht die Strategie an unterschiedliche Marktbedingungen anpassbar.

  4. Einfache und klare Regeln machen es leicht umzusetzen.

Risiken und Lösungen

  1. Mehrfache Tests von dynamischen Ebenen können falsche Signale erzeugen.

  2. Der Solo-RSI kann zu Fehleinschätzungen führen. Fügen Sie andere Indikatoren für die Kombinationsfilterung hinzu.

  3. Häufiger Handel auf einem Bereichsmarkt führt zu höheren Kosten.

  4. Fehlende Parameter-Einstellungen führen zu fehlenden oder falschen Signalen.

Optimierungsrichtlinien

  1. Verwenden Sie maschinelles Lernen, um die RSI-Parameter automatisch zu optimieren.

  2. Fügen Sie eine Stop-Loss-/Profit-Taking-Strategie hinzu, um Gewinne zu erzielen und Verluste zu reduzieren.

  3. Um die Stabilität zu verbessern, sollten mehr Indikatoren für die Kombinationsfilterung integriert werden.

  4. Zusätzlicher Volatilitätsindikator auf die niedrigere Positionsgröße, wenn die Volatilität gering ist.

  5. Optimierung des Positionsgrößenalgorithmus zur dynamischen Anpassung von Positionen an verschiedene Marktumgebungen.

Zusammenfassung

Diese Strategie kombiniert Trendbeurteilung und Indikatorfilterung, um Trendumkehrungen um Schlüsselniveaus effektiv zu identifizieren und gleichzeitig Risiken zu kontrollieren.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels+RSI Strategy v1.0", shorttitle = "Levels+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = "timeframe 1")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Level
level = request.security(syminfo.tickerid, tf, src[1])
plot(level, linewidth = 3, color = silver)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))

//Level Signals
ls = close > level and ap == false ? true : low > level ? true : false
up1 = strategy.position_size == 0 and ls and (close < open or cf == false)
exit1 = close < level and ap == false ? true : high < level ? true : false 

//RSI Signal

up2 = rsi < rsilimit and (close < open or cf == false)
exit2 = rsi > rsilimit and ls == false

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 or up2 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
    
if  (exit1 and rsi > rsilimit) or exit2
    strategy.close_all()

Mehr