Doppelte EMA-Crossover-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-16 16:24:00
Tags:

img

Übersicht

Die Double EMA-Breakthrough-Trading-Strategie ist eine Trend-Tracking-Strategie, bei der die Verkaufssignale anhand von zwei unterschiedlichen EMA-Mainlinen aus verschiedenen Perioden beurteilt werden. Die Strategie kombiniert zusätzliche EMA-Indikatoren zur Handelssignalfilterung, um bessere Eintrittszeiten in den Trendmarkt zu erhalten.

Grundsätze

Die Strategie verwendet die Golden Fork EMA (neunzyklisch) und EMA (zwanzigzyklisch) der schnellen Linie, um den Zeitpunkt des Kaufs und Verkaufs zu bestimmen. Es wird ein Kaufsignal erzeugt, wenn die langsame Linie auf der schnellen Linie durchläuft, und ein Verkaufssignal, wenn die langsame Linie unterhalb der schnellen Linie durchläuft. Um falsche Signale zu filtern, wird auch eine unterstützende EMA (fünfzyklisch) und zwei weitere EMA (einzyklisch, vierzyklisch) eingeführt.

Wenn ein Handelssignal ausgelöst wird, setzt die Strategie die Stop-Loss- und Stop-Trop-Positionen nach dem ATR-Wert ein. TP1 ist 6 mal so hoch wie ATR und wird verwendet, um einen Teil des Profits aus der schnelleren Geschwindigkeit zu gewinnen. Wenn der Preis kein TP1 auslöst, wird die Position direkt abgeflacht, wenn die Schnellen-EMA die Hilfs-EMA erneut überschreitet, um einen TP2-Stopp zu erzielen.

Vorteile

  • Mit einer Kombination von doppelten EMA-Filtern kann die Qualität der Handelssignale verbessert werden.
  • Zusätzliche EMA-Indikatoren können die Trendrichtung weiter bestätigen und das Risiko einer Umkehrung reduzieren
  • Dual-Stop-Profit-Design, das sowohl schnelle als auch nachhaltige Gewinntrends verfolgt
  • Die ATR-Dynamic Stop Loss Brake kann entsprechend der Marktfluktuation angepasst werden, um das Risiko zu reduzieren

Risiken und Optimierungen

  • EMA-Indikatoren können leicht zu Kurvenanpassung führen und Handelssignale können sich verzögern.
  • Eine Kombination aus kurzen EMA-Zyklen könnte mehr Noise-Trading-Signale erzeugen.
  • Kurzstreckenoperationen sind anfällig für Notfälle und haben ein höheres Risiko für Verluste.

Die Optimierungsrichtung:

  • Versuchen Sie mehrere EMA-Parameterkombinationen, um nach optimalen Parametern zu suchen
  • Hinzufügen von anderen Kennzahlen, wie Handelsvolumen, Volatilität usw.
  • Entsprechende Lockerung des Stop-Loss-Rahmens, um die Wahrscheinlichkeit zu reduzieren, dass ein Stop-Loss ausgelöst wird
  • Optimierung der Doppelstopp-Anlagequote, Balance zwischen Gewinngeschwindigkeit und Effizienz der Kapitalverwendung

Zusammenfassung

Die doppelte EMA-Breakthrough-Trading-Strategie nutzt die Kreuzung der beiden EMAs für die Trendbestimmung, ergänzt durch mehrere EMA-Filter und ATR-Dynamic Stop-Loss, um Trendgewinne effektiv zu verfolgen. Allerdings müssen Probleme wie EMA-Kurvanstimmung, Stopp-Loss-Risiken beachtet werden. Durch Maßnahmen wie Parameteroptimierung, Risikomanagement und andere Maßnahmen kann eine stabilere Handelsperformance erreicht werden.

Übersicht

Die doppelte EMA-Crossover-Handelsstrategie verwendet zwei EMA-Linien unterschiedlicher Perioden, um Kauf- und Verkaufssignale zu generieren, indem die Trendrichtung ermittelt wird.

Grundsätze

Die Strategie verwendet eine schnelle EMA-Linie (9 Perioden) und eine langsame EMA-Linie (21 Perioden) zur Bestimmung von Einträgen. Ein goldenes Kreuz, bei dem die schnelle EMA über die langsame EMA kreuzt, erzeugt ein Kaufsignal, während ein Todeskreuz mit der schnellen EMA, die unter der langsamen EMA kreuzt, ein Verkaufssignal erzeugt. Um falsche Signale auszufiltern, verwendet die Strategie auch eine Hilfs-EMA (5 Perioden) und zwei weitere EMAs (1 Periode, 4 Perioden). Ein echtes Handelssignal wird nur ausgelöst, wenn die schnellen und langsamen EMAs kreuzen, während die Hilfs-EMA zwischen den beiden liegt, und die 1-Perioden-EMA über der 4-Perioden-EMA liegt.

Wenn ein Handelssignal ausgelöst wird, nutzt die Strategie die ATR-Werte, um Stop Loss- und Profitniveaus festzulegen. TP1 wird auf 6 x ATR für eine schnellere Gewinnentnahme festgelegt. Wenn der Preis nicht TP1 erreicht, schließt die Strategie die Position direkt, wenn die schnelle EMA die Hilfs-EMA zurück überquert und TP2 realisiert.

Vorteile

  • Dual EMA-Design filtert falsche Signale und verbessert die Signalqualität
  • Hilfs-EMA fügt Trendrichtungskontrolle hinzu und verringert umgekehrte Handelsrisiken
  • Die doppelte Gewinnentnahme ermöglicht schnelle Gewinne und einen anhaltenden Trend nach
  • Dynamische ATR-Stop-Loss-/Take-Profit-Anpassungen an die Marktvolatilität

