Handelsstrategien basierend auf RSI und Stochastic RSI


Erstellungsdatum: 2024-02-18 16:13:50 zuletzt geändert: 2024-02-18 16:13:50
Kopie: 1 Klicks: 711
1
konzentrieren Sie sich auf
1617
Anhänger

Handelsstrategien basierend auf RSI und Stochastic RSI

Überblick

Diese Trading-Strategie kombiniert zwei technische Indikatoren, den Relativ-Schwachen-Indikator (RSI) und den Zufällig-Schwachen-Indikator (Stochastic RSI), um ein Handelssignal zu erzeugen. Die Strategie nutzt zusätzlich Kryptowährungs-Preisbewegungen in höheren Zeitrahmen, um Trends zu bestätigen, um die Reliabilität des Signals zu erhöhen.

Bezeichnung der Strategie

Multi-Timeframe RSI-SRSI Trading Strategy (Multi-Timeframe RSI-SRSI Trading Strategy) ist eine Handelsstrategie, bei der die RSI-SRSI-Werte in einem Zeitraum von zwei bis drei Monaten gehandelt werden.

Strategieprinzip

Die Strategie beurteilt Überkauf und Überverkauf anhand des RSI-Wertes. Wenn der RSI unter 30 liegt, ist dies ein Überverkaufssignal, wenn er über 70 liegt, ist dies ein Überkaufssignal. Der Stochastic RSI beobachtet die Volatilität des RSI-Indikators selbst.

Die Strategie erzeugt ein Buy-Trade-Signal nur, wenn der RSI des höheren Zeitrahmens über dem Depreciation-Wert liegt (z. B. 45). Diese Einstellung filtert nicht-persistente Überverkaufssignale aus, die während des gesamten Abwärtstrends auftreten.

Kauf- und Verkaufssignale müssen nach dem Trigger durch eine bestimmte Periode (z. B. 8 K-Leitung) bestätigt werden, um ein irreführendes Signal zu vermeiden.

Strategische Vorteile

  • Klassische technische Analysemethoden zur Bestimmung von Überkauf und Überverkauf anhand des RSI
  • In Kombination mit dem Stochastic RSI-Indikator identifiziert der RSI selbst ein Umkehrsignal
  • Mehrzeit-Framework-Filter, um falsche Signale zu filtern und die Signalqualität zu verbessern

Strategische Risiken und Lösungen

  • RSI-Indikatoren sind anfällig für falsche Signale
    • Misstrauenssignale in Kombination mit anderen Indikatoren
    • Technik zur Trendbestätigung
  • Fehl eingestellte Threshold-Parameter erzeugen leicht zu viele Handelssignale
    • Optimierung der Parameterkombinationen
  • Kauf- und Verkaufssignale müssen bestätigt werden.
    • Finden Sie eine ausgewogene Bestätigungsphase, filtern Sie falsche Signale und verpassen Sie keine Chancen

Richtung der Strategieoptimierung

  • Test mehr Kombinationen, um stärkere Signale zu finden
    • Die MACD-Indikatoren werden beispielsweise in Strategien aufgenommen
  • Versuchen Sie, die optimale Parameter zu finden, indem Sie maschinelle Lernmethoden verwenden.
    • Automatische Optimierung mit genetischen/evolutionären Algorithmen
  • Erhöhung der Stop-Loss-Strategie, um das Risiko für einzelne Geschäfte zu kontrollieren
    • Stopp, wenn der Preis unter der Unterstützung fällt

Zusammenfassen

Die Strategie stützt sich auf die klassischen Handelsindikatoren RSI und Stochastic RSI, um Handelssignale zu erzeugen. Die Einführung eines höheren Zeitrahmens zur Trendbestätigung ermöglicht die effektive Filterung von Fehlsignalen und verbessert die Signalqualität. Die Strategie kann die Strategieleistung durch Parameteroptimierung und Stop-Loss-Strategien weiter verbessern.

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

//@version=5
strategy("RSI and Stochatic Strategy", overlay=true, use_bar_magnifier = false)


/////// Inputs ///////////////

// RSI and SRSI
rsiLength = input(14, title="RSI Length") 
stochLength = input(14, title="Stochastic Length")
kSmooth = input(3, title="K Smooth")
dSmooth = input(3, title="D Smooth")


//////// thresholds ///////////////
st_low = input(5, title="Low SRSI") // stochastic RSI low -- prepare to sell
st_hi = input(50, title="High SRSI") // stochastic RSI high -- prepare to buy
diff = input(5, title="difference") // minimum change in RSI
// inval_diff = input(12, title="difference") // invalidation difference: change in the oposite direction that invalidates rsi falling/rising
rsi_low = input(30, title="Low RSI") // RSI considered low
rsi_hi = input(60, title="High RSI") // RSI considered high
rsi_ht_hi = input(45, title="High higher time frame RSI") // RSI in higher time frame considered high


/// buy trigger duration 
tr_dur = input(8, title="Trigger duration")
low_dur = input(20, title="Monitoring last low")


///////////////// Higher time frame trend ///////////////////
// higher time frame resolution
res2 = input.timeframe("W", title="Higher time-frame")
// Input for the ticker symbol, default is an empty string
// For instance we could monitor BTC higher time frame trend
symbol = input("BTC_USDT:swap", "Input Ticker (leave empty for current)")

// Determine the symbol to use
inputSymbol = symbol == "" ? syminfo.tickerid : symbol
//////////////////////////////////////////////////////////

// Calculate RSI //
rsi = ta.rsi(close, rsiLength)

// Calculate Stochastic RSI //
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stochRsi = 100 * (rsi - rsiLowest) / (rsiHighest - rsiLowest)

// Apply smoothing
K = ta.sma(stochRsi, kSmooth)
D = ta.sma(K, dSmooth)

// Higher time Frame RSI
cl2 = request.security(inputSymbol, res2, close)
rsi2 = ta.rsi(cl2, 14)

// SRSI BUY/SELL signals 
sell_stoch = (ta.lowest(K, tr_dur) < st_low) or (ta.highest(rsi, tr_dur) < rsi_low)
buy_stoch = ((ta.lowest(K, tr_dur) > st_hi) or (ta.lowest(rsi, tr_dur) > rsi_hi)) and (rsi2 > rsi_ht_hi)

 // valitation / invalidation sell signal
ll = ta.barssince(not sell_stoch)+1
sell_validation = (ta.highest(rsi, ll)>rsi[ll]+diff and rsi < rsi[ll]) or (rsi < rsi[ll]-diff)

// valitation / invalidation buy signal
llb = ta.barssince(not buy_stoch)+1
buy_validation = (ta.lowest(rsi, llb)<rsi[llb]-diff and rsi > rsi[llb]) or (rsi > rsi_hi and rsi - rsi[tr_dur] > 0)

sell_signal = sell_stoch and sell_validation
buy_signal = buy_stoch and buy_validation 

// Define the start date for the strategy
startYear = input(2019, "Start Year")
startMonth = input(1, "Start Month")
startDay = input(1, "Start Day")

// Convert the start date to Unix time
startTime = timestamp(startYear, startMonth, startDay, 00, 00)

// Define the end date for the strategy
endYear = input(2030, "End Year")
endMonth = input(1, "End Month")
endDay = input(1, "End Day")

// Convert the end date to Unix time
endTime = timestamp(endYear, endMonth, endDay, 00, 00)


if true
    if buy_signal
        strategy.entry("buy", strategy.long, comment = "Buy")
    if sell_signal
        strategy.close("buy", "Sell")