Diese Strategie erzeugt Handelssignale basierend auf dem goldenen Kreuz und dem toten Kreuz von gleitenden Durchschnitten mit verschiedenen Zyklen.
Die Strategie berechnet zunächst die mittelfristigen und kurzfristigen gleitenden Durchschnitte, ma1 und ma2, des Preises, wobei ma1 einen kürzeren Zyklus und ma2 einen längeren Zyklus hat. Dann berechnet sie die Differenz zwischen ma1 und ma2 als ma3 und berechnet weiter den glatten gleitenden Durchschnitt ma4 von ma3. Wenn ma3 über ma4 nach oben kreuzt, wird ein Kaufsignal generiert. Wenn es nach unten kreuzt, wird ein Verkaufssignal generiert.
Ma3 spiegelt somit den mittelfristigen Kurstrend wider und ma4 filtert etwas Rauschen von ma3 ab, um ein zuverlässigeres Handelssignal zu bilden.
Zu den Vorteilen dieser Strategie gehören:
Diese Strategie birgt auch einige Risiken:
Die Strategie kann aus folgenden Gesichtspunkten optimiert werden:
Die Strategie erzeugt Handelssignale auf der Grundlage des goldenen Kreuzes und des toten Kreuzes der gleitenden Durchschnitte. Durch die Verwendung von ALMA und Multi-Cycle-Preisdurchschnittswerte werden die Signale genauer und zuverlässiger. Die anpassbaren Parameter machen sie weit verbreitet. Außerdem ist die Logik einfach und klar und funktioniert gut in Trending-Märkten. Daher hat sie einen hohen praktischen Wert.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Oracle Move Strategy", overlay=true) maLen = input(30, "ma period") mode = input(defval="wma", options=["alma", "ema", "wma"]) price = close ma(src, len) => mode=="alma" ? alma(src, len, 0.85, 6) : mode=="ema"? ema(src, len) : wma(src, len) ma1 = ma(price, floor(maLen / 2)) ma2 = ma(price, maLen) ma3 = 2.0 * ma1 - ma2 ma4 = ma(ma3, floor(sqrt(maLen))) //plot(ma1, color = red) //plot(ma2, color = green) plot(ma3, color = blue) plot(ma4, color = orange) mafast = ma3 maslow = ma4 if (crossover(mafast, maslow)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") if (crossunder(mafast, maslow)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)