Estratégia de trailing stop ES baseada em ATR


Data de criação: 2024-01-12 14:52:23 última modificação: 2024-01-12 14:52:23
cópia: 3 Cliques: 673
1
focar em
1617
Seguidores

Estratégia de trailing stop ES baseada em ATR

Visão geral

Esta estratégia é uma estratégia de parada de seguimento aplicada ao E-mini S&P 500 futures (ES). Ela usa o ATR de 10 dias como referência para definir uma linha de parada de multi-cabeças e cabeças com 3 vezes o ATR como um intervalo de parada. A estratégia julga a tendência através da mudança de direção da linha de ATR e gera um sinal de entrada no ponto de reversão da tendência.

Princípio da estratégia

Esta estratégia usa o hl2 como fonte de preço. Primeiro, calcula o ATR de 10 dias e permite ao usuário escolher entre calcular o ATR usando o método SMA ou a função ATR embutida. Depois de calcular o ATR, adicione 3 vezes o ATR para cima e para baixo.

A maneira de determinar a tendência é que, quando o preço ultrapassa a fronteira superior, é a cabeça; Quando o preço cai abaixo da fronteira inferior, é a cabeça. Quando o preço retorna para o intervalo, a reversão de tendência é confirmada.

Após a entrada, a linha de parada multi-cabeça é configurada para mover a borda superior um ponto para baixo, e a linha de parada de cabeça vazia é configurada para mover a borda inferior um ponto para cima, para uma proteção de seguimento de ponta.

Vantagens estratégicas

  1. O uso do ATR permite a adaptação automática às variações na volatilidade do mercado, reduzindo a probabilidade de um stop loss ser acionado
  2. Métodos simples e eficazes para acompanhar as tendências, evitando o risco de um topo e um fundo
  3. A suspensão de perdas de seguimento garante a proteção dos lucros, evitando perdas após os lucros.

Análise de Riscos

  1. A configuração incorreta do parâmetro ATR pode causar um campo de parada muito grande ou muito pequeno
  2. Perda anormal pode ocorrer quando a volatilidade do indicador varia
  3. TAILING Stop loss pode ser conservador demais para acompanhar a tendência

Direção de otimização

  1. Pode-se considerar a otimização do parâmetro ATR em combinação com o indicador de taxa de flutuação
  2. É possível testar diferentes algoritmos de parada de TAILING, como a parada de percentual de saldo
  3. Pode ser combinado com indicadores de tendência para filtrar os sinais de entrada para evitar a entrada de tendências não dominantes

Resumir

Esta estratégia é uma estratégia de acompanhamento de tendências mais geral. Ela resolve o problema de determinar o alcance do stop loss, reduzindo o risco com o ajuste dinâmico do ATR. Ao mesmo tempo, acompanhe o stop loss para a proteção do lucro.

Código-fonte da estratégia
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Based Trailing Stop Strategy on ES! [v4]", overlay=true)

// Given ATR study
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Entry logic based on trend change
longCondition = trend == 1 and trend[1] == -1
shortCondition = trend == -1 and trend[1] == 1

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trailing stop loss logic
// For long positions, trail 1 point below the up plot
longStopPrice = up - 1

// For short positions, trail 1 point above the dn plot
shortStopPrice = dn + 1

strategy.exit("Trailing Stop Long", "Long", trail_offset=longStopPrice)
strategy.exit("Trailing Stop Short", "Short", trail_offset=shortStopPrice)