
Bei dieser Strategie handelt es sich um eine quantitative Handelsstrategie, die Trendverfolgung und zeitgesteuerte Ausstiegsmechanismen kombiniert. Der Kern der Strategie besteht darin, Markttrends durch Beobachtung der Beziehung zwischen Preis und gleitendem 60-Tage-Durchschnitt zu erfassen und gleichzeitig einen Zwangsliquidationsmechanismus zum Jahresende einzuführen, um die Risiken zu kontrollieren. Wenn der Schlusskurs den 60-Tage-Durchschnitt durchbricht und die Steigung des gleitenden Durchschnitts positiv ist, sollten Sie in den Markt einsteigen und eine Long-Position eingehen und alle Positionen am letzten Handelstag jedes Jahres schließen.
Die Strategie basiert auf folgenden Kernelementen:
Diese Strategie baut durch die Kombination von Trendfolge und Zeitmanagement ein relativ robustes Handelssystem auf. Die Strategielogik ist einfach und klar, leicht zu verstehen und umzusetzen und weist eine gute Praktikabilität auf. Durch eine sinnvolle Parameteroptimierung und die Ergänzung von Risikokontrollmaßnahmen dürfte diese Strategie bei tatsächlichen Transaktionen stabile Renditen 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")