Estratégia de tendência de barra de elefante com ajuste de stop loss dinâmico

SMA HAMMER RSI
Data de criação: 2025-01-17 16:24:18 última modificação: 2025-01-17 16:24:18
cópia: 4 Cliques: 371
1
focar em
1617
Seguidores

Estratégia de tendência de barra de elefante com ajuste de stop loss dinâmico

Visão geral

Essa estratégia é um sistema de rastreamento de tendências baseado no reconhecimento de padrões de barras, que captura principalmente possíveis pontos de partida de tendências identificando “barras de elefante” no mercado (ou seja, barras de preço que são significativamente maiores que o tamanho médio). A principal característica da estratégia é adotar um plano de stop-loss ajustado dinamicamente, que ajusta de forma adaptativa a posição de stop-loss de acordo com o progresso do movimento de preços, protegendo assim os lucros existentes e dando aos preços espaço suficiente para flutuações.

Princípio da estratégia

A operação da estratégia é baseada nas seguintes etapas principais:

  1. Calcular o tamanho médio das barras no período específico anterior como um valor de referência
  2. Identifique se a coluna atual atende às características da “coluna elefante”:
    • O tamanho da coluna é significativamente maior que a média (múltiplo configurável)
    • O preço de fechamento está dentro de uma certa faixa percentual entre a máxima e a mínima
    • Ou atende às características do padrão martelo/martelo invertido
  3. Determine a direção da negociação com base na direção da coluna do elefante
  4. Defina o stop loss inicial e a meta de lucro
  5. À medida que o preço se move em uma direção favorável, ajuste dinamicamente a posição de stop loss:
    • Mova o stop loss acima da linha de custo quando a meta de 60% for atingida
    • Aperte ainda mais o stop loss ao atingir a meta de 80%
    • Quando a meta de 90% é atingida, o stop loss é significativamente apertado e a meta de lucro é ajustada

Vantagens estratégicas

  1. Gerenciamento de risco dinâmico: ao ajustar dinamicamente a posição de stop loss, a estratégia pode proteger os lucros e, ao mesmo tempo, dar espaço para que a tendência se desenvolva completamente.
  2. Flexibilidade no reconhecimento de padrões: além da tradicional barra de elefante, também inclui o reconhecimento de padrões especiais, como linhas de martelo
  3. Forte ajustabilidade de parâmetros: parâmetros-chave como múltiplos de tamanho de coluna, porcentagem de destino, etc. podem ser ajustados de forma flexível de acordo com as características do mercado
  4. Razão risco-retorno razoável: o stop loss inicial é relativamente conservador, mas é ajustado dinamicamente à medida que a tendência se desenvolve para obter maiores retornos

Risco estratégico

  1. Risco de falso rompimento: o padrão da coluna do elefante pode ter um falso rompimento, então é necessário definir as condições de filtragem de forma razoável.
  2. Risco de mercado volátil: o stop loss pode ser acionado com frequência em um mercado lateral e volátil
  3. Risco de ajuste de stop loss: um ajuste de stop loss excessivamente agressivo pode levar a uma saída antecipada
  4. Sensibilidade dos parâmetros: O efeito da estratégia é sensível às configurações dos parâmetros e requer testes suficientes.

Direção de otimização da estratégia

  1. Adicionar filtro de ambiente de mercado:
    • Adicione indicadores de tendência para identificar o ambiente de mercado atual
    • Use diferentes configurações de parâmetros em diferentes ambientes de mercado
  2. Melhore o mecanismo de stop loss:
    • Apresentando Trailing Stop
    • Ajuste dinamicamente a distância do stop loss com base na volatilidade
  3. Otimize o tempo de entrada:
    • Combinado com indicadores de volume
    • Adicionado sinal de confirmação de reversão
  4. Melhoria na obtenção de lucros:
    • Alcançar saída de lucro parcial
    • Ajuste dinamicamente as metas de lucro com base na estrutura do mercado

Resumir

Essa estratégia alcança um monitoramento eficaz de tendências ao identificar padrões de preços importantes no mercado e adotar uma abordagem dinâmica de gerenciamento de risco. A principal vantagem da estratégia está em seu mecanismo de gerenciamento de stop-loss adaptável, que pode aproveitar totalmente as oportunidades de tendências e, ao mesmo tempo, proteger os lucros. Ao otimizar ainda mais a identificação do ambiente de mercado e os mecanismos de gerenciamento de risco, espera-se que a estratégia alcance um desempenho estável em diferentes ambientes de mercado.

Código-fonte da estratégia
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Estratégia Barra Elefante com Stop Dinâmico", overlay=true)

// Parâmetros configuráveis
num_barras = input.int(15, title="Número de Barras para Média", minval=1, maxval=100)
percentual_fechamento_valido = input.float(10, title="Percentual do Máximo de Pavio (%)", minval=1, maxval=100)
percentual_condicao_tamanho = input.float(1.8, title="Multiplicador do Tamanho Médio da Barra", minval=0.1, step=0.1)
percentual_lucro = input.float(1.8, title="% de Lucro do Alvo ref. Tam. da Barra", minval=0.1, step=0.1)

