Tendência de seguir a estratégia com stop loss

Autora:ChaoZhang, Data: 2024-01-12 14:55:40
Tags:

img

Resumo

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.

Princípios de estratégia

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:

  1. Calcular a direcção do indicador Supertrend
  2. Verificar se os preços mudaram de tendência descendente para tendência ascendente e estabelecer uma posição longa, se sim
  3. Verificar se os preços passaram de uma tendência ascendente para uma tendência descendente e tomar uma posição curta, se sim
  4. Estabelecer o preço stop loss e o preço take profit para a posição longa após esta ser estabelecida
  5. Estabelecer o preço de stop loss e o preço de take profit para a posição curta após esta ser estabelecida

As etapas acima podem efetivamente capturar mudanças de tendência e tomar posições nos momentos apropriados.

Análise das vantagens

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.

Análise de riscos

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.

Oportunidades de melhoria

Os seguintes aspectos da estratégia podem ser reforçados:

  1. Otimizar os parâmetros do indicador Supertrend, incluindo o período e o fator ATR através de backtesting.

  2. Incorporar regras de dimensionamento de posições baseadas em métricas de desempenho como retorno e drawdowns.

  3. Aumentar com modelos de aprendizagem de máquina para ajudar na identificação de tendências.

  4. Adicionar filtros baseados em outros indicadores como médias móveis e medidas de volatilidade para evitar falsos sinais.

  5. 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.

Conclusão

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)

Mais.