Cette stratégie combine le suivi des tendances avec un mécanisme de sortie basé sur le temps. Le concept de base est de capturer les tendances du marché en surveillant les relations de prix avec la moyenne mobile de 60 jours tout en incorporant un mécanisme de liquidation forcée à la fin de l'année pour le contrôle des risques. Les positions longues sont entrées lorsque le prix de clôture dépasse le MA de 60 jours avec une pente positive, et toutes les positions sont fermées le dernier jour de négociation de chaque année.
La stratégie repose sur plusieurs éléments essentiels: Détermination de tendance: utilise une moyenne mobile simple (SMA) de 60 jours comme indicateur de tendance à moyen terme, avec un calcul de pente de 14 jours pour confirmer la direction de la tendance. 2. Signal d'entrée: les signaux d'achat sont générés lorsque le prix dépasse le MA de 60 jours avec une pente positive, indiquant une tendance haussière potentielle. Mécanisme de sortie: met en œuvre une sortie à temps fixe, clôturant toutes les positions le dernier jour de négociation de chaque année afin d'éviter les risques de position transannuels. 4. Gestion du temps de négociation: intègre le contrôle de la plage de dates et la validation du jour de négociation pour garantir que les opérations ne se produisent que les jours de négociation valides.
Cette stratégie crée un système de trading relativement robuste en combinant le suivi des tendances avec la gestion du temps. Sa logique simple et claire le rend facile à comprendre et à mettre en œuvre, offrant une bonne utilité pratique.
/*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")