RSI-basierte Auto-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-29 14:14:01
Tags:

img

Übersicht

Diese Strategie entwirft ein automatisiertes Handelssystem für sowohl Long- als auch Short-Positionen, das auf dem RSI-Indikator basiert.

Strategie Logik

Die Strategie verwendet den RSI-Indikator, um überkaufte/überverkaufte Marktbedingungen zu identifizieren. Insbesondere, wenn der RSI unter die Überverkaufslinie fällt, tritt er in Long-Positionen ein; wenn der RSI die Überkaufslinie übersteigt, tritt er in Short-Positionen ein.

Darüber hinaus sind in der Strategie Exit-Regeln festgelegt. Wenn der RSI nach dem Eröffnen von Long-Positionen erneut über die Überkauflinie geht, löst er Stop-Losses aus, um Longs zu schließen; ähnlich, wenn der RSI nach dem Eröffnen von Shorts erneut unter die Überverkaufslinie geht, schließt er Shorts.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die Verwendung des RSI-Indikators zur Beurteilung von Überkauf/Überverkaufsszenarien, die eine relativ ausgereifte und zuverlässige technische Analysemethode im quantitativen Handel ist.

Außerdem kontrolliert der Stop-Loss-Mechanismus das Abwärtsrisiko bei starken einseitigen Trends effektiv, was einem starken Kontrast zu traditionellen Trend-Folge-Strategien gegenübersteht, bei denen Läufer leicht in Schwierigkeiten geraten können.

Risikoanalyse

Das größte Risiko besteht darin, dass der RSI-Indikator gelegentlich falsche Handelssignale geben kann. Kein technischer Indikator kann bei der Vorhersage von Marktbewegungen, einschließlich RSI, zu 100% genau sein. Wenn der RSI falsche Urteile über den Überkauf/Überverkaufstatus fällt, führt dies zu falschen Einträgen für die Strategie.

Um ein solches Risiko zu verringern, werden Stop-Losses in der Strategie implementiert. Aber die Wahrscheinlichkeit, dass Stop-Loss-Trigger bei starken Trends ausgelöst werden, kann immer noch hoch sein, und manuelle Intervention wäre erforderlich, um die falschen Positionen zu schließen. Im Allgemeinen sind menschliche Aufsicht und Anpassungen immer noch erforderlich, damit das automatisierte System maximale Leistung erzielt.

Optimierungsrichtlinien

Weitere Optimierungen sind möglich:

  1. Einbeziehung anderer Indikatoren zur Bestätigung der Eintrittssignale und Vermeidung falscher Einträge aus dem RSI allein.

  2. Optimieren Sie die RSI-Parameter, um bessere Längenwerte für präzisere Überkauf-/Überverkaufserkennungen zu finden.

  3. Die Stop-Loss-Platzierung wird so abgestimmt, dass ein Gleichgewicht zwischen Verlustverhütung und Vermeidung vorzeitiger Ausgänge hergestellt wird.

Schlussfolgerung

Insgesamt hat diese RSI-basierte automatisierte Handelsstrategie den Vorteil, dass sie überkaufte und überverkaufte Marktbedingungen effektiv identifiziert. Durch das Eintreten von Long- und Short-Positionen während extremer RSI-Levels zielt sie darauf ab, von Marktumkehrungen zu profitieren. Der Stop-Loss-Mechanismus hilft auch, Verluste während starker einseitiger Trends zu begrenzen. Allerdings bleibt das Risiko fehlerhafter RSI-Signale bestehen. Weitere Optimierungen bei Bestätigungsindikatoren, RSI-Parametern und Stop-Loss-Platzierung könnten die Rentabilität und Risikokontrolle der Strategie verbessern. Wie bei allen automatisierten Systemen ist auch für Interventionen in speziellen Marktsituationen menschliche Aufsicht erforderlich.


/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - LONG SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows Buy and close Buy positions --------------- //

timebull = stratbull 
timebear = stratbear 

strategy.entry("Long", true, when = timebull and crossover(rsiVWAP, ovrsld), comment="")
strategy.close("Long", when = timebull and crossover(rsiVWAP, ovrbgt)[lateleave] or crossunder(rsiVWAP, ovrbgt), comment="")


Mehr