Diese Strategie kombiniert Trend-Folgen mit einem zeitbasierten Exit-Mechanismus. Das Kernkonzept besteht darin, Markttrends zu erfassen, indem die Preisbeziehungen zum gleitenden 60-Tage-Durchschnitt überwacht und gleichzeitig ein Jahresende-Zwangsliquidationsmechanismus zur Risikokontrolle eingeführt wird. Long-Positionen werden eingegeben, wenn der Schlusskurs über den 60-Tage-MA mit einer positiven Steigung bricht und alle Positionen am letzten Handelstag jedes Jahres geschlossen werden.
Die Strategie beruht auf mehreren Kernpunkten: 1. Trendbestimmung: Verwendet einen 60-tägigen einfachen gleitenden Durchschnitt (SMA) als mittelfristigen Trendindikator, mit einer 14-tägigen Steigung berechnet, um die Trendrichtung zu bestätigen. 2. Eintrittssignal: Kaufsignale werden erzeugt, wenn der Preis mit einer positiven Steigung über den 60-Tage-MA bricht und einen potenziellen Aufwärtstrend anzeigt. 3. Exit-Mechanismus: Implementiert einen festgelegten zeitbasierten Exit, bei dem alle Positionen am letzten Handelstag jedes Jahres geschlossen werden, um die Risiken für die Position über das Jahr hinweg zu vermeiden. 4. Handelszeitmanagement: Einbezieht Datumsbereichskontrolle und Validierung des Handelstages, um sicherzustellen, dass die Geschäfte nur an gültigen Handelstagen erfolgen.
Diese Strategie schafft ein relativ robustes Handelssystem, indem sie Trendverfolgung mit Zeitmanagement kombiniert. Ihre einfache und klare Logik macht sie leicht zu verstehen und umzusetzen und bietet einen guten praktischen Nutzen. Mit entsprechender Parameteroptimierung und ergänzenden Risikokontrollmaßnahmen zeigt die Strategie das Potenzial, in realen Handelsbedingungen stabile Renditen zu erzielen.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 3m basePeriod: 3m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Buy above 60-day MA, Sell at year-end", overlay=true, pyramiding=1) // Define inputs for start and end dates startDate = input(defval=timestamp("2010-01-01"), title="Start Date") endDate = input(defval=timestamp("2024-12-31"), title="End Date") // Define 60-day moving average length = input.int(defval=60, title="MA Length", minval=1) ma = ta.sma(close, length) slope = ta.sma(ma, 14) - ta.sma(ma, 14)[1] // Check if current bar is within the specified date range withinDateRange = true // Function to check if a day is a trading day (Monday to Friday) isTradingDay(day) => true // Check if current bar is the last trading day of the year // Check if current bar is the last trading day of the year isLastTradingDayOfYear = false yearNow = year(time) if (month == 12 and dayofmonth == 31) isLastTradingDayOfYear := isTradingDay(time) else if (month == 12 and dayofmonth == 30) isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) else if (month == 12 and dayofmonth == 29) isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) and not isTradingDay(time + 86400000 * 2) // Plot moving average plot(ma, color=color.blue, linewidth=2) // Buy when closing price crosses above 60-day MA and up trend if (withinDateRange and ta.crossover(close, ma) and slope > 0) strategy.entry("Buy", strategy.long) // Sell all positions at the last trading day of the year if (isLastTradingDayOfYear) strategy.close_all(comment="Sell at year-end") // Plot buy and sell signals //plotshape(series=ta.crossover(close, ma), location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") //plotshape(series=isLastTradingDayOfYear, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")