Estratégia de rastreamento de tendências de stop-profit e stop-loss dinâmico multiindicador

EMA RSI ADX MACD ATR
Data de criação: 2025-02-20 09:37:03 última modificação: 2025-02-27 17:52:08
cópia: 1 Cliques: 99
2
focar em
37
Seguidores

Estratégia de rastreamento de tendências de stop-profit e stop-loss dinâmico multiindicador Estratégia de rastreamento de tendências de stop-profit e stop-loss dinâmico multiindicador

Visão geral

A estratégia é uma estratégia de mercado em ação baseada em múltiplos indicadores técnicos. Utiliza principalmente sinais cruzados de médias móveis rápidas e lentas (EMA), em combinação com índices relativamente fracos (RSI), indicadores de tendências médias (ADX) e indicadores de tendências / desvios de médias móveis (MACD) para confirmar os sinais de negociação. A estratégia também usa a amplitude real média (ATR) para definir níveis de stop loss e stop loss dinâmicos, para gerenciar o risco.

Princípio da estratégia

A lógica central da estratégia é baseada nos seguintes componentes principais:

  1. Utiliza um cruzamento EMA de 8 e 21 ciclos como sinal de entrada principal
  2. Confirmação da intensidade da tendência através do ADX>25
  3. Utilizando o MACD Gold Fork para confirmar a direção da tendência
  4. RSI < 70 para evitar a entrada em zonas de sobrecompra
  5. Usar 1,5 vezes o ATR como stop loss e 2 vezes o ATR como stop loss
  6. Introdução de um mecanismo de rastreamento de stop loss para garantir o bloqueio de lucros

Vantagens estratégicas

  1. O mecanismo de confirmação múltipla aumentou significativamente a confiança nas transações
  2. Paradas e paradas dinâmicas ajustadas às flutuações do mercado
  3. Função de rastreamento de stop loss protege de forma eficaz os lucros obtidos
  4. Execução de transações somente após confirmação da linha K, reduzindo sinais falsos
  5. A utilização da percentagem de capital em posições para melhor controlar os riscos
  6. Consideração de custos de transação, mais em sintonia com o ambiente de transação real

Risco estratégico

  1. Indicadores múltiplos podem fazer com que algumas oportunidades de negociação sejam perdidas
  2. Mercados de rápida oscilação podem gerar falsos sinais frequentes
  3. O alto salto pode causar perda de eficácia.
  4. Os custos de transação podem afetar o retorno geral da estratégia
  5. Estratégias unidirecionais podem não funcionar bem em um mercado de baixa

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

  1. Pode-se considerar a adição de um filtro de ambiente de mercado para ajustar os parâmetros em diferentes condições de mercado
  2. Introdução de indicadores de volume de transação como sinal de confirmação adicional
  3. Optimizar os parâmetros EMA e MACD para melhor adaptá-los a diferentes períodos de tempo
  4. Melhorar o mecanismo de prevenção de perda de estímulo, considerando a possibilidade de estímulo por lotes
  5. Adição de lógica de gerenciamento de localização para um controle de posição mais flexível

Resumir

Trata-se de uma estratégia de rastreamento de tendências razoavelmente concebida, que busca a estabilidade dos ganhos, ao mesmo tempo em que controla os riscos, através da utilização conjunta de vários indicadores técnicos. A vantagem da estratégia reside no seu perfeito mecanismo de confirmação e sistema de gestão de riscos, mas ainda requer otimização de parâmetros e melhorias lógicas de acordo com a situação real do mercado.

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

//@version=6
strategy("Optimized Long-Only Strategy (Spot Market) - Candle Signals Only", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)

// INPUTS
fastEMA_len         = input.int(8, "Fast EMA Length", minval=1)
slowEMA_len         = input.int(21, "Slow EMA Length", minval=1)
rsiPeriod           = input.int(14, "RSI Period")
rsiOverbought       = input.int(70, "RSI Overbought Level", minval=50)
adxPeriod           = input.int(14, "ADX Period", minval=1)
adxThreshold        = input.int(25, "ADX Trend Strength Threshold", minval=1)
fastMACD            = input.int(12, "MACD Fast Length", minval=1)
slowMACD            = input.int(26, "MACD Slow Length", minval=1)
signalMACD          = input.int(9, "MACD Signal Length", minval=1)
atrPeriod           = input.int(14, "ATR Period", minval=1)
atrStopMultiplier   = input.float(1.5, "ATR Stop Loss Multiplier", step=0.1)
atrProfitMultiplier = input.float(2.0, "ATR Profit Target Multiplier", step=0.1)

// CALCULATIONS
emaFast   = ta.ema(close, fastEMA_len)
emaSlow   = ta.ema(close, slowEMA_len)
rsiValue  = ta.rsi(close, rsiPeriod)

// --- Custom ADX Calculation ---
up      = ta.change(high)
down    = -ta.change(low)
plusDM  = (up > down and up > 0) ? up : 0
minusDM = (down > up and down > 0) ? down : 0
trueRange = ta.tr(true)  // 'handle_na' parameter set to true
atrVal    = ta.rma(trueRange, adxPeriod)
plusDI    = 100 * ta.rma(plusDM, adxPeriod) / atrVal
minusDI   = 100 * ta.rma(minusDM, adxPeriod) / atrVal
dx        = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adxValue  = ta.rma(dx, adxPeriod)

// MACD Calculation (MACD line, signal line, histogram)
[macdLine, signalLine, _] = ta.macd(close, fastMACD, slowMACD, signalMACD)

// ATR for stops and targets
atrValue  = ta.atr(atrPeriod)

// TRADING CONDITION (Long Only, on confirmed candle)
longCondition = ta.crossover(emaFast, emaSlow) and (adxValue > adxThreshold) and (macdLine > signalLine) and (rsiValue < rsiOverbought)

// POSITION MANAGEMENT: Execute only on confirmed candles
if barstate.isconfirmed and longCondition
    strategy.entry("Long", strategy.long)
    longStop   = close - atrStopMultiplier * atrValue
    longTarget = close + atrProfitMultiplier * atrValue
    strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTarget, trail_points=atrValue * 0.5, trail_offset=atrValue * 0.3)

// PLOTTING
plot(emaFast, color=color.green, title="Fast EMA")
plot(emaSlow, color=color.red, title="Slow EMA")
plotshape(barstate.isconfirmed and longCondition, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", textcolor=color.white, size=size.tiny)