Risiken und Verbesserungen

  • EMAs können die Preise hinterherhalten und verspätete Signale erzeugen
  • Kürzere EMA-Kombinationen können mehr Lärm erzeugen
  • Stärkere Stopps sind mit größeren plötzlichen Ereignisrisiken konfrontiert

Verbesserungsrichtlinien:

  • Versuche mehrere EMA-Kombinationen für bessere Parameter
  • Hinzufügen anderer Bestätigungsindikatoren wie Volumen, Volatilität usw.
  • Vergrößern Sie den Stop-Loss, um die Stop-Out-Quoten zu senken
  • Optimieren Sie die Gewinnquote für Gewinn gegenüber Kapitaleffizienz

Schlussfolgerung

Die doppelte EMA-Crossover-Strategie nutzt EMA-Kreuzungen für die Trendrichtung, zusammen mit mehrfacher EMA-Filterung und dynamischer ATR-Stop-Loss/Profit-Taking. Dies ermöglicht eine effektive Trendverfolgung und Gewinngewinnung. Allerdings erfordern EMA-Fitting-Beschränkungen und Stop-Loss-Risiken Vorsicht. Richtige Optimierung, Risikomanagement usw. können zu einer robusteren Performance führen. Die Strategie eignet sich für erfahrene Trader, um eine hohe Kapitaleffizienz in Trendmärkten zu erreichen.

[/trans]


/*backtest
start: 2022-10-09 00:00:00
end: 2023-04-13 00:00:00
period: 1d
basePeriod: 1h
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/
// @author ADHDCRYPT0

//@version=4
strategy(title = "EMA double crossover", shorttitle = "(TEST) double cross over", overlay = true, default_qty_value = 100, initial_capital = 1000,default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true)


// Variables
ema_len1 = input(9 , title="Fast EMA")
ema_len2 = input(21, title="Slow EMA")
ema_len3 = input(5, title="Exit EMA")
ema_len4 = input(1, title="FastConf EMA")
ema_len5 = input(4, title="SlowConf EMA")

fastEMA = ema(open, ema_len1)
slowEMA = ema(open, ema_len2)
exitEMA = ema(open, ema_len3)
conf1EMA = ema(open, ema_len4)
conf2EMA = ema(open, ema_len5)
plot(fastEMA, title='fastEMA', transp=0, color=color.green)
plot(slowEMA, title='slowEMA', transp=0, color=color.red  )
plot(exitEMA, title='exitEMA', transp=0, color=color.orange)
plot(conf1EMA, title='conf1EMA', transp=0, color=color.blue)
plot(conf2EMA, title='conf2EMA', transp=0, color=color.black)

vol = volume 
volma = sma(volume,7)
vol_cond = vol>volma

atr = atr(5)


// Entry Conditions and vol_cond
long = crossover(fastEMA, slowEMA) and (conf1EMA > conf2EMA) and (fastEMA < exitEMA)
short= crossunder(fastEMA, slowEMA) and (conf1EMA < conf2EMA) and (fastEMA > exitEMA)

tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])

pos = 0.0

if tradeType=="BOTH"
    pos:= long? 1 : short? -1 : pos[1]
if tradeType=="LONG"
    pos:= long? 1 : pos[1]
if tradeType=="SHORT"
    pos:=short? -1 : pos[1]

longCond  = long  and (pos[1]!= 1 or na(pos[1]))
shortCond = short and (pos[1]!=-1 or na(pos[1]))

// EXIT FUNCTIONS //
sl  = input(1, title="Stop Loss (ATR)", minval=0)
tp  = input(6, title="Take Profit 1 (ATR)", minval=0)

// Simple Stop Loss + 2 Take Profits
sl_long   =  valuewhen(longCond , low - atr * sl, 0)
sl_short  =  valuewhen(shortCond, high+ atr * sl, 0)

tp_long  = valuewhen(longCond , high + atr * tp, 0)
tp_short = valuewhen(shortCond, low  - atr * tp, 0)


long_exit = crossover(fastEMA, exitEMA) and pos[1]==1
short_exit= crossover(exitEMA, fastEMA) and pos[1]==-1

if long_exit or short_exit
	pos:=0


// Position Adjustment
long_sl  = low <sl_long [1] and pos[1]==1
short_sl = high>sl_short[1] and pos[1]==-1

if long_sl or short_sl
    pos:=0
    
//  Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("01 Sep 2002 13:30 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("30 Sep 2099 19:30 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true


// Make sure we are within the bar range, Set up entries and exit conditions
if strategy.equity >0
    strategy.entry("long" , strategy.long , when=longCond  and timeCond and tradeType!="SHORT" , alert_message="INSERT MESSAGE HERE")
    strategy.entry("short", strategy.short, when=shortCond and timeCond and tradeType!="LONG" , alert_message="INSERT MESSAGE HERE")
    
    strategy.exit("SL/TP1", from_entry = "long" , stop=sl_long , limit=tp_long , alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL/TP1", from_entry = "short", stop=sl_short, limit=tp_short, alert_message="INSERT MESSAGE HERE")

    strategy.exit("SL", from_entry = "long" , stop=sl_long, alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL", from_entry = "short", stop=sl_short, alert_message="INSERT MESSAGE HERE")
    
    strategy.close("long", when=long_exit , comment="TP2", alert_message="INSERT MESSAGE HERE")
    strategy.close("short", when=short_exit, comment="TP2", alert_message="INSERT MESSAGE HERE")


Mehr