Diese Strategie optimiert die konventionelle gleitende Durchschnitts-Crossover-Strategie, indem sie drei gleitende Durchschnitte mit verschiedenen Perioden setzt und ein goldenes Kreuzmuster mit 9-Perioden-, 50-Perioden- und 100-Perioden-Gleibenden Durchschnitten erstellt. Sie erzeugt Kaufsignale, wenn der kurzfristige MA über den mittelfristigen MA überschreitet, während der langfristige MA im Aufwärtstrend ist.
Die Strategie verwendet drei gleitende Durchschnitte mit Perioden von 9, 50 und 100. Der 9-Perioden-MA ist der kurzfristige MA, der 50-Perioden-MA ist der mittelfristige MA und der 100-Perioden-MA ist der langfristige MA. Handelssignale werden durch das Crossover zwischen dem kurzfristigen MA und dem mittelfristigen MA erzeugt. Insbesondere, wenn der langfristige MA in einem Aufwärtstrend (über dem mittelfristigen MA) ist, wird ein Kaufsignal ausgelöst, wenn der kurzfristige MA über den mittelfristigen MA überschreitet. Ein Verkaufssignal wird ausgelöst, wenn der kurzfristige MA unter den mittelfristigen MA überschreitet.
Im Vergleich zur herkömmlichen Doppel gleitenden Durchschnitts-Crossover-Strategie fügt diese Strategie die Bedingung hinzu, mittelfristige und langfristige Trends zu beurteilen, bevor Handelssignale generiert werden, was einige ungültige Signale effektiv herausfiltern kann. Wenn langfristige Trends unklar sind, wird die Strategie keine Signale generieren, um eine Konsolidierung zu vermeiden. Gleichzeitig eignet sich diese Strategie zur Erfassung von Trendbewegungen auf kurze und mittlere Sicht und reduziert die Möglichkeit eines aggressiven Eintrags.
Bei der Festlegung von Parametern für diese Strategie muss die Kombination von gleitenden Durchschnittsperioden angepasst werden. Verschiedene Periodenkombinationen haben Auswirkungen auf die Wirksamkeit der Strategie. Wenn die Periodenparameter nicht richtig festgelegt werden, besteht die Gefahr, dass zu viele falsche Signale generiert werden. Darüber hinaus müssen sich Händler der potenziellen systemischen Risiken bewusst sein und Verluste rechtzeitig stoppen, um Risiken zu mindern.
Es sollte in Erwägung gezogen werden, andere Indikatoren einzubeziehen, die bei der Beurteilung von Markttrends wie MACD, BOLL usw. helfen, und strengere Einstiegsbedingungen festzulegen oder Volatilitätsindikatoren einzubeziehen, um adaptive gleitende Durchschnitte zu konstruieren, damit sich die Parameter automatisch anhand der Marktbedingungen anpassen können, um die Strategie weiter zu optimieren.
Diese Strategie basiert auf dem herkömmlichen Doppel gleitenden Durchschnitts-Crossover und fügt langfristige MA-Urteil und Filterbedingungen hinzu, die falsche Signale effektiv filtern können und für die Erfassung von kurz- bis mittelfristigen Trendbewegungen geeignet sind.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Input switch1=input(true, title="Enable Bar Color?") switch2=input(false, title="Show Fast Moving Average") switch3=input(true, title="Show Slow Moving Average") //Calculate Moving Averages movingaverage_fast = sma(close, input(9)) movingaverage_slow = sma(close, input(100)) movingaverage_normal= sma(close, input(50)) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculation bullish_cross = crossover(movingaverage_fast, movingaverage_normal) bearish_cross = crossunder(movingaverage_fast, movingaverage_normal) //Entry and Exit if bullish_cross and window() and movingaverage_slow > movingaverage_normal strategy.entry("long", strategy.long) strategy.close("long", when = bearish_cross and window()) // Colors bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue barcolor(switch1?bartrendcolor:na) // Output plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2) bgcolor(color = showDate and window() ? color.gray : na, transp = 90)