Schnelle Scalping-RSI-Wechselstrategie v1.7

Schriftsteller:ChaoZhang, Datum: 2023-12-22 15:10:40
Tags:

img

Übersicht

Noros Fast Scalping RSI Switching Strategie ist eine quantitative Handelsstrategie, die überkaufte und überverkaufte Chancen mithilfe des RSI-Indikators identifiziert.

Zu den wichtigsten Bestandteilen dieser Strategie gehören:

  1. Fast RSI-Indikator: Identifizieren Sie Überkauf- und Überverkaufswerte
  2. Kerzenmuster: Unterstützung bei der Bestimmung der Trendrichtung
  3. Filter für gleitende Durchschnittswerte: Verwenden Sie SMA, um falsche Signale zu vermeiden
  4. Stop-Loss-Mechanismus: Stop-Loss-Mechanismen auf der Grundlage von RSI-Limits implementieren

Strategie Logik

Die Noro-Fast Scalping RSI-Switching-Strategie identifiziert hauptsächlich folgende Handelssignale:

  1. Schnelle RSI-Überkauf/Überverkaufssignale: Handelssignale werden erzeugt, wenn der schnelle RSI über seine obere Grenze oder unter seine untere Grenze geht.

  2. Candlestick-Signale: Candlestick-Parameter wie Körpergröße und Richtung werden verwendet, um den Trend zu bestimmen und schnelle RSI-Signale zu ergänzen.

  3. SMA-Filtersignale: Die SMA-Richtung filtert falsche Ausbruchssignale aus.

  4. Stop-Loss-Signale: Positionen werden geschlossen, wenn der schnelle RSI wieder über seine obere Grenze oder unter seine untere Grenze geht.

Insbesondere identifiziert diese Strategie Handelsmöglichkeiten auf der Grundlage der überkauften und überverkauften Zonen des schnellen RSI.

Um Lärm zu vermeiden, werden folgende zusätzliche Bedingungen hinzugefügt:

  1. Größe des Kerzenkörpers: Größere Kerzenkörper stellen einen stärkeren Trend dar
  2. Candle-Richtung: Bestimmt den Auf- oder Abwärtstrend
  3. SMA-Filter: Filtert falsche Ausbruchssignale aus
  4. Stop-Loss: Trades verlassen, wenn der schnelle RSI seine Grenzen wieder überschreitet

Daher kombiniert diese Strategie schnelle RSI, Candlesticks, gleitenden Durchschnitt und Stop Loss, um Handelssignale zu generieren.

Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Der schnelle RSI ist empfindlich: Er fängt schnell überkaufte/überverkaufte Chancen ein
  2. Candlestick & MA Filter: Vermeidet falsche Signale
  3. Automatischer Stop-Loss: Effektives Risikokontrollen
  4. Geeignet für Scalping: Funktioniert gut mit kürzeren Zeitrahmen z.B. 1H, 30M
  5. Einfache Optimierung: Parameter können für verschiedene Märkte abgestimmt werden

Risiken

Es gibt auch einige Risiken, die zu berücksichtigen sind:

  1. Nachfolgender Stop Loss: Es können mehr Stop Loss-Signale in verschiedenen Märkten auftreten.
  2. Parameteroptimierung erforderlich: Parameter müssen für verschiedene Paare und Zeitrahmen abgestimmt werden
  3. Es ist nicht möglich, alle Verluste zu vermeiden: Ein rechtzeitiger Stop-Loss führt immer noch zu einigen Verlusten

Die folgenden Optimierungsmethoden können zur Minderung der Risiken beitragen:

  1. Optimieren Sie schnelle RSI-Parameter: Verringern Sie falsche Signale
  2. Optimieren Sie die Stop Loss Platzierung: Steuern Sie die Größe der einzelnen Verluste
  3. Positionsgröße hinzufügen: Risiken auf mehrere Trades verteilen

Optimierungsrichtlinien

Einige Möglichkeiten zur weiteren Optimierung dieser Strategie sind:

  1. Gewinnspielzeiten: Teilgewinn bei Erreichen der Gewinnziele
  2. Verbesserung des Risikomanagements: Einbeziehung von Positionsgrößenregelungen zur Diversifizierung von Risiken
  3. Parameter-Tuning: Testeffekt von Parameteranpassungen über Zeiträume hinweg
  4. Maschinelles Lernen: Algorithmen zur automatischen Optimierung von Parametern
  5. Robustheitstests: Bewertung der Strategieleistung über mehrere Symbolpaare hinweg

Durch die Einbeziehung von Gewinngewinn, Risikomanagement, Parameteroptimierung, maschinellem Lernen und Robustheitstests kann die Strategie ihre Stabilität erheblich verbessern.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass die Noro Fast Scalping RSI Switching Strategie den schnellen RSI-Indikator mit einer zusätzlichen Kerzen-Analyse kombiniert, um überkaufte und überverkaufte Handelsmöglichkeiten zu identifizieren.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Fast RSI Strategy v1.7", shorttitle = "Fast RSI str 1.7", overlay = true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usebc = input(true, defval = true, title = "Use BarColor Strategy")
usesma = input(false, defval = false, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
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), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
abody = sma(body, 10)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > abody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm
dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm 
up3 = sma(bar, 2) == -1 and usebc
dn3 = sma(bar, 2) == 1 and usebc
exit = (((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 2)

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2 or up3
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1 or dn2 or dn3
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Mehr