Esta estratégia identifica as tendências de preços através do cálculo do indicador Supertrend e estabelece posições longas ou curtas quando as tendências mudam.
Esta estratégia usa a função ta.supertrend() para calcular o indicador Supertrend. A Supertrend combina a faixa média verdadeira e o preço médio para determinar se os preços estão em uma tendência de alta ou baixa. Quando os preços mudam de uma tendência de baixa para uma tendência de alta, a estratégia detecta a mudança de direção usando ta.change() e estabelece uma posição longa. Quando os preços mudam de uma tendência de alta para uma tendência de baixa, uma posição curta é tomada.
O nível de stop loss stop_loss e o nível de take profit profit são definidos para colocar ordens de stop loss e de take profit após a entrada em posições para controlar riscos.
Em especial, a estratégia é implementada através das seguintes etapas:
As etapas acima podem efetivamente capturar mudanças de tendência e tomar posições nos momentos apropriados.
A maior vantagem desta estratégia é a capacidade de rastrear automaticamente as mudanças de tendência sem a necessidade de julgamento manual. O indicador Supertrend tem um efeito de filtragem sobre as flutuações de preços e pode identificar efetivamente as tendências, evitando uma posição excessiva em mercados variados.
Além disso, os níveis de stop loss e take profit predefinidos permitem a stop loss e take profit automáticos, limitando efetivamente as perdas de negociação única e bloqueando os ganhos.
Em comparação com as estratégias simples de média móvel, esta estratégia tem capacidades superiores na identificação de tendências e é mais adequada para mercados de tendências.
O maior risco desta estratégia vem de um ajuste inadequado dos parâmetros do indicador Supertrend. Se os parâmetros não forem definidos adequadamente, a eficácia do indicador na detecção de mudanças de tendência sofrerá. Um período ATR que é muito longo ou um fator que é muito pequeno pode retardar a reação do Supertrend aos movimentos de preços, causando oportunidades de entrada perdidas.
Além disso, os níveis de stop loss e take profit afetam significativamente o desempenho da estratégia. Um stop loss muito apertado seria facilmente interrompido prematuramente. Um take profit muito amplo pode perder pontos de saída ideais. É necessária otimização extensiva para encontrar os valores ideais dos parâmetros para diferentes condições de mercado e instrumentos de negociação.
Por fim, como todas as estratégias de tendência, reversões repentinas de tendência e acidentes ainda podem causar perdas que precisam ser controladas através de uma gestão adequada do dinheiro.
Os seguintes aspectos da estratégia podem ser reforçados:
Otimizar os parâmetros do indicador Supertrend, incluindo o período e o fator ATR através de backtesting.
Incorporar regras de dimensionamento de posições baseadas em métricas de desempenho como retorno e drawdowns.
Aumentar com modelos de aprendizagem de máquina para ajudar na identificação de tendências.
Adicionar filtros baseados em outros indicadores como médias móveis e medidas de volatilidade para evitar falsos sinais.
Otimizar dinamicamente os níveis de stop loss e de lucro com base na volatilidade do mercado e nos tamanhos das posições.
As melhorias acima referidas podem melhorar a rentabilidade, a estabilidade e a gestão dos riscos da estratégia.
Em geral, esta é uma estratégia muito prática de tendência. Ela rastreia automaticamente as mudanças de tendência e usa stop loss e take profit para controlar riscos. Em comparação com as estratégias de média móvel simples, ela tem capacidade de identificação de tendência superior e é mais adequada para mercados de tendência. Com alguma otimização de parâmetros e aumento de aprendizado de máquina, essa estratégia pode alcançar ainda melhor estabilidade e lucros. Merece mais pesquisa e aplicação.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity) // Stop loss and profit amount stop_loss = input(300, title="Stop Loss Amount") profit = input (800, title="Profit Amount") atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) long_condition = ta.change(direction) <0 short_condition = ta.change(direction) >0 long_condition_1= (long_condition)?1:0 short_condition_2 = (short_condition)?1:0 stop_price_long = ta.valuewhen(long_condition, low[0]-stop_loss,0) profit_price_long = ta.valuewhen(long_condition, high[0]+profit,0) stop_price_short = ta.valuewhen(short_condition, high[0]+stop_loss,0) profit_price_short = ta.valuewhen(short_condition, low[0]-profit,0) if (long_condition) strategy.entry("Michael3 Long Entry Id", strategy.long) if (short_condition) strategy.entry("Michael3 Short Entry Id", strategy.short) if (strategy.position_size>0) strategy.exit("exit_long",from_entry="Michael3 Long Entry Id",limit=profit_price_long,stop=stop_price_long) if (strategy.position_size<0) strategy.exit("exit_short",from_entry="Michael3 Short Entry Id",limit=profit_price_short,stop=stop_price_short) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)