ATR Trailing Pares Estratégia

Autora:ChaoZhang, Data: 2023-10-09 16:59:57
Tags:

Resumo

Esta estratégia define uma linha de stop loss dinâmica baseada no indicador Average True Range (ATR) para rastrear as mudanças de preço das ações, a fim de proteger o stop loss enquanto maximiza o lucro.

Estratégia lógica

A estratégia é aplicada principalmente através das seguintes etapas:

  1. Calcular o indicador ATR, o período ATR é definido pelo parâmetro nATRPeriod, por defeito para 5;

  2. Calcular a linha de stop loss com base no valor ATR, a magnitude de stop loss é definida pelo parâmetro nATRMultip, por defeito 3,5 vezes o ATR;

  3. Quando o preço subir, se superior à linha de stop loss anterior, ajustar a linha de stop loss até ao preço menos a magnitude de stop loss; quando o preço cair, se inferior à linha de stop loss anterior, ajustar a linha de stop loss para baixo até ao preço mais a magnitude de stop loss;

  4. Julgar se o preço atravessa a linha de stop loss, se atravessa, enviar sinais de compra ou venda;

  5. Entrar em posições longas ou curtas com base nos sinais de ruptura da linha de stop loss, e fechar posições quando o preço tocar a linha de stop loss novamente.

Quando o preço sobe, a linha de stop loss vai subir continuamente para bloquear os lucros. Quando o preço cai, a linha de stop loss vai descer continuamente para parar as perdas. O indicador ATR pode refletir a flutuação de preços com mais precisão. Ajustar dinamicamente a linha de stop loss com base no ATR pode evitar uma stop loss excessivamente agressiva ou excessivamente conservadora.

Análise das vantagens

  • Ajustar dinamicamente a linha de stop loss para evitar a expansão da perda
  • O ajustamento da linha de stop loss é relativamente suave para evitar uma stop loss prematura
  • Utilize o indicador ATR para calcular uma magnitude de stop loss mais razoável com base na volatilidade mais recente
  • Trail stop linha de perda para bloquear os lucros de forma eficaz

Análise de riscos

  • A definição do parâmetro ATR deve ser cuidadosa, um período ATR demasiado curto pode causar flutuações excessivas da linha de stop loss, um período demasiado longo pode não reflectir a variação do preço no tempo
  • A magnitude do stop loss deve ser definida de acordo com a volatilidade específica das ações, valores excessivamente elevados ou baixos afetarão o desempenho da estratégia
  • O trailing stop loss pode reduzir a margem de lucro, interrompendo o lucro antes de outro aumento do preço
  • O ajustamento frequente das posições pode conduzir a custos de negociação mais elevados

Os parâmetros podem ser otimizados ajustando o período de ATR e a magnitude da perda de parada para encontrar o equilíbrio ideal entre a perda de parada e o atraso.

Orientações de otimização

  • Otimizar o parâmetro do período ATR para que as alterações da linha de stop loss sigam mais de perto a flutuação do preço
  • Otimizar o parâmetro de magnitude de stop loss para uma stop loss mais razoável
  • Adicionar outros indicadores ao filtro de tempo de entrada
  • Apenas vá longo quando surgir uma tendência de alta óbvia
  • Considerar a adição de um mecanismo de reentrada para participar em ações com stop loss mas expectativa de crescimento contínua

Resumo

O indicador ATR torna o ajuste da linha de stop loss mais direcionado. Mas parâmetros e estratégias de reentrada precisam de otimização adicional para reduzir paradas desnecessárias e expandir a margem de lucro.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@okadoke
////////////////////////////////////////////////////////////
// Based on Average True Range Trailing Stops Strategy by HPotter
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
////////////////////////////////////////////////////////////
strategy(title="ATR Trailing Stops Strategy", shorttitle="ATRTSS", overlay = true, 
  initial_capital=100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type="percent", commission_value=0.0)
  
nATRPeriod      = input(5, "ATR Period")
nATRMultip      = input(3.5, "ATR Multiplier")
useShorts       = input(false, "Test w/Shorts?")
daysBackMax     = input(defval = 360, title = "Max Days Back to Test", minval = 0)
daysBackMin     = input(defval = 0, title = "Min Days Back to Test", minval = 0)
msBackMax       = 1000 * 60 * 60 * 24 * daysBackMax
msBackMin       = 1000 * 60 * 60 * 24 * daysBackMin

xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = na
xATRTrailingStop := 
 iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
  iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) 
                       
pos = na 
pos := 
 iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, 
  iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
        
color = pos == -1 ? red: pos == 1 ? green : blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

isWithinTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and (msBackMin == 0 or (time < (timenow - msBackMin)))

buy     = crossover(close, xATRTrailingStop)
sell    = crossunder(close, xATRTrailingStop)

strategy.entry("LONG", long=true, when=buy and isWithinTimeBounds)
strategy.close("LONG", when=sell and isWithinTimeBounds)
strategy.entry("SHORT", long=false, when=useShorts and sell and isWithinTimeBounds)
strategy.close("SHORT", when=useShorts and buy and isWithinTimeBounds)



Mais.