MACD- und RSI-basierter Trend nach Umkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-18 17:53:38
Tags:

img

Übersicht

Diese Strategie kombiniert MACD-, EMA- und RSI-Indikatoren, um Trendfolgen und Umkehrhandel umzusetzen. Sie erzeugt Kaufsignale, wenn der MACD durch die Signallinie steigt und der Schlusskurs über der EMA liegt; und Verkaufssignale, wenn der MACD unter die Signallinie fällt und der Schlusskurs unter der EMA liegt, um Trends zu erfassen. In der Zwischenzeit handelt sie um Umkehrungen, wenn der RSI überkaufte oder überverkaufte Niveaus erreicht.

Strategie Logik

  1. Berechnen Sie MACD-Differenzen und EMA.

    fastMA = ema(close, fast)
    slowMA = ema(close, slow) 
    macd = fastMA - slowMA
    signal = sma(macd, 9)
    ema = ema(close, input(200))
    
  2. Kaufsignal erzeugen: Der MACD-Diff (macd - Signal) geht über 0 und der Schlusskurs liegt über der EMA.

    delta = macd - signal
    buy_entry= close>ema and delta > 0 
    
  3. Erzeugen Sie ein Verkaufssignal: Der MACD-Diff unter 0 fällt und der Schlusskurs liegt unter der EMA.

    sell_entry = close<ema and delta<0
    
  4. Handelsumkehrungen, wenn der RSI überkauft oder überverkauft ist.

    if (rsi > 70 or rsi < 30)
        reversal := true
    

Analyse der Vorteile

  1. Kombination von Trendfolgen und Umkehrhandel, um sowohl von Trends als auch von Umkehrungen zu profitieren.
  2. Verwenden Sie den MACD, um Trendrichtungen zu beurteilen und falsche Ausbrüche zu vermeiden.
  3. Filtern Sie Lärm mit EMA.
  4. Erhöhung der Rentabilität mit RSI für Umkehrtrades.

Risikoanalyse

  1. Umkehrgeschäfte können bei starken Markttrends Verluste verursachen.
  2. Eine unsachgemäße Einstellung der Parameter kann die Handelsfrequenz und die Kosten für Schlüpfen erhöhen.
  3. Umkehrsignale können etwas verzögert sein, da die besten Einstiegspreise fehlen.

Lösungen:

  1. Optimieren Sie die Parameter, um die beste Kombination zu finden.
  2. Richten Sie die Umkehrungs-RSI-Schwellenwerte ordnungsgemäß an.
  3. Überlegen Sie, ob Sie einen Stop-Loss zu den Kontrollverlusten hinzufügen.

Optimierungsrichtlinien

  1. Testen Sie die EMA-Länge.
  2. Optimieren Sie die MACD-Parameter.
  3. Versuche verschiedene RSI-Umkehrschwellen.
  4. Überlegen Sie, ob Sie es mit anderen Indikatoren kombinieren.

Zusammenfassung

Diese Strategie kombiniert MACD, EMA und RSI, um den Trend folgend und Umkehrhandel organisch umzusetzen. MACD beurteilt Trendrichtungen, EMA filtert Lärm und RSI erfasst Umkehrpunkte. Eine solche Kombination aus mehreren Indikatoren kann Marktbewegungen besser bestimmen, die Rentabilität verbessern und gleichzeitig falsche Signale reduzieren. Parameteroptimierung und Stop-Loss-Management könnten weiter verbessert werden, um unnötige Verluste zu reduzieren. Insgesamt ist dies ein solider Strategierahmen mit Potenzial für stetige Gewinne.


/*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



Mehr