Diese Strategie ist eine quantitative Handelsstrategie, die auf dem Prinzip des doppelten gleitenden Durchschnitts-Crossovers basiert. Die Strategie erzeugt Kaufsignale, wenn die kurzfristige SMA über die langfristige SMA überschreitet, und erzeugt Verkaufssignale, wenn die kurzfristige SMA unter die langfristige SMA überschreitet.
Das Kernprinzip dieser Strategie besteht darin, Veränderungen in den Preistrends zu erfassen, indem die Crossover-Beziehung zwischen gleitenden Durchschnitten verschiedener Perioden genutzt wird. Der gleitende Durchschnitt ist ein allgemein verwendeter technischer Indikator, der kurzfristige Schwankungen ausfiltert und den Gesamtpreistendenz widerspiegelt, indem die Preise über einen vergangenen Zeitraum durchschnittlich berechnet werden. Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt überschreitet, zeigt er an, dass der Preis einen Aufwärtstrend starten kann, der ein Kaufsignal erzeugt; umgekehrt, wenn der kurzfristige gleitende Durchschnitt unter den langfristigen gleitenden Durchschnitt überschreitet, zeigt er an, dass der Preis einen Abwärtstrend beginnen kann, der ein Verkaufssignal erzeugt.
Die SMA-Doppel-Durchschnitts-Crossover-Strategie ist eine einfache, leicht verständliche und sehr anpassungsfähige quantitative Handelsstrategie. Durch die Nutzung der Crossover-Beziehung von gleitenden Durchschnitten mit verschiedenen Perioden kann die Strategie effektiv Veränderungen der Preisentwicklung erfassen und Kauf- und Verkaufssignale für Händler bereitstellen. Allerdings kann die Leistung der Strategie für die Parameterwahl empfindlich sein und kann häufige Handels- und Verzögerungseffekte erzeugen, wenn der Markt sehr volatil ist. Um die Strategie weiter zu optimieren, können Maßnahmen wie die Einführung anderer technischer Indikatoren, die Optimierung der Parameterwahl, das Hinzufügen von Filterbedingungen, die dynamische Anpassung von Parametern und das Einbeziehen von Risikomanagement in Betracht gezogen werden. Insgesamt kann diese Strategie als eine der grundlegenden Strategien für den quantitativen Handel dienen, muss jedoch entsprechend spezifischen Situationen in der Anwendung angemessen optimiert und verbessert werden
/*backtest start: 2023-06-01 00:00:00 end: 2024-06-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy with Date Range and Timeframe", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.USD, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0) // Define the lengths for the short and long SMAs shortSMA_length = input.int(50, title="Short SMA Length", minval=1) longSMA_length = input.int(200, title="Long SMA Length", minval=1) // Define the start and end dates for the backtest startDate = input(timestamp("2024-06-01 00:00"), title="Start Date") endDate = input(timestamp("2024-06-05 00:00"), title="End Date") // Define the timeframe for the SMAs smaTimeframe = input.timeframe("D", title="SMA Timeframe") // Request the short and long SMAs from the selected timeframe dailyShortSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, shortSMA_length)) dailyLongSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, longSMA_length)) // Plot the SMAs on the chart plot(dailyShortSMA, color=color.blue, title="Short SMA") plot(dailyLongSMA, color=color.red, title="Long SMA") // Define the crossover conditions based on the selected timeframe SMAs buyCondition = ta.crossover(dailyShortSMA, dailyLongSMA) sellCondition = ta.crossunder(dailyShortSMA, dailyLongSMA) // Generate buy and sell signals only if the current time is within the date range if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.close("Buy") // Optional: Add visual buy/sell markers on the chart plotshape(series=buyCondition and (time >= startDate and time <= endDate), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellCondition and (time >= startDate and time <= endDate), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")