var bool executou_entrada = false

// Calcula o tamanho de cada barra
barra_tamanho = math.abs(close - open)

// Calcula a média do tamanho das últimas 'num_barras' barras
media_tamanho = ta.sma(barra_tamanho, num_barras)

// Definição das variáveis para o corpo do candle, sombra superior e sombra inferior
corpo = barra_tamanho
sombra_superior = high - math.max(close, open)
sombra_inferior = math.min(close, open) - low

// Condições para verificar se a sombra é pelo menos 2x maior que o corpo
sombra_sup_maior = sombra_superior >= 2 * corpo
sombra_inf_maior = sombra_inferior >= 2 * corpo

// Define a relação mínima entre a sombra e o corpo
relacao_minima = 2.0

fechamento_valido = ((close >= high - (percentual_fechamento_valido / 100) * (high - low)) or (close <= low + (percentual_fechamento_valido / 100) * (high - low)))

// Condição para verificar se o fechamento está próximo da máxima ou mínima
fechamento_proximo_max = close >= (high - (high - low) * 0.1)  // Fechamento nos 20% superiores
fechamento_proximo_min = close <= (low + (high - low) * 0.1)   // Fechamento nos 20% inferiores

// definição de candle martelo
eh_martelo = (sombra_sup_maior and fechamento_proximo_max) and (math.abs(high - low) > 1.5*media_tamanho)
eh_martelo_invertido = (sombra_inf_maior and fechamento_proximo_min) and (math.abs(low - high) > 1.5*media_tamanho)

// Compara o tamanho da barra atual com a média usando o percentual configurável
condicao_tamanho = (barra_tamanho > percentual_condicao_tamanho * media_tamanho) and (fechamento_valido or (eh_martelo or eh_martelo_invertido))

// Variáveis para entrada
comprar_condicao = (condicao_tamanho and close > open)
vender_condicao = (condicao_tamanho and close < open)

// Stop Loss inicial
stop_loss_compra = low[1] + (barra_tamanho / 5)  // Para compra, stop é na mínima do candle anterior ajustado
stop_loss_venda = high[1] - (barra_tamanho / 5) // Para venda, stop é na máxima do candle anterior ajustado

// Take Profit inicial (multiplicador configurado)
take_profit_compra = close + percentual_lucro * barra_tamanho
take_profit_venda = close - percentual_lucro * barra_tamanho

// Variáveis para controle do progresso do preço
lucro_alvo_60 = close + 0.6 * (take_profit_compra - close)  // 60% do alvo
lucro_alvo_80 = close + 0.8 * (take_profit_compra - close)  // 80% do alvo
lucro_alvo_90 = close + 0.9 * (take_profit_compra - close)  // 90% do alvo

// Ajustes dinâmicos do Stop Loss e Alvo
if (strategy.position_size > 0)  // Para compras
    if (high >= lucro_alvo_60)
        stop_loss_compra := close + 0.1 * barra_tamanho  // Ajusta Stop para 10% acima da entrada
    if (high >= lucro_alvo_80)
        stop_loss_compra := close + 0.5 * barra_tamanho  // Ajusta Stop para 50% acima da entrada
    if (high >= lucro_alvo_90)
        stop_loss_compra := close + 0.8 * barra_tamanho  // Ajusta Stop para 80% acima da entrada
        take_profit_compra := close + 0.5 * barra_tamanho  // Ajusta Alvo para +50% do último fechamento

if (strategy.position_size < 0)  // Para vendas
    if (low <= lucro_alvo_60)
        stop_loss_venda := close - 0.1 * barra_tamanho  // Ajusta Stop para 10% abaixo da entrada
    if (low <= lucro_alvo_80)
        stop_loss_venda := close - 0.5 * barra_tamanho  // Ajusta Stop para 50% abaixo da entrada
    if (low <= lucro_alvo_90)
        stop_loss_venda := close - 0.8 * barra_tamanho  // Ajusta Stop para 80% abaixo da entrada
        take_profit_venda := close - 0.5 * barra_tamanho  // Ajusta Alvo para -50% do último fechamento

// Executando as ordens de compra e venda
if (not executou_entrada) and (comprar_condicao)
    strategy.entry("Compra", strategy.long)
    strategy.exit("Stop Compra", "Compra", stop=stop_loss_compra, limit=take_profit_compra)
    executou_entrada := true  // Marca que a entrada foi feita

if (not executou_entrada) and (vender_condicao)
    strategy.entry("Venda", strategy.short)
    strategy.exit("Stop Venda", "Venda", stop=stop_loss_venda, limit=take_profit_venda)
    executou_entrada := true  // Marca que a entrada foi feita

// Para visualização, vamos colorir as barras
barcolor(comprar_condicao ? color.rgb(14, 255, 22) : na)
barcolor(vender_condicao ? #d606ff : na)
bgcolor((eh_martelo) ? color.new(color.green, 60) : na)
bgcolor((eh_martelo_invertido) ? color.new(color.red, 60) : na)

// Reseta o controle de execução no início de cada nova barra
if barstate.isnew
    executou_entrada := false