
A idéia central desta estratégia é usar a amplitude de oscilação do preço calculada pelo indicador ATR para determinar a ruptura do preço e o indicador EMA para determinar a direção da tendência geral, para que a tendência siga a negociação. Quando o preço se rompe do nível do ATR ou do nível inferior, se a direção da ruptura coincidir com a direção do EMA, a entrada é feita com mais ou com menos.
Em primeiro lugar, a estratégia usa o indicador ATR para calcular a amplitude de flutuação dos preços em um determinado período. A amplitude de ATR tem um limite superior de SMA+ATR e um limite inferior de SMA-ATR. O SMA representa a média móvel simples do preço de fechamento do dia e o ATR representa a média real da amplitude.
Quando o preço se rompe acima ou abaixo da faixa ATR, uma oportunidade de negociação é criada. É necessário determinar a direção, se for uma ruptura para cima, mais, se for uma ruptura para baixo, nada. Para garantir que a direção da ruptura coincida com a direção da tendência, a estratégia usa o indicador EMA para determinar a direção da tendência geral.
Finalmente, a estratégia usa o retorno do preço para a área ATR como sinal de parada. Se o preço for mais alto, o preço será mais baixo; Se o preço for mais baixo, o preço será mais baixo.
O uso do indicador ATR para julgar a ruptura, pode efetivamente capturar a ruptura da tendência de preços. O alcance do ATR é definido de acordo com a taxa de flutuação, sem causar muita interferência na flutuação normal.
A adição de EMAs como indicadores de direção, evitando negociações contra a direção da tendência, pode aumentar significativamente a taxa de lucro.
O uso do retorno do preço para fora da ATR como uma forma de parar o risco de perda pode ser o máximo possível.
Em situações de turbulência, a gama de ATR pode ser frequentemente rompida, o que pode levar a transações inúteis e perdas excessivas.
A EMA é um indicador de direção de tendência, com um certo atraso. Portanto, pode perder a oportunidade de uma reversão de curto prazo.
O método de parada de perda é o retorno do preço, que é propenso a expandir os prejuízos causados por eventos inesperados.
Pode-se considerar a combinação de outros indicadores para julgar tendências e retrações, evitando erros de julgamento de um único EMA, como MACD, KDJ, etc.
Pode-se considerar ajustar os parâmetros do ATR em tempo real de acordo com a taxa de flutuação do mercado, para que o alcance do ATR fique mais próximo da flutuação real.
Pode ser combinado com o modo de parada móvel, ajustando o ponto de parada em tempo real, controlando o máximo o risco de perda individual.
Esta estratégia é clara, utiliza o indicador ATR para determinar a ruptura do preço e acompanha a direção do julgamento da EMA, para acompanhar a tendência de forma eficaz. A forma de parar o prejuízo é direta e fácil de operar. Mas, ao mesmo tempo, existe um certo risco, o espaço de otimização é grande, há que testar e ajustar ainda mais.
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cwagoner78
//@version=4
strategy("cATRpillar", overlay=true)
//------------
//inputs
lookback = input(title="Periods", type=input.integer, defval=37)
atrMult = input(title="Range Multiplier", type=input.float, defval=.2)
takeProfit = input(title="Take Profit", type=input.float, defval=5000)
stopLoss = input(title="Stop Loss", type=input.float, defval=2500)
lots = input(title="Lots to Trade", type=input.float, defval=1)
//------------
//indicators
atr=atr(lookback)*atrMult
sma=sma(close, lookback)
ema=ema(close,lookback*2)
rangeLo=sma-atr
rangeHi=sma+atr
//------------
//draw objects
p0 =plot(close, title="Close", color=#26A69A, linewidth=0, transp=80,style=plot.style_stepline)
p1 =plot(rangeHi, title="High", color=color.fuchsia, linewidth=0, transp=80,style=plot.style_stepline)
p2 =plot(rangeLo, title="Low", color=color.lime, linewidth=0, transp=80,style=plot.style_stepline)
p3 =plot(ema, title="EMA", color=color.white, linewidth=0, transp=80, style=plot.style_stepline)
fill(p1, p0, color=color.fuchsia)
fill(p0, p2, color=color.lime)
//------------
//Trading
atrShort=open[1] > rangeHi and open < rangeLo
atrLong=open[1] < rangeLo and open > rangeHi
exitLong=open>rangeLo
exitShort=open<rangeHi
//Long
longCondition=atrLong and open>ema+atr
strategy.entry(id="cATRpillar-Buy", long=true, when=longCondition)
longCloseCondition=exitLong
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=longCloseCondition)
//Short
shortCondition=atrShort and open<ema-atr
strategy.entry(id="cATRpillar-Sell", long=false, when=shortCondition)
shortCloseCondition=exitShort
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=shortCloseCondition)
plotshape(shortCondition, title= "Short", location=location.belowbar, color=color.fuchsia, transp=80, style=shape.triangledown, size=size.tiny)
plotshape(longCondition, title= "Long", location=location.abovebar, color=color.lime, transp=80, style=shape.triangleup, size=size.tiny)
//------------