Mehrzeitrahmen-RSI und Stochastikstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-21 15:56:37
Tags:

img

Übersicht

Die Multi Timeframe RSI und Stochastics Strategie ist eine Strategie, die RSI und Stochastics Indikatoren über mehrere Zeitrahmen kombiniert, um überkaufte und überverkaufte Bedingungen auf dem Markt zu bestimmen.

Strategie Logik

1. RSI-Indikator

Der RSI-Indikator ist ein leistungsfähiger Oszillator, der überkaufte und überverkaufte Niveaus anhand der Größe der jüngsten Kursbewegungen misst.

Diese Strategie verwendet einen 14-Perioden-RSI und erhält RSI-Werte aus den monatlichen, täglichen, 4-stündigen und 1-stündigen Zeitrahmen.

2. Stochastische Daten %K

Stochastics %K ist ein Indikator, der auf einer Skala von 0 bis 100 überkaufte/überverkaufte Märkte aufzeigt.

Die Strategie verwendet eine 14,3 Stochastics-Konfiguration und erhält ebenfalls %K-Werte aus den oben genannten Zeitrahmen.

3. Durchschnittswertkombination

Der Kern der Strategie besteht darin, einen Durchschnitt der beiden Indikatoren über die verschiedenen Zeitrahmen hinweg zu ermitteln, um die Stärken jedes Zeitrahmens bei der Beurteilung der allgemeinen Marktbedingungen zu ermitteln.

Der RSI-Durchschnitt = (monatlicher RSI + täglicher RSI + 4H RSI + 1H RSI) / 4

Stochastikdurchschnitt = (Monatliche Stochastik + tägliche Stochastik + 4h Stochastik + 1h Stochastik) / 4

4. Handelssignale

Die Strategie löst einen Long aus, wenn der RSI-Durchschnitt unter 30 fällt und der Stochastic-Durchschnitt unter 20 fällt.

Die Long-Position wird geschlossen, wenn der Stochastic-Durchschnitt über 70 steigt und der RSI-Durchschnitt über 50 steigt.

Analyse der Vorteile

Der Hauptvorteil dieser Strategie liegt in der Kombination von zwei Indikatoren über mehrere Zeitrahmen hinweg. Dies erhöht die Zuverlässigkeit der Handelssignale erheblich und minimiert falsche Signale.

  1. RSI und Stochastik überprüfen sich gegenseitig als Signale. Allein auf einen Indikator angewiesen, neigt dazu, falsche Signale häufiger zu erzeugen.

  2. Mehrfache Zeitrahmen führen zu einer robusteren Analyse. Zum Beispiel zeigen die monatlichen und täglichen Zeitrahmen einen überkauften Markt, aber die kleineren Zeitrahmen müssen noch zu Überverlängerungsebenen gelangen. Dies deutet darauf hin, dass ein Aufwärtstrend wahrscheinlich weitergehen wird. Signale sind zuverlässiger, wenn alle Zeitrahmen übereinstimmen.

  3. Eine klarere Identifizierung struktureller Wendepunkte, wenn mehrere Zeitrahmen gleichzeitig einen Bruch der wichtigsten S/R-Levels zeigen und eine Trendwende signalisieren.

  4. Die automatische Berechnung von Durchschnittswerten vereinfacht den Arbeitsablauf. Keine manuelle Berechnung ist erforderlich, da der Code automatisch Daten abrufen, Indikatoren berechnen und durchschnittlich berechnen kann.

Risikoanalyse

Wie bei allen technischen Analysestrategien liegt das Kernrisiko in Fehlschlägen und falschen Signalen.

  1. Trendumkehrungen, die dazu führen, dass sie gestoppt werden. Zum Beispiel machen die Preise einen kurzfristigen Bruch unterhalb der Unterstützung, bevor sie lange wieder aufsteigen. In solchen Fällen können aufgrund der Exit-Logik kurzfristige Verluste entstehen.

  2. Invalidierung der wichtigsten S/R-Levels, die zu fehlgeschlagenen Trailing-Stops führen.

  3. Falsche Beurteilungen aus suboptimalen Zeitrahmenkonfigurationen. Über- oder unterglättete Zeitrahmen können irreführende Oszillatorwerte liefern.

  4. Divergenz zwischen den Zeitrahmen, die einen Dunkerqueffekt verursacht, wenn höhere Zeitrahmen einen überkauften Markt zeigen, aber niedrigere Zeitrahmen überverkaufte Bedingungen signalisieren, wodurch die Durchschnittswerte ineffektiv werden.

Lösungen umfassen die Optimierung von Stop-Loss-Strategien, die Verfolgung dynamischer S/R-Level, die Anpassung von Zeitrahmenparametern und das Hinzufügen zusätzlicher Filter.

Möglichkeiten zur Verbesserung

Angesichts der erörterten Risiken sind die Möglichkeiten zur Verbesserung folgender:

  1. Optimierung des Stop-Loss-Mechanismus zur Einbeziehung von Trailing-Stops und partiellen Exits.

  2. Das ergänzt höhere Zeitrahmen wie das vierteljährliche Diagramm. Dies ermöglicht eine größere Trendführung, um falsche Signale zu filtern. Priorisierung von Messungen aus höheren Zeitrahmen, wenn Abweichungen auftreten.

  3. Einbeziehung von Volumen zur zusätzlichen Trendvalidierung durch Stier/Bär Divergenzen, um Zombie-Trends zu vermeiden.

  4. Feinabstimmung der Eingangssignale durch Warten auf Ausbrüche rund um wichtige historische S/R oder Erlaubnis für optimale Pullback-Einträge.

  5. Implementierung von anpassungsfähigen Stopps basierend auf aktuellen Volatilitäts- und ATR-Werten für die dynamische Stoppposition.

