Estratégia de rastreamento de tendência cruzada multiindicador combinada com retração de Fibonacci e sistema de otimização de stop-profit e stop-loss

EMA FIBO TP/SL Trend
Data de criação: 2025-02-20 16:43:42 última modificação: 2025-02-20 16:43:42
cópia: 1 Cliques: 387
2
focar em
319
Seguidores

Estratégia de rastreamento de tendência cruzada multiindicador combinada com retração de Fibonacci e sistema de otimização de stop-profit e stop-loss Estratégia de rastreamento de tendência cruzada multiindicador combinada com retração de Fibonacci e sistema de otimização de stop-profit e stop-loss

Visão geral

A estratégia é um sistema de negociação integrado que combina o cruzamento da média móvel do índice (EMA), o nível de correção de Fibonacci, o discernimento de tendências e o mecanismo de parada de perda. A estratégia determina os sinais de negociação através do cruzamento dos EMAs de 9 e 21 ciclos, ao mesmo tempo em que combina o nível de correção de Fibonacci para otimizar o ponto de entrada e melhorar a precisão da negociação através do monitoramento do estado de tendência em tempo real.

Princípio da estratégia

A lógica central da estratégia é baseada nos seguintes elementos-chave:

  1. Quando a EMA rápida ((9 ciclos) atravessa a EMA lenta ((21 ciclos) para cima, o sistema gera um sinal de multiplicação
  2. Quando o EMA rápido atravessa o EMA lento para baixo, o sistema gera um sinal de vazio
  3. Gravação de níveis de Fibonacci retracção de 23,6%, 38,2%, 50% e 61,8% através do cálculo de máximos e mínimos de 100 ciclos
  4. O estado atual da tendência é julgado pela relação entre o preço de fechamento e a posição do EMA rápido
  5. Durante a execução da transação, o sistema configura automaticamente um limite de parada de porcentagem fixa (< 4%) e um limite de perda (< 2%)

Vantagens estratégicas

  1. Confirmação de sinais multidimensional: combinação de cruzamentos EMA, níveis de Fibonacci e estado de tendência para fornecer sinais de negociação mais confiáveis
  2. Gestão de risco perfeita: controle de risco automatizado com percentual de stop loss predefinido
  3. Forte capacidade de rastreamento de tendências: EMA cruzada com o estado de tendência de julgamento, pode efetivamente capturar a tendência do mercado
  4. Comentários visuais claros: facilitam a tomada de decisões de negociação por meio de etiquetas que mostram níveis de preços, tendências e sinais de negociação
  5. Nível elevado de sistematização: lógica de transação clara, redução da interferência de julgamentos subjetivos

Risco estratégico

  1. Risco de mercado oscilante: frequentes cruzamentos de EMAs podem levar a falsos sinais na fase de correção horizontal
  2. Risco de atraso: a média móvel é essencialmente um indicador de atraso, podendo perder o melhor momento de entrada
  3. Risco de stop loss fixo: o stop loss em percentagem fixa pode não ser adequado para todas as circunstâncias do mercado
  4. Risco de conflito de sinais: pode haver sinais conflitantes entre vários indicadores, aumentando a dificuldade de decisão
  5. Risco de flutuação do mercado: oscilações extremas podem levar a um ponto de parada não razoável

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

  1. Optimização de stop loss dinâmico: a distância de stop loss pode ser ajustada dinamicamente de acordo com o ATR ou a volatilidade do mercado
  2. Aumento de filtragem de sinais: aumento de indicadores auxiliares, como volume de tráfego e potência, para filtrar sinais falsos
  3. Parâmetros de auto-adaptação: introdução de mecanismos de auto-adaptação, ajustando o ciclo EMA de acordo com a dinâmica da situação do mercado
  4. Optimização de entrada: combinação de configuração de preços e volume de transação para otimizar a entrada perto dos níveis de Fibonacci
  5. Gestão de posições perfeita: um sistema de gestão de posições dinâmico baseado na volatilidade e no risco da conta

Resumir

A estratégia, através da integração de várias ferramentas de análise técnica clássica, constrói um sistema de negociação mais completo. Sua vantagem está na multidimensionalidade da confirmação de sinais e na sistematização da gestão de riscos, mas ainda precisa ser otimizada para diferentes ambientes de mercado.

Código-fonte da estratégia
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("EMA Cross Strategy with TP, SL, Fibonacci Levels, and Trend", overlay=true)

// Input for stop loss and take profit percentages
stopLossPercentage = input.int(2, title="Stop Loss (%)") // Stop loss percentage
takeProfitPercentage = input.int(4, title="Take Profit (%)") // Take profit percentage

// EMA Length Inputs
fastEMALength = input.int(9, title="Fast EMA Length")
slowEMALength = input.int(21, title="Slow EMA Length")

// Compute EMAs
fastEMA = ta.ema(close, fastEMALength)
slowEMA = ta.ema(close, slowEMALength)

// Entry conditions for EMA crossover
longCondition = ta.crossover(fastEMA, slowEMA)  // EMA 9 crosses above EMA 21
shortCondition = ta.crossunder(fastEMA, slowEMA) // EMA 9 crosses below EMA 21

// Plot EMAs
plot(fastEMA, color=color.blue, title="Fast EMA (9)")
plot(slowEMA, color=color.red, title="Slow EMA (21)")

// Fibonacci Retracement Levels
lookback = input.int(100, title="Lookback Period for Fibonacci Levels")
highLevel = ta.highest(high, lookback)
lowLevel = ta.lowest(low, lookback)

fib236 = lowLevel + (highLevel - lowLevel) * 0.236
fib382 = lowLevel + (highLevel - lowLevel) * 0.382
fib50 = lowLevel + (highLevel - lowLevel) * 0.5
fib618 = lowLevel + (highLevel - lowLevel) * 0.618

// Display Fibonacci levels (Left of the candle near price)
label.new(bar_index, fib236, text="Fib 23.6%: " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.purple, textcolor=color.white, size=size.small)
label.new(bar_index, fib382, text="Fib 38.2%: " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)
label.new(bar_index, fib50, text="Fib 50%: " + str.tostring(fib50, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
label.new(bar_index, fib618, text="Fib 61.8%: " + str.tostring(fib618, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)

// Trend condition: Price uptrend or downtrend
trendCondition = close > fastEMA ? "Uptrending" : close < fastEMA ? "Downtrending" : "Neutral"

// Display Trend Status (Left of candle near price)
var label trendLabel = na
if (not na(trendLabel))
    label.delete(trendLabel)
trendLabel := label.new(bar_index, close, text="Trend: " + trendCondition, style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)

// Buy and Sell orders with Stop Loss and Take Profit
if (longCondition)
    stopLossLevel = close * (1 - stopLossPercentage / 100)
    takeProfitLevel = close * (1 + takeProfitPercentage / 100)
    strategy.entry("BUY", strategy.long)
    strategy.exit("Sell", "BUY", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Buy label (Left of candle near price)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index, close, text="BUY\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)

if (shortCondition)
    stopLossLevel = close * (1 + stopLossPercentage / 100)
    takeProfitLevel = close * (1 - takeProfitPercentage / 100)
    strategy.entry("SELL", strategy.short)
    strategy.exit("Cover", "SELL", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Sell label (Left of candle near price)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index, close, text="SELL\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.orange, textcolor=color.white, size=size.small)

// Plot Buy/Sell Signals
plotshape(series=longCondition, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")