Galileo Galilei's gleitende Durchschnitts-Crossover-Strategie ist eine Handelsstrategie, die auf gleitenden Durchschnitten basiert. Sie erzeugt Handelssignale, indem sie den exponentiellen gleitenden Durchschnitt (EMA) über einen bestimmten Zeitraum berechnet und Crossovers zwischen der EMA und dem Preis vergleicht. Verkaufssignale werden erzeugt, wenn der Preis von oben nach unten unter die EMA fällt, während Kaufsignale auftreten, wenn der Preis von unten nach oben über die EMA bricht.
Der Kern der Strategie von Galileo Galilei liegt im exponentiellen gleitenden Durchschnitt (EMA).
EMA heute = (Schlusskurs heute × Glättungsfaktor) + (EMA gestern × (1 − Glättungsfaktor))
Bei dem Glättungsfaktor α = (2/(Periodenzahl + 1))
Die Strategie berechnet dynamisch die EMA basierend auf Benutzer-Eingabe-Periodenparametern.
Wenn der Preis von oben nach unten unter die EMA fällt, wird ein Verkaufssignal für den Short-Handel generiert.
Wenn der Preis von unten über die EMA bricht, wird ein Kaufsignal für den Long-Handel ausgelöst.
Die Strategie zeigt auch die EMA-Linie auf dem Diagramm zusammen mit Pfeilmarkern, die Kauf- und Verkaufssignale anzeigen.
Die Kreuzung der gleitenden Durchschnittswerte durch Galileo Galilei hat folgende Vorteile:
Zu den potenziellen Risiken dieser Strategie gehören:
Einige Möglichkeiten zur Optimierung der Strategie:
Einbeziehung anderer Indikatoren zur Konstruktion einer zusammengesetzten Strategie zur Erhöhung der Robustheit gegen falsche Signale.
Sie können auch einen Stop-Loss-Mechanismus wie Trailing-Stop-Loss oder einen prozentualen Stop-Loss hinzufügen, um den Betrag des Einzelhandelsverlusts zu kontrollieren.
Test EMAs mit verschiedenen Parameterkombinationen, um optimale Einstellungen zu finden.
Bewertung der Wiedereintrittslogik, um Rebounds nach anfänglichen Preisumkehrungen zu erfassen und die Rentabilität zu verbessern.
Der bewegliche Durchschnitts-Crossover von Galileo Galilei ist eine einfache, aber praktische Strategie mit klarer Logik und einfacher Bedienbarkeit. Er eignet sich für Anfänger im Quant-Handel. Mit kontinuierlichen Verbesserungen könnte seine Leistung im Laufe der Zeit immer überlegener werden.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 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/ // © armigoldman //@version=3 strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000) len = input(11, minval=1, title="Length") src = input(open, title="Source") out = ema(src, len) plot(out, title="EMA", color=yellow) //last8h = highest(close, 8) //lastl8 = lowest(close, 8) //plot(last8h, color=red, linewidth=2) //plot(lastl8, color=green, linewidth=2) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval=1, title="From Day", minval=1, maxval=31) fromMonth = input(defval=1, title="From Month", minval=1, maxval=12) fromYear = input(defval=2020, title="From Year", minval=1970) // To Date Inputs toDay = input(defval=1, title="To Day", minval=1, maxval=31) toMonth = input(defval=12, title="To Month", minval=1, maxval=12) toYear = input(defval=2021, title="To Year", minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true bearish = cross(close, out) == 1 and close[1] > close bullish = cross(close, out) == 1 and close[1] < close plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar) plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar) buy = if cross(close, out) == 1 and close[1] < close strategy.entry("BUY", strategy.long, when=time_cond) //strategy.close_all(when=bearish) // strategy.exit("exit", "Long", profit =, loss = 35) sell = if cross(close, out) == 1 and close[1] > close strategy.entry("SELL", strategy.short, when=time_cond) //sell = if bearish //strategy.close_all(when=bullish) // strategy.exit("exit", "Long", profit = bullish, loss = 100) profit = strategy.netprofit if not time_cond strategy.close_all() //plotshape(true, style=shape.triangleup, location=location.abovebar)