Ziel dieser Strategie ist es, potenzielle Trendumkehrpunkte zu identifizieren, indem die Überschneidung zwischen dem 20-Perioden-Exponential Moving Average (EMA) und dem 20-Perioden-Simple Moving Average (SMA) beobachtet wird.
Die Strategie verwendet die Crossover- und Crossunder-Funktionen aus der Ta-Bibliothek, um gleitende Durchschnitts-Crossovers zu erkennen.
Die Strategie vereint die Trendfolgekapazität der gleitenden Durchschnitte mit der Signalgenerierung von Crossover-Ereignissen und weist folgende Vorteile auf:
Die Strategie birgt außerdem folgende Risiken:
Lösungen:
Die Strategie kann auch in folgenden Bereichen verbessert werden:
Die Strategie ist relativ einfach und praktisch insgesamt und identifiziert durch die gleitende Durchschnitts-Crossover-Theorie potenzielle Trendumkehrpunkte. Aber es gibt auch Raum für Verbesserungen durch zusätzliche Indikatoren, dynamische Parameter, Stop-Losses, algorithmischen Handel usw., um die Strategie robuster, zuverlässiger und automatisierter zu machen. Zusammenfassend bietet sie eine gute Vorlage, um mit quantitativen Handel zu beginnen.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", overlay=true) // Define the length of the moving averages emaLength = 20 smaLength = 20 // Calculate moving averages emaValue = ta.ema(close, emaLength) smaValue = ta.sma(close, smaLength) // Buy condition buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue // Short sell condition sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue // Exit conditions for both Buy and Short sell exitBuyCondition = ta.crossunder(emaValue, smaValue) exitSellCondition = ta.crossover(emaValue, smaValue) // Strategy logic if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) if (exitBuyCondition) strategy.close("Buy") if (exitSellCondition) strategy.close("Sell") // Plot the moving averages plot(emaValue, color=color.blue, title="20 EMA") plot(smaValue, color=color.red, title="20 SMA")