Estratégia de negociação de acompanhamento de tendência estocástica multi-timeframe

EMA ATR MTF ROI TP SL
Data de criação: 2025-02-18 17:53:04 última modificação: 2025-02-18 17:53:04
cópia: 1 Cliques: 360
1
focar em
1617
Seguidores

Estratégia de negociação de acompanhamento de tendência estocástica multi-timeframe

Visão geral

A estratégia é um sistema de negociação de acompanhamento de tendências que combina um indicador aleatório de quadros múltiplos (estocástico) e uma média móvel de índice (EMA). Ele julga condições de sobrevenda e sobrevenda por meio de indicadores aleatórios de quadros altos, ao mesmo tempo em que usa o EMA como um filtro de tendência e integra a gestão de posição dinâmica e o rastreamento de stop loss como um sistema de estratégia de negociação completo.

Princípio da estratégia

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

  1. O indicador de quadros aleatórios de alta hora é usado para identificar áreas de overbought e oversold e para determinar potenciais sinais de negociação através do cruzamento da linha K com os níveis de overbought e oversold
  2. Usar EMAs como filtros de tendência, apenas fazer mais quando o preço está acima do EMA e fazer menos quando está abaixo do EMA
  3. Baseado no cálculo dinâmico do ATR de stop loss e profit target, o stop loss está a 1,5 vezes o ATR e o profit target é 2 vezes o stop loss
  4. Utilização de um método de cálculo de posições dinâmicas baseado em percentagens de risco de conta, assegurando que o risco de cada transação é controlado a níveis predefinidos
  5. Função de stop loss de rastreamento opcional, com uma distância de rastreamento de 1,5 vezes o ATR

Vantagens estratégicas

  1. Confirmação de múltiplos sinais: combinação de indicadores aleatórios de alta margem e filtro de tendência EMA para aumentar a confiabilidade do sinal
  2. Uma boa gestão de riscos: uma abordagem de gestão de risco percentual para garantir a segurança dos fundos
  3. Mecanismos de stop loss flexíveis: suportam stop loss fixo e stop loss de rastreamento, adaptando-se a diferentes cenários de mercado
  4. Alertas claros de negociação: o sistema marca automaticamente os pontos de entrada, ponto de parada e ponto de destino para facilitar a execução das negociações
  5. Gerenciamento de posições dinâmicas: ajuste automático do tamanho da transação de acordo com a volatilidade, otimizando a eficiência do uso de fundos

Risco estratégico

  1. Risco de reversão de tendência: Falsos sinais podem surgir em um mercado em forte turbulência
  2. Risco de deslizamento: pode haver um deslizamento maior quando o mercado é pouco líquido
  3. Sensibilidade de parâmetros: a performance da estratégia é sensível à configuração de parâmetros e precisa de otimização cuidadosa
  4. Risco de retração: pode haver uma retração maior em momentos de forte volatilidade do mercado
  5. Risco de desencadeamento do stop loss: o stop loss pode ser desencadeado prematuramente quando a oscilação aumenta

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

  1. Aumentar o filtro de cenário de mercado: pode ser adicionado um indicador de volatilidade ou um indicador de intensidade de tendência para ajustar os parâmetros de estratégia em diferentes cenários de mercado
  2. Mecanismo de confirmação de sinal optimizado: adição de confirmação de volume de entrega ou outros indicadores técnicos podem ser considerados como julgamento auxiliar
  3. Melhor gestão de posições: percentagem de risco ajustável com base na dinâmica de volatilidade do mercado
  4. Mecanismo de parada melhorado: distância de parada de rastreamento pode ser ajustada de acordo com a dinâmica das características do mercado
  5. Adicionar filtro de tempo: considerar restrições de negociação em períodos importantes para evitar riscos durante as notícias importantes

Resumir

A estratégia utiliza a análise de vários quadros de tempo e o mecanismo de confirmação de múltiplos sinais, em combinação com um sistema de gerenciamento de risco perfeito, para construir um sistema de negociação mais completo. Apesar de existir um certo risco, a estratégia espera manter um desempenho estável em diferentes ambientes de mercado através da otimização e melhoria contínuas.

Código-fonte da estratégia
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ultimate fairas Oil", overlay=true)

// === Input Parameter ===
k_period = input(14, "K Period")
d_period = input(3, "D Period")
smooth_k = input(3, "Smooth K")
overbought = input(80, "Overbought Level")
oversold = input(20, "Oversold Level")
atrMult = input(1.5, "ATR Multiplier")
use_trailing_stop = input(true, "Enable Trailing Stop")
ema_length = input(50, "EMA Length")
risk_percent = input(2, "Risk per Trade (%)") / 100
account_balance = input(50000, "Account Balance")
mtf_tf = input.timeframe("D", "Higher Timeframe for Stochastic")

// === Multi-Timeframe Stochastic ===
stoch_source = request.security(syminfo.tickerid, mtf_tf, ta.stoch(close, high, low, k_period))
k = ta.sma(stoch_source, smooth_k)

// === Trend Filter (EMA) ===
ema = ta.ema(close, ema_length)
trendUp = close > ema
trendDown = close < ema

// === Entry Conditions ===
longCondition = ta.crossover(k, oversold) and trendUp
shortCondition = ta.crossunder(k, overbought) and trendDown

// === ATR-Based Stop Loss & Take Profit ===
atrValue = ta.atr(14)
stopLoss = atrMult * atrValue
takeProfit = 2 * stopLoss

// === Dynamic Lot Sizing (Risk Management) ===
risk_amount = account_balance * risk_percent
position_size = risk_amount / stopLoss

// === Trailing Stop Calculation ===
trailOffset = atrValue * 1.5
trailStopLong = use_trailing_stop ? close - trailOffset : na
trailStopShort = use_trailing_stop ? close + trailOffset : na

// === Execute Trades ===
if longCondition
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Exit Long", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="BUY", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
    // label.new(x=bar_index, y=close + takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close - stopLoss, text="SL ❌", color=color.red, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close + takeProfit, x2=bar_index + 5, y2=close + takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close - stopLoss, x2=bar_index + 5, y2=close - stopLoss, width=2, color=color.red)

    // Alert
    alert("BUY Signal! TP: " + str.tostring(close + takeProfit) + ", SL: " + str.tostring(close - stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)

if shortCondition
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Exit Short", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="SELL", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
    // label.new(x=bar_index, y=close - takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close + stopLoss, text="SL ❌", color=color.green, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close - takeProfit, x2=bar_index + 5, y2=close - takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close + stopLoss, x2=bar_index + 5, y2=close + stopLoss, width=2, color=color.green)

    // Alert
    alert("SELL Signal! TP: " + str.tostring(close - takeProfit) + ", SL: " + str.tostring(close + stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)