Schlussfolgerung

Die Multi Timeframe RSI und Stochastics Strategie ist ein klarer, zuverlässiger Ansatz, der eine Kombination von RSI und Stochastics über mehrere Zeitrahmen hinweg verwendet, um Überkauf-/Überverkaufsniveaus zu identifizieren. Seine größte Stärke liegt in der gegenseitigen Verifizierung von Indikatoren und Zeitrahmen, um Whipsaw- und Falschsignalrisiken zu minimieren. Dennoch ist es wie alle technischen Strategien mit inhärenten Risiken konfrontiert, die durch Stop-Loss-Optimierung, Zeitrahmenwahl usw. angegangen werden müssen, um es zu einer stabilen automatisierten Handelsstrategie zu verfeinern.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////// MTF Stochastic & RSI Strategy 🚥 ©️ bykzis /////////////////////////////////////////
//

// *** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 *** and LOT OF COPY of Indicator-Jones MTF Scanner
// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//@version=5
strategy('MTF RSI & STOCH Strategy🚥 by kzi', overlay=false,initial_capital=100, currency=currency.USD, commission_value=0.01, commission_type=strategy.commission.percent)


// Pair list
var string GRP1       = '══════════    General    ══════════'
overbought = input.int(80, 'Overbought Level', minval=1, group=GRP1)
oversold = input.int(20, 'Oversold Level', minval=1, group=GRP1)


/// Timeframes
var string GRP2       = '══════════   Timeframes   ══════════'
timeframe1 = input.timeframe(title="Timeframe 1", defval="W", group=GRP2)
timeframe2 = input.timeframe(title="Timeframe 2", defval="D", group=GRP2)
timeframe3 = input.timeframe(title="Timeframe 3", defval="240", group=GRP2)
timeframe4 = input.timeframe(title="Timeframe 4", defval="60", group=GRP2)

// RSI settings
var string GRP3       = '══════════   RSI settings   ══════════'
rsiLength = input.int(14, minval=1, title='RSI length', group=GRP3)
rsiSource = input(close, 'RSI Source', group=GRP3)
rsioverbought = input.int(70, 'RSI Overbought Level', minval=1, group=GRP3)
rsioversold = input.int(30, 'RSI Oversold Level', minval=1, group=GRP3)


/// Get RSI values of each timeframe /////////////////////////////////////////////////////
rsi = ta.rsi(rsiSource, rsiLength)
callRSI(id,timeframe) =>
    rsiValue = request.security(id, str.tostring(timeframe), rsi, gaps=barmerge.gaps_off)
    rsiValue

RSI_TF1 = callRSI(syminfo.tickerid, timeframe1)
RSI_TF2 = callRSI(syminfo.tickerid, timeframe2)
RSI_TF3 = callRSI(syminfo.tickerid, timeframe3)
RSI_TF4 = callRSI(syminfo.tickerid, timeframe4)




/////// Calculate Averages /////////////////////////////////////////////////////////////////
calcAVG(valueTF1, valueTF2, valueTF3, valueTF4) =>
    math.round((valueTF1 + valueTF2 + valueTF3 + valueTF4) / 4, 2)

AVG=calcAVG(RSI_TF1, RSI_TF2, RSI_TF3, RSI_TF4)



// Stochastic settings
var string GRP4       = '══════════   Stochastic settings   ══════════'
periodK = input.int(14, '%K length', minval=1, group=GRP4)
smoothK = input.int(3, 'Smooth K', minval=1, group=GRP4)
stochSource = input(close, 'Stochastic Source', group=GRP4)
stochoverbought = input.int(70, 'Stochastic Overbought Level', minval=1, group=GRP4)
stochoversold = input.int(30, 'Stochastic Oversold Level', minval=1, group=GRP4)


/// Get Stochastic values of each timeframe ////////////////////////////////////////////////
stoch = ta.sma(ta.stoch(stochSource, high, low, periodK), smoothK)
getStochastic(id,timeframe) =>
    stochValue = request.security(id, str.tostring(timeframe), stoch, gaps=barmerge.gaps_off)
    stochValue

Stoch_TF1 = getStochastic(syminfo.tickerid, timeframe1)
Stoch_TF2 = getStochastic(syminfo.tickerid, timeframe2)
Stoch_TF3 = getStochastic(syminfo.tickerid, timeframe3)
Stoch_TF4 = getStochastic(syminfo.tickerid, timeframe4)


AVG_STOCH=calcAVG(Stoch_TF1, Stoch_TF2, Stoch_TF3, Stoch_TF4)


plot(AVG, color = color.blue, title='RSI')
plot(AVG_STOCH, color = color.yellow,title='STOCH')
hline(rsioverbought,color=color.red)
hline(rsioversold, color=color.lime)
hline(50, color=color.white)

//============ signal Generator ==================================//

if AVG <= rsioversold and AVG_STOCH <=stochoversold 
    strategy.entry('Buy_Long', strategy.long)

    
strategy.close("Buy_Long",when=(AVG_STOCH >=70 and AVG >=50 and close >=strategy.position_avg_price),comment="Long_OK")

if AVG >=rsioverbought and AVG_STOCH >=stochoverbought
    strategy.entry('Buy_Short', strategy.short)


strategy.close("Buy_Short",when=(AVG_STOCH <=30 and AVG <=50 and close <=strategy.position_avg_price),comment="Short_OK")


///////////////////////////////////////////////////////////////////////////////////////////





Mehr