Stratégie de suivi de tendance Elephant Bar avec ajustement dynamique du stop loss

SMA HAMMER RSI
Date de création: 2025-01-17 16:24:18 Dernière modification: 2025-01-17 16:24:18
Copier: 4 Nombre de clics: 371
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance Elephant Bar avec ajustement dynamique du stop loss

Aperçu

Cette stratégie est un système de suivi des tendances basé sur la reconnaissance des modèles de barres, qui capture principalement les points de départ des tendances potentielles en identifiant les « barres d’éléphants » sur le marché (c’est-à-dire les barres de prix nettement plus grandes que la taille moyenne). La caractéristique principale de la stratégie est d’adopter un plan de stop-loss ajusté de manière dynamique, qui ajuste de manière adaptative la position de stop-loss en fonction de la progression du mouvement des prix, protégeant ainsi les bénéfices existants et donnant aux prix une marge suffisante pour les fluctuations.

Principe de stratégie

Le fonctionnement de la stratégie repose sur les étapes clés suivantes :

  1. Calculer la taille moyenne des barres au cours de la période spécifique passée comme valeur de référence
  2. Identifier si la colonne actuelle répond aux caractéristiques de la « colonne éléphant » :
    • La taille de la colonne est significativement supérieure à la moyenne (multiple configurable)
    • Le prix de clôture se situe dans une certaine fourchette de pourcentage du plus haut et du plus bas
    • Ou il répond aux caractéristiques du modèle marteau/marteau inversé
  3. Déterminer la direction du trading en fonction de la direction de la colonne des éléphants
  4. Définissez un stop loss initial et un objectif de profit
  5. Lorsque le prix évolue dans une direction favorable, ajustez dynamiquement la position du stop loss :
    • Déplacez le stop loss au-dessus de la ligne de coût lorsque l’objectif de 60 % est atteint
    • Resserrez davantage le stop loss lorsque vous atteignez l’objectif de 80 %
    • Lorsque l’objectif de 90 % est atteint, le stop loss est considérablement resserré et l’objectif de profit est ajusté

Avantages stratégiques

  1. Gestion dynamique des risques : en ajustant dynamiquement la position du stop loss, la stratégie peut protéger les bénéfices tout en laissant à la tendance la possibilité de se développer pleinement.
  2. Flexibilité dans la reconnaissance des formes : en plus de la barre d’éléphant traditionnelle, elle comprend également la reconnaissance de motifs spéciaux tels que les lignes de marteau
  3. Forte capacité d’ajustement des paramètres : les paramètres clés tels que les multiples de taille de colonne, le pourcentage cible, etc. peuvent être ajustés de manière flexible en fonction des caractéristiques du marché
  4. Rapport risque/rendement raisonnable : le stop loss initial est relativement conservateur, mais il est ajusté de manière dynamique au fur et à mesure que la tendance se développe pour obtenir des rendements plus élevés

Risque stratégique

  1. Risque de fausse cassure : le modèle de colonne d’éléphant peut avoir une fausse cassure, il est donc nécessaire de définir les conditions de filtrage de manière raisonnable.
  2. Risque de marché volatil : le stop loss peut être déclenché fréquemment dans un marché latéral et volatil
  3. Risque d’ajustement du stop loss : un ajustement trop agressif du stop loss peut entraîner une sortie anticipée
  4. Sensibilité des paramètres : L’effet de la stratégie est sensible aux paramètres définis et nécessite des tests suffisants.

Orientation de l’optimisation de la stratégie

  1. Ajouter un filtre d’environnement de marché :
    • Ajoutez des indicateurs de tendance pour identifier l’environnement actuel du marché
    • Utiliser différents paramètres dans différents environnements de marché
  2. Améliorer le mécanisme de stop loss :
    • Présentation du Trailing Stop
    • Ajustez dynamiquement la distance du stop loss en fonction de la volatilité
  3. Optimiser le timing d’entrée :
    • Combiné avec des indicateurs de volume
    • Ajout d’un signal de confirmation d’inversion
  4. Amélioration de la rentabilité :
    • Réaliser une sortie partielle de bénéfices
    • Ajustez dynamiquement les objectifs de profit en fonction de la structure du marché

Résumer

Cette stratégie suit efficacement les tendances en identifiant les principaux modèles de prix sur le marché et en adoptant une approche dynamique de gestion des risques. Le principal avantage de la stratégie réside dans son mécanisme de gestion adaptatif du stop-loss, qui permet de saisir pleinement les opportunités de tendance tout en protégeant les bénéfices. En optimisant davantage l’identification de l’environnement de marché et les mécanismes de gestion des risques, la stratégie devrait permettre d’obtenir des performances stables dans différents environnements de marché.

Code source de la stratégie
/*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