3EMA mit stochastischer RSI-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-15 10:47:20
Tags:

img

Übersicht

Dies ist eine Trendfolgestrategie, die mehrere Indikatoren kombiniert. Es verwendet drei EMAs mit verschiedenen Perioden, Stochastic RSI und ATR, um die Trendrichtung zu identifizieren und Positionen zu etablieren. Es geht lang, wenn die schnellere EMA über die langsamere EMA überschreitet, wobei der Stop-Loss auf das Dreifache des jüngsten ATR-Wertes festgelegt wird und der Gewinn auf das Zweifache des jüngsten ATR-Wertes erzielt wird.

Grundsätze

Die Strategie verwendet drei EMA-Linien - 8-, 14- und 50-Perioden-EMA, die die Preisentwicklung über verschiedene Zeitrahmen darstellen.

Der Stochastische RSI-Indikator beinhaltet RSI und Stochastische Berechnungen zur Identifizierung von Überkauf/Überverkaufszuständen.

Die Strategie verwendet 3-mal ATR als Stop-Loss-Distanz und 2-mal ATR als Take-Profit-Distanz, um Gewinne zu erzielen und das Risiko zu kontrollieren.

Vorteile

  • EMAs filtern Lärm in den Preisdaten aus und identifizieren die Trendrichtung
  • Stochastischer RSI identifiziert Umkehrmöglichkeiten
  • Die ATR-Regelung wird dynamisch auf der Grundlage der Marktvolatilität angewandt.

Risiken

  • Mehrere Indikatoren können widersprüchliche Signale erzeugen
  • Festgelegte Stop-Loss-/Take-Profit-Verhältnisse können sich nicht an veränderte Marktbedingungen anpassen
  • Kurzfristige Longs, die anfällig für Umkehrungen sind

Die Optimierung kann durch Anpassung der EMA-Perioden zur Optimierung der Empfindlichkeit erfolgen. Die Anpassung der ATR-Verhältnisse ermöglicht eine Anpassung an die Marktbedingungen. Das Hinzufügen anderer Indikatoren hilft, Signale zu validieren und Fehler zu vermeiden.

Erweiterung

  • Anpassung der EMA-Perioden zur Optimierung der Empfindlichkeit
  • ATR-Verhältnisse anpassbar machen
  • Hinzufügen anderer Indikatoren, um falsche Signale zu vermeiden

Schlussfolgerung

Die Strategie berücksichtigt Trend, Überkauf/Überverkauft-Level und Volatilitätsbereich, um den Einstiegszeitpunkt zu identifizieren. EMAs und Stochastic RSI kombiniert effektiv Trends zu identifizieren, während ATRs dynamischer Stop-Loss/Take-Profit zur Risikokontrolle beiträgt. Mit Parameter-Tuning und Optimierungen kann die Strategie zu einem zuverlässigen Trendfolgensystem werden.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)

Mehr