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.
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.
Die Optimierungsrichtung:
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.
Die doppelte EMA-Crossover-Handelsstrategie verwendet zwei EMA-Linien unterschiedlicher Perioden, um Kauf- und Verkaufssignale zu generieren, indem die Trendrichtung ermittelt wird.
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.
Verbesserungsrichtlinien:
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")