Trendfolgende Umkehrstrategie basierend auf MACD und RSI


Erstellungsdatum: 2023-12-18 17:53:38 zuletzt geändert: 2023-12-18 17:53:38
Kopie: 0 Klicks: 660
1
konzentrieren Sie sich auf
1621
Anhänger

Trendfolgende Umkehrstrategie basierend auf MACD und RSI

Überblick

Die Strategie kombiniert die drei Indikatoren MACD, EMA und RSI, um Trends zu verfolgen und umzukehren. Sie erzeugt ein Kaufsignal, wenn der MACD nach oben über die Signallinie geht und der Schlusskurs über der EMA-Mittellinie liegt. Sie erzeugt ein Verkaufsignal, wenn der MACD nach unten über die Signallinie fällt und der Schlusskurs unter der EMA-Mittellinie liegt, um den Trend zu erfassen.

Strategieprinzip

  1. Berechnen Sie MACDdiffs und EMAs.
   fastMA = ema(close, fast)  
   slowMA = ema(close, slow)
   macd = fastMA - slowMA
   signal = sma(macd, 9)
   ema = ema(close, input(200))
  1. Erzeugt ein Kaufsignal: MACD-Differenz ((macd-signal) über der 0-Achse, und der Schlusskurs liegt über der EMA-Mittellinie.
   delta = macd - signal 
   buy_entry= close>ema and delta > 0
  1. Erzeugt ein Verkaufssignal: MACD-Differenz unter der 0-Achse und Schlusskurs unter der EMA-Durchschnittslinie.
   sell_entry = close<ema and delta<0 
  1. Wenn der RSI in eine Überkauf-Überverkaufszone eintritt, wird ein Umkehrhandel durchgeführt.
   if (rsi > 70 or rsi < 30)
       reversal := true

Analyse der Stärken

  1. In Kombination mit Trend-Tracking und Reversal-Trading kann sowohl der Haupttrend verfolgt werden, als auch an den Reversalpunkten profitiert werden.
  2. Die MACD wird verwendet, um die Richtung der wichtigsten Trends zu bestimmen und falsche Durchbrüche zu vermeiden.
  3. Die EMA filtert die Geräusche.
  4. Der RSI-Indikator beurteilt die Wendepunkte und erhöht die Gewinnspanne der Strategie.

Risikoanalyse

  1. In einem Trendmarkt kann ein Umkehrhandel zu Verlusten führen.
  2. Die falsche Einstellung der Parameter erhöht die Häufigkeit der Transaktionen und die Kosten für die Gleitpunkte.
  3. Die Umkehrung kann verzögert werden, so dass die optimale Einstiegszeit verpasst wird.

Die Lösung:

  1. Optimierung der Parameter, um die optimale Kombination von Parametern zu finden.
  2. RSI-Temperature für den Umkehrhandel entsprechend angepasst.
  3. Erwägen Sie die Einführung von Stop Losses zur Verlustkontrolle.

Optimierungsrichtung

  1. Die EMA-Durchschnittsparameter für verschiedene Längen werden getestet.
  2. Optimierung von MACD-Parametern, um die beste Kombination zu finden.
  3. Verschiedene Umkehr-RSI-Termins werden getestet.
  4. Erwägen Sie, andere Indikatoren zu kombinieren.

Zusammenfassen

Die Strategie nutzt die MACD-, EMA- und RSI-Indikatoren, um eine organische Kombination aus Trendverfolgung und Reversing-Trading zu realisieren. Die MACD beurteilt die Haupttrendrichtung, die EMA-Wellenlärm und die RSI-Indikatoren erfassen die Reversing-Punkte. Diese Kombination von mehreren Indikatoren ermöglicht eine genauere Beurteilung der Marktentwicklung und erhöht die Gewinnwahrscheinlichkeit bei gleichzeitiger Verringerung von Fehlhandlungen.

Strategiequellcode
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 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/
// © mbuthiacharles4

//Good with trending markets
//@version=4
strategy("CHARL MACD EMA RSI")

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)

ema = ema(close, input(200))

rsi = rsi(close, input(14))
//when delta > 0  and close above ema buy

delta = macd - signal

buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0 
var bought = false
var sold = false
var reversal = false
if (buy_entry and bought == false and rsi <= 70) 
    strategy.entry("Buy",true , when=buy_entry)
    bought := true
    
strategy.close("Buy",when= delta<0 or rsi > 70)
if (delta<0 and bought==true)
    bought := false

//handle sells

if (sell_entry and sold == false and rsi >= 30)
    strategy.entry("Sell",false , when=sell_entry)
    sold := true

strategy.close("Sell",when= delta>0 or rsi < 30)
if (delta>0 and sold==true)
    sold := false
    
if (rsi > 70 or rsi < 30)
    reversal := true
    placing = rsi > 70 ? high :low
    label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny)
if (reversal == true)
    if (rsi < 70 and sold == false and delta < 0)
        strategy.entry("Sell",false , when= delta < 0)
        sold := true
        reversal := false
    else if (rsi > 30 and bought == false and delta > 0)
        strategy.entry("Buy",true , when= delta > 0)
        bought := true
        reversal := false