Estratégia adaptativa dinâmica de stop-profit e stop-loss baseada em ATR e EMA

ATR EMA
Data de criação: 2024-05-28 14:15:56 última modificação: 2024-05-28 14:15:56
cópia: 1 Cliques: 835
1
focar em
1617
Seguidores

Estratégia adaptativa dinâmica de stop-profit e stop-loss baseada em ATR e EMA

Visão geral

A estratégia usa dois indicadores, o ATR (Average True Range) e o EMA (Index Moving Average), para se adaptar à volatilidade do mercado, ajustando dinamicamente o ponto de parada e de perda. A principal idéia da estratégia é: usar o indicador ATR para medir a volatilidade do mercado e definir o ponto de parada e perda de acordo com o tamanho da volatilidade.

Princípio da estratégia

  1. Calcule o indicador ATR, que é usado para medir a magnitude da volatilidade do mercado.
  2. Calcule o ponto de parada dinâmico com base no valor do ATR e no parâmetro do múltiplo da entrada.
  3. Usando o indicador EMA como condição de filtragem, quando o preço ultrapassa a EMA para cima, é aberto um pedido excessivo e quando o preço ultrapassa a EMA para baixo, é aberto um pedido vazio.
  4. Ao manter uma posição, ajuste continuamente a posição de parada de parada de acordo com as mudanças no preço e a mudança no ponto de parada dinâmica.
  5. Quando o preço atinge o ponto de parada dinâmica, a posição é fechada e invertida.

Vantagens estratégicas

  1. Adaptabilidade: A estratégia pode se adaptar às variações de volatilidade em diferentes condições de mercado, controlando o risco, ajustando dinamicamente o ponto de parada.
  2. A capacidade de acompanhamento de tendências é forte: o indicador EMA é usado para determinar a direção das negociações e é capaz de capturar as tendências do mercado de forma eficaz.
  3. Parâmetros ajustáveis: pode-se controlar com flexibilidade os riscos e os benefícios da estratégia, ajustando os parâmetros de periodicidade e multiplicidade do ATR.

Risco estratégico

  1. Risco de configuração de parâmetros: A configuração dos parâmetros do ATR e do multiplicador pode afetar diretamente o desempenho da estratégia, e a configuração incorreta dos parâmetros pode levar à falha da estratégia.
  2. Risco de mercado em choque: Em mercados em choque, a abertura frequente de posições pode levar a grandes perdas de pontos de deslizamento e taxas.
  3. Risco de reversão de tendência: quando a tendência do mercado se reverte, a estratégia pode sofrer perdas consecutivas.

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

  1. A introdução de mais indicadores técnicos, como MACD, RSI e outros, para melhorar a precisão do julgamento de tendências.
  2. Otimização de métodos de cálculo de pontos de perda de parada, como a introdução de paradas móveis e paradas de taxa dinâmica.
  3. Otimizar os parâmetros para encontrar a melhor combinação de parâmetros ATR e multiplicadores, aumentando a estabilidade e a lucratividade da estratégia.
  4. Adicione o módulo de gerenciamento de posições e ajuste dinamicamente o tamanho das posições de acordo com a volatilidade do mercado e o nível de risco da conta.

Resumir

A estratégia utiliza os dois indicadores ATR e EMA para se adaptar às mudanças na volatilidade do mercado, ajustando dinamicamente o ponto de parada e perda, e usa o indicador EMA para determinar a direção do negócio. A estratégia tem uma forte capacidade de adaptação e rastreamento de tendências, mas pode enfrentar riscos ao definir parâmetros, mercados de choque e reversões de tendência.

Código-fonte da estratégia
/*backtest
start: 2024-04-27 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy(title='UT MB&SS Bot', overlay=true)

// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')
stoploss = input(2.0, title='Stop Loss (ATR Multiples)')

xATR = ta.atr(c)
nLoss = a * xATR

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

var xATR_trailing_stop = 0.0
iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1
xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATR_trailing_stop[1], 0) and src < nz(xATR_trailing_stop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATR_trailing_stop[1], 0) and src > nz(xATR_trailing_stop[1], 0) ? 1 : iff_3

xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue

ema = ta.ema(src, 1)
above = ta.crossover(ema, xATR_trailing_stop)
below = ta.crossover(xATR_trailing_stop, ema)

buy = src > xATR_trailing_stop and above
sell = src < xATR_trailing_stop and below

barbuy = src > xATR_trailing_stop
barsell = src < xATR_trailing_stop

plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR
stop_level := math.max(stop_level, nz(stop_level[1]))

if pos == 1
    strategy.exit('Exit Long', 'UT Long', stop=stop_level)
else if pos == -1
    strategy.exit('Exit Short', 'UT Short', stop=stop_level)





if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)