
Die Strategie ist eine quantitative Handelsstrategie, die auf dem Prinzip der doppelten Gleichgewichtskreuzung basiert. Die Strategie erzeugt ein Kaufsignal, wenn ein langfristiger SMA über einem kurzfristigen SMA und ein Verkaufssignal, wenn ein langfristiger SMA unter einem kurzfristigen SMA durchläuft, indem sie einen einfachen Moving Average (SMA) für zwei verschiedene Perioden berechnet. Der Strategiecode enthält auch die Einstellungen für die Datums- und Zeiträume, so dass die Strategie flexibel zurückgemessen und optimiert werden kann.
Der Kern der Strategie besteht darin, die Wechselbeziehungen zwischen den beweglichen Durchschnitten verschiedener Perioden zu nutzen, um die Veränderungen in der Preisentwicklung zu erfassen. Die beweglichen Durchschnitte sind ein häufig verwendeter technischer Indikator, der die Gesamtentwicklung der Preise reflektiert, indem er die Preise in der Vergangenheit durchschnittet.
Die SMA-Doppel-Even-Linien-Kreuzung ist eine einfache, verständliche und anpassungsfähige Quantifizierungs-Handelsstrategie. Durch die Nutzung der Kreuzung von verschiedenen periodischen Moving Averages kann die Strategie die Veränderungen der Preistrends effektiv erfassen und den Händlern Kauf- und Verkaufssignale geben. Die Strategie kann jedoch auf die Parameterwahl sensibel sein und kann bei großer Marktfluktuation zu häufigen Geschäften und Lagerungseffekten führen.
/*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")