Diese Strategie ist ein Handelssystem, das auf mehreren exponentiellen gleitenden Durchschnitten (EMA) basiert, die EMAs verschiedener Perioden mit einem auf ATR basierenden dynamischen Stop-Loss-Mechanismus kombinieren.
Die Kernlogik basiert auf mehreren EMA-Kreuzungen und Trendbestätigung. Ein langes Signal wird erzeugt, wenn die kurzfristige EMA (10-Periode) über die mittelfristige EMA (39-Periode) überschreitet und der Preis sowohl über die langfristige EMA (73-Periode) als auch über den höheren Zeitrahmen EMA (143-Periode) liegt. Umgekehrt wird ein kurzes Signal erzeugt, wenn die kurzfristige EMA unter die mittelfristige EMA überschreitet und der Preis unter beiden längerfristigen EMA liegt. Die Strategie implementiert ein Risiko-Rendite-Verhältnis von 1:2 mit 1x ATR für Stop-Loss und 2x ATR für Take-Profit-Ziele.
Diese Strategie baut ein Handelssystem auf, das Trendverfolgung und Risikomanagement durch mehrere EMA-Kreuzungen und ATR-basierte dynamische Stopps kombiniert. Seine Hauptstärken liegen in mehreren Zeitrahmenbestätigungsmechanismen und dynamischem Positionsmanagement, wobei die unterschiedlichen Markt- und Verzögerungsrisiken berücksichtigt werden. Die Stabilität und Rentabilität der Strategie kann durch Volumenbestätigung, Trendstärkefilterung und andere Optimierungen weiter verbessert werden. In der Praxis sollten Parameter entsprechend verschiedenen Marktumgebungen und Handelsinstrumenten angepasst werden.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced EMA Crossover Strategy", overlay=true) // Define the EMA lengths ema_short_length = 10 ema_long_length = 39 ema_filter_length = 73 ema_higher_tf_length = 143 // Calculate the EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) ema_filter = ta.ema(close, ema_filter_length) ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length)) // Calculate ATR for volatility-based stop loss and take profit atr_length = 14 atr = ta.atr(atr_length) // Plot the EMAs plot(ema_short, title="EMA 10", color=color.blue) plot(ema_long, title="EMA 35", color=color.red) plot(ema_filter, title="EMA 75", color=color.orange) plot(ema_higher_tf, title="EMA Higher TF", color=color.purple) // EMA crossover conditions with EMA 75 and higher timeframe EMA filter longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf // Execute long trade with dynamic stop loss and take profit if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr) // Execute short trade with dynamic stop loss and take profit if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr) // Plot signals on the chart plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")