Die Ressourcen sind geladen. Beförderung...

Schnelle RSI-Durchbruchstrategie

Schriftsteller:ChaoZhang, Datum: 23.10.2023
Tags:

img

Übersicht

Diese Strategie implementiert schnelle Durchbruchstransaktionen basierend auf dem RSI-Indikator und dem EMA von Kerzenkörpern. Sie identifiziert Umkehrsignale unter Verwendung der schnellen Bildung von RSI und großen Kerzenkörpern.

Strategie Logik

  1. Berechnen Sie den RSI-Indikator mit Periode 7 und verwenden Sie RMA für die Beschleunigung.

  2. Berechnen Sie die EMA der Leuchterkörpergröße mit Periode 30 als Benchmark für die Leuchtergröße.

  3. Wenn der RSI über die Grenzlinie (Standard 30) überschreitet und der aktuelle Kerzenkörper größer als 1/4 der durchschnittlichen Körpergröße ist, gehen Sie lang.

  4. Wenn der RSI unterhalb der Grenzlinie (Standard 70) überschreitet und der aktuelle Kerzenkörper größer als 1/4 der durchschnittlichen Körpergröße ist, gehen Sie kurz.

  5. Falls bereits in Position, schließen, wenn der RSI die Grenzlinie zurückschreitet.

  6. Parameter wie RSI Länge, Grenze, Referenzpreis können konfiguriert werden.

  7. Parameter wie Körper EMA-Periode, offene Position chroot Multiplikator konfiguriert werden kann.

  8. Die Anzahl der RSI-Kreuzungen kann konfiguriert werden.

Analyse der Vorteile

  1. Verwenden Sie das Umkehrattribut des RSI, um Umkehrungen zeitnah zu erfassen.

  2. RMA beschleunigt die RSI-Bildung für empfindlichere Umkehrungen.

  3. Filtern Sie kleine Konzentrationen mit großen Leuchterkörpern.

  4. Ausreichende Daten aus Backtests gewährleisten die Zuverlässigkeit.

  5. Anpassungsfähige Parameter passen sich unterschiedlichen Marktumgebungen an.

  6. Einfache und klare Logik.

Risikoanalyse

  1. Der RSI hat einen Backtest-Vorsprung, die tatsächliche Leistung muss validiert werden.

  2. Große Unternehmen können nicht vollständig auf unruhige Märkte reagieren.

  3. Standardparameter können nicht für alle Produkte geeignet sein, eine Optimierung ist erforderlich.

  4. Die Gewinnrate ist vielleicht nicht hoch, muss mental aufeinanderfolgende Verluste ertragen.

  5. Risiko eines fehlgeschlagenen Durchbruchs, muss rechtzeitig Stop-Loss sein.

Optimierungsrichtlinien

  1. Optimierung der RSI-Parameter für verschiedene Zeiträume und Produkte.

  2. Optimieren Sie die EMA-Periode des Körpers, um die Körpergröße zu glätten.

  3. Optimieren Sie den Körpermultiplikator für offene Positionen, um die Eintrittsfrequenz zu steuern.

  4. Hinzufügen von beweglichen Stop-Loss, um Gewinnquote zu gewährleisten.

  5. Hinzufügen eines Trendfilters, um einen Gegentrendhandel zu vermeiden.

  6. Optimierung des Geldmanagements zur Risikokontrolle.

Schlussfolgerung

Zusammenfassend ist dies eine sehr einfache und direkte Umkehrstrategie. Sie nutzt sowohl das Umkehrattribut des RSI als auch die Dynamik großer Kerzenkörper, um bei Marktumkehrungen schnell einzutreten. Obwohl die Backtest-Ergebnisse gut aussehen, muss die tatsächliche Leistung noch validiert werden. Bei der Anwendung sind Parameteroptimierung und Risikokontrolle erforderlich. Insgesamt ist es eine Strategie mit großem Wert und lohnt sich, im Live-Handel anzuwenden und ständig zu verbessern.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
fromyear = input(2018, defval = 2018, 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")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Mehr