Schnelle RSI-Strategieanalyse

Schriftsteller:ChaoZhang, Datum: 2023-12-04 14:40:02
Tags:

img

Name der Strategie

Extreme beidseitige RSI-Trendstrategie

Übersicht

Diese Strategie nutzt den RSI-Indikator, um die Preisentwicklung schnell zu bestimmen.

Strategieprinzip

Die Strategie verwendet einen verbesserten RSI-Indikator, um den überkauften und überverkauften Status der Preise zu beurteilen, kombiniert mit einem Candle Body-Filter, um Lärm zu reduzieren. Es geht lang oder kurz, wenn der RSI in der überkauften oder überverkauften Zone ist und die Candle Body-Größe größer als 1/3 der durchschnittlichen Körpergröße ist. Es schließt Positionen, wenn die Kerze die Richtung umkehrt und der RSI nach dem Auslösen der Handelssignale auf sicherere Ebenen zurückzieht.

Analyse der Vorteile

Die Strategie reagiert schnell und kann schneller kurzfristige Trends erfassen. In der Zwischenzeit hilft die Körperfilterung, Lärm zu reduzieren und durch falsche Ausbrüche nicht irregeführt zu werden. Sie eignet sich gut für Produkte mit hoher Volatilität und kann höhere Renditen erzielen.

Risikoanalyse

Die Strategie ist sehr empfindlich auf Preisänderungen, leicht durch falsche Signale auf dem Markt fehlgeleitet. Auch können Stop-Losses häufig auf dem Markt mit hoher Volatilität ausgelöst werden. Wir können den Stop-Loss-Bereich lockern und die RSI-Parameter optimieren, um die Wahrscheinlichkeit eines falschen Signals zu senken.

Optimierungsrichtlinien

Wir können verschiedene periodische Parameter der Indikatoren testen, um die Strategie zu optimieren und die beste Parameterkombination zu finden. Außerdem kann die Einbeziehung anderer Indikatoren wie die Turtle Trading-Regeln bei der Filterung von Signalen weiter helfen.

Zusammenfassung

Insgesamt ist dies eine effiziente und reaktionsschnelle kurzfristige Strategie. Mit einigen Parametern und Modelloptimierungen hat sie das Potenzial, die Stabilität und Rentabilität weiter zu verbessern.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.1", shorttitle = "Fast RSI str 1.1", 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 Source")
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

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

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

//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