Esta estratégia combina a tendência seguindo com um mecanismo de saída baseado no tempo. O conceito central é capturar as tendências do mercado monitorando as relações de preço com a média móvel de 60 dias, incorporando um mecanismo de liquidação forçada no final do ano para controle de riscos. As posições longas são inseridas quando o preço de fechamento ultrapassa a MA de 60 dias com uma inclinação positiva, e todas as posições são fechadas no último dia de negociação de cada ano.
A estratégia baseia-se em vários elementos essenciais: Determinação de tendência: usa uma média móvel simples (SMA) de 60 dias como indicador de tendência de médio prazo, com um cálculo de inclinação de 14 dias para confirmar a direção da tendência. 2. Sinais de entrada: os sinais de compra são gerados quando o preço ultrapassa a MA de 60 dias com uma inclinação positiva, indicando uma potencial tendência de alta. Mecanismo de saída: implementa uma saída baseada em tempo fixo, fechando todas as posições no último dia de negociação de cada ano para evitar riscos de posição interanual. 4. Gestão do tempo de negociação: Incorpora controlo da faixa de datas e validação do dia de negociação para garantir que as operações só ocorram em dias de negociação válidos.
Esta estratégia cria um sistema de negociação relativamente robusto, combinando o seguimento da tendência com a gestão do tempo. Sua lógica simples e clara torna fácil de entender e implementar, oferecendo boa utilidade prática. Com otimização de parâmetros apropriada e medidas suplementares de controle de risco, a estratégia mostra potencial para gerar retornos estáveis em condições reais de negociação.
/*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")