Quantitative Handelsstrategie basierend auf StochRSI


Erstellungsdatum: 2023-12-07 16:05:17 zuletzt geändert: 2023-12-07 16:05:17
Kopie: 0 Klicks: 630
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Handelsstrategie basierend auf StochRSI

Überblick

Die Strategie basiert auf dem StochRSI. Sie verwendet den StochRSI, um Überkauf und Überverkauf zu ermitteln. In Kombination mit dem RSI filtert die Strategie einige falsche Signale aus.

Strategieprinzip

Die Strategie verwendet hauptsächlich den StochRSI, um überkaufte und überverkaufte Bereiche zu bestimmen. Der StochRSI besteht aus einer K-Linie und einer D-Linie, wobei die K-Linie die Position des aktuellen RSI-Wertes in der RSI-Preisspanne in der jüngsten Periode widerspiegelt. Die D-Linie ist der Moving Average der K-Linie.

Konkret berechnet die Strategie zunächst den Wert des RSI-Indikators mit einer Länge von 14, und wendet dann den StochRSI-Indikator auf den RSI-Indikator an. Die Parameter des StochRSI-Indikators sind mit einer Länge von 14 eingestellt, der Gleitzyklus K-Linie ist 3, und die D-Linie ist 3. Wenn die K-Linie die vom Benutzer eingestellte Überverkaufszone ((default 1) durchquert, macht sie mehr; Wenn die K-Linie die vom Benutzer eingestellte Überverkaufszone ((default 99) durchquert, macht sie leer.

Die Strategie setzt außerdem die Stop-Loss- und Stop-Stop-Parameter. Die Stop-Loss-Parameter sind standardmäßig 10000; die Stop-Stop-Parameter sind als Kurven-Trailing-Stops, die Standard-Trailing-Punkte sind 300 und die Verlagerung 0 eingestellt.

Analyse der Stärken

  1. Der StochRSI ist besser geeignet als der einzelne RSI, um überkaufte und überverkaufte Bereiche zu bestimmen
  2. Vermeiden Sie falsche Durchbrüche mit RSI-Filtersignalen
  3. Einstellung der Risikokontrolle für die Stop-Loss-Stoppmechanismen

Risikoanalyse

  1. StochRSI-Indikator mit möglicher Fehlsignalisierung
  2. Die Überkauf-Überverkauf-Parameter müssen vernünftigerweise eingestellt werden, sonst wird falsch gehandelt.
  3. Ein zu kleiner Stop-Loss-Punkt kann leicht eingeschaltet werden, ein zu großer Stop-Loss-Punkt kann zu begrenzten Erträgen führen.

Für diese Risiken können längere Parameterzyklen eingestellt oder in Kombination mit anderen Indikatoren zur Filterung von Signalen in Betracht gezogen werden. Die Überkauf-Überverkauf-Parameter können für verschiedene Märkte angepasst werden, und verschiedene Stop-Loss-Stop-Parameter können getestet werden.

Optimierungsrichtung

  1. In Kombination mit anderen Indikatoren, wie MACD, Brinline usw., kann er in Betracht gezogen werden, um falsche Signale zu filtern
  2. Verschiedene Parameter-Zyklus-Einstellungen können getestet werden, um mehr Marktsituationen anzupassen
  3. Optimierung der Stop-Loss-Stopp-Punkte, mehrfache Tests in der Rückmessung, um die optimalen Parameter zu finden

Zusammenfassen

Die Strategie basiert auf dem StochRSI, um überkaufte und überverkaufte Bereiche zu bestimmen. Der StochRSI kombiniert die Ideen von KDJ, um die Wendepunkte genauer zu bestimmen als der einzelne RSI. Der StochRSI kombiniert auch das Falschsignal des RSI und setzt die Stop-Loss-Risiken ein.

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

//@version= 2
strategy("STOCHRSI JURE", overlay=false)
lengthrsi = input(10)
overSold = input( 1 )
overBought = input(99)

call_trail_stop = input(300)
call_trail_offset = input(0)
call_sl = input(10000)

price = ohlc4
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)


plot( k, color=blue, linewidth=1, title="K")
plot( d, color=red, linewidth=1, title="D")

if (crossover(k, overSold) ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    strategy.exit("BUY EXIT", "BUY", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)


if (crossunder(k, overBought) ) 
    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL")
    strategy.exit("SELL EXIT", "SELL", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)
    

//if (  ( crossover(k,d)) and ( (vrsi<overSold) or crossover(vrsi,overSold) )  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
//    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="BUY")
//else
//    strategy.cancel(id="BUY")

//if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 
//    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="SELL")
//else
//    strategy.cancel(id="SELL")