RSI-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-26 15:44:15
Tags:

img

Übersicht

Diese Strategie entwirft ein einfaches Trend-Folge-Handelssystem, das auf dem RSI-Indikator basiert und die Markttrendrichtung durch den RSI bestimmen und automatisierte Long- und Short-Positionen innerhalb eines bestimmten Datumsbereichs implementieren kann.

Strategie Logik

Die Strategie verwendet den RSI-Indikator, um den Markttrend zu bestimmen, und Bollinger Bands, um Überkauf- und Überverkaufszonen zu bestätigen.

Zunächst wird der RSI-Wert berechnet. Die oberen und unteren Bands der Bollinger-Bänder werden auf der Grundlage des gleitenden Durchschnitts und der Standardabweichung des RSI berechnet. Der RSI schwankt zwischen 0 und 1, und Bollinger-Bänder identifizieren überkaufte und überverkaufte Zonen durch Standardabweichung. Wenn der RSI höher als das obere Band ist, ist es eine überkaufte Zone, und wenn er niedriger als das untere Band ist, ist er eine überverkaufte Zone.

Wenn der RSI vom unteren zum oberen Band durchbricht, wird ein Kaufsignal generiert. Wenn der RSI vom oberen zum unteren Band durchbricht, wird ein Verkaufssignal generiert, um dem Trend zu folgen. Nach dem Markteintritt wird kein Stop-Loss oder Take-Profit gesetzt, bis Positionen am Ende des angegebenen Datumsbereichs geschlossen werden.

Die Strategie verwendet den RSI einfach und effektiv, um die Trendrichtung zu bestimmen, und die Bollinger Bands, um spezifische Handelsmöglichkeiten zu identifizieren.

Analyse der Vorteile

  • Die Verwendung des RSI zur Bestimmung der Trendrichtung ist einfach und effektiv
  • Die Kombination von Bollinger Bands zur Bestätigung von Handelssignalen verhindert falsche Ausbrüche
  • Die Festlegung eines Handelsdatumsbereichs hilft, Marktrisiken zu vermeiden
  • Keine Stop-Loss oder Take-Profit, maximiert den Trend nach
  • Flexible Anpassung der Parameter, Anpassung an verschiedene Marktbedingungen

Risiken und Optimierung

  • Der Markt kann heftige Schwankungen haben, die zu Verlusten führen
  • Keine Stop-Loss- oder Gewinnspielzeiten
  • Falsche Parameter-Einstellungen können zu Überhandelungen oder fehlenden Gelegenheiten führen

Optimierungsrichtlinien:

  • Hinzufügen von Stop-Loss und Take-Profit zur Risikokontrolle
  • Optimieren Sie die Parameter-Einstellungen, um die Gewinnrate zu verbessern
  • Hinzufügen anderer Indikatoren, um Signale zu filtern und falsche Ausbrüche zu vermeiden
  • Dynamische Anpassung der Positionsgröße

Zusammenfassung

Zusammenfassend ist dies eine sehr einfache und direkte Trend-Following-Strategie. Mit RSI, um den Trend zu bestimmen, können Bollinger-Bänder, um Signale zu filtern und den Handelsdatumsbereich zu definieren, Trends effektiv verfolgen und Risiken kontrollieren. Aber die Strategie kann weiter optimiert werden. Während sie einfach und effektiv bleibt, können Methoden wie Stop-Loss, Parameteroptimierung und Signalfilterung hinzugefügt werden, um sie für den Live-Handel geeigneter zu machen.


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

//Gidra
//2018

//@version=2
strategy(title = "Gidra's RSI or MFI Strategy v0.1", shorttitle = "Gidra's RSI or MFI v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 1)

//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 = "Lot, %")
src = input(close, title="source")
lengthRSI = input(14, title="RSI or MFI length")
// RSI %B
useRSI = input(true, title="use RSI or MFI")
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")

//MFI
upper = sum(volume * (change(src) <= 0 ? 0 : src), lengthRSI)
lower = sum(volume * (change(src) >= 0 ? 0 : src), lengthRSI)
mf = rsi(upper, lower)

//RSI
rsi = useRSI?rsi(src, lengthRSI): mf

// %B
length = input(50, minval=1, title="BB length")
mult = input(1.618, minval=0.001, maxval=50)
basis = sma(rsi, length)
dev = mult * stdev(rsi, length)
upperr = basis + dev
lowerr = basis - dev
bbr = (rsi - lowerr)/(upperr - lowerr)

plot(bbr, color=black, transp=0, linewidth=2)
// band1 = hline(1, color=white, linestyle=dashed)
// band0 = hline(0, color=white, linestyle=dashed)
// fill(band1, band0, color=teal)
hline(0.5, color=white)

//Signals
up = bbr >= 0 and bbr[1] < 0
dn = bbr <= 1 and bbr[1] > 1
//exit = ((bbr[1] < 0.5 and bbr >= 0.5) or (bbr[1] > 0.5 and bbr <= 0.5))

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

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

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

Mehr