Estratégia ATR de trail stop (apenas longo)

Autora:ChaoZhang, Data: 2023-11-02 14:05:22
Tags:

img

Resumo

Esta estratégia usa duas paradas ATR com parâmetros diferentes para definir níveis de stop loss dinâmicos - uma parada rápida e uma parada lenta. Estabelece posições longas com base em quebras de preço dos diferentes níveis de parada e sai de posições usando as paradas de trail. O objetivo é usar paradas ATR para definir níveis razoáveis de stop loss, maximizando a capacidade de seguir a tendência.

Estratégia lógica

A estratégia usa o indicador ATR para calcular dois níveis de stop loss. A parada rápida usa o ATR de 5 períodos multiplicado por 0,5 como a distância de parada. A parada lenta usa o ATR de 10 períodos multiplicado por 3 como a distância de parada. Quando o preço ultrapassa o nível de parada rápida, uma posição longa é estabelecida. Quando o preço continua a ultrapassar o nível de parada lenta, a parada é ajustada ao nível de parada lenta. Se o preço descer, o nível de parada é ajustado com base nas relações de cruzamento.

A lógica é:

  1. Calcular a parada rápida Trail1: ATR de 5 períodos * 0,5

  2. Calcular a parada lenta Trail2: ATR de 10 períodos * 3

  3. Quando o preço ultrapassar o nível do Trail1, estabeleça uma posição longa.

  4. Quando o preço continua a quebrar acima do Trail2, ajuste a parada para o Trail2

  5. Se o preço descer quebrando Trail1, ajuste a parada de volta para Trail1

  6. Se o preço continuar a descer quebrando Trail2, ajuste a parada para Trail2

  7. Finalmente, se o preço atingir o nível de parada, saia da posição com stop loss

Desta forma, a estratégia pode maximizar o lucro durante as tendências de alta com as paradas traseiras, enquanto rapidamente para as perdas quando a tendência se inverte.

Vantagens

  1. As paradas ATR definem níveis dinâmicos de paragem de perdas com base na volatilidade do mercado

  2. Mecanismo de dupla suspensão equilibra as perdas de suspensão e as tendências de queda

  3. Direcção longa alinha-se com a tendência de alta geral, maior rentabilidade

  4. Lógica simples e clara, fácil de compreender e implementar

  5. Regras estritas de stop loss limitam as perdas de forma eficaz

Riscos

  1. Parâmetros ATR inadequados podem causar paradas demasiado largas ou demasiado apertadas

  2. Direção longa tem viés direcional, propensos a paradas nos topos do mercado

  3. Regras de paragem dupla são complexas, podem falhar se não forem definidas corretamente

  4. Nenhum filtro, como cruzamento da EMA, pode causar mau comércio.

  5. Nenhuma gestão de posições ou de riscos, riscos de excesso de negociação

Estes riscos podem ser reduzidos através da otimização dos parâmetros do ATR, da adição de filtros e da aplicação da gestão de riscos.

Áreas de melhoria

  1. Otimizar as combinações de parâmetros ATR para obter os melhores resultados

  2. Adicionar filtros como EMA para qualificar sinais de entrada

  3. Incorporar indicadores como o Stoch RSI para vantagem adicional

  4. Adicionar lógica de reentrada para otimizar o gerenciamento de posição

  5. Otimizar as regras de gestão de risco para limitar a perda de parada por negociação

  6. Incorporar análises a nível de mercado para evitar erros de direção

  7. Considere estratégias de tempo mais rápido como horário

  8. Expandir para uma estratégia universal multi-mercado

  9. Implementar motor de negociação de alto desempenho

Com estas melhorias, a estratégia pode ser mais robusta, estável e rentável.

Resumo

A estratégia usa paradas ATR claras para entradas e saídas longas. As vantagens estão em suas regras estritas de stop loss para limitar as perdas enquanto se seguem tendências.


/*backtest
start: 2023-10-25 00:00:00
end: 2023-11-01 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Trailing Stop Strategy (Long Position Only)", overlay=true)

SC = input(close, "Source", input.source)

// Fast Trail
AP1 = input(5, "Fast ATR period", input.integer)
AF1 = input(0.5, "Fast ATR multiplier", input.float)
SL1 = AF1 * atr(AP1)
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0), SC + SL1, na))

// Slow Trail
AP2 = input(10, "Slow ATR period", input.integer)
AF2 = input(3, "Slow ATR multiplier", input.float)
SL2 = AF2 * atr(AP2)
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0), SC + SL2, na))

Green = Trail1 > Trail2 and close > Trail2 and low > Trail2

Buy = crossover(Trail1, Trail2)

plotshape(Buy, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)

strategy.entry("Buy", strategy.long, when = Buy)

var float trailingStopPrice = na
if (Trail2 > trailingStopPrice)
    trailingStopPrice := Trail2

if (crossover(Trail1, Trail2))
    trailingStopPrice := Trail2

strategy.exit("Exit", from_entry = "Buy", stop=trailingStopPrice)


Mais.