
La idea central de esta estrategia es usar el rango de fluctuación de precios calculado por el indicador ATR para determinar la ruptura de precios, y el indicador EMA para determinar la dirección de la tendencia general, para que la tendencia siga el comercio. Cuando el precio se rompe desde el rango de ATR a lo largo o a lo largo de la tendencia, si la dirección de la ruptura coincide con la dirección de la EMA, la entrada se hace más o menos.
En primer lugar, la estrategia utiliza el indicador ATR para calcular el rango de fluctuación de los precios en un período determinado. El rango de ATR tiene un límite superior de SMA + ATR y un límite inferior de SMA-ATR.
Cuando el precio se rompe por encima o por debajo del rango de ATR, se crea una oportunidad de negociación. En este momento, se necesita determinar la dirección, si es una ruptura hacia arriba, se hace más, si es una ruptura hacia abajo, se hace vacío.
Finalmente, la estrategia utiliza el retorno del precio a la brecha ATR como señal de posición baja. Si el precio cae por encima de la brecha inferior, la posición baja es cerrada; Si el precio cae por encima de la brecha superior, la posición baja es cerrada.
El uso del indicador ATR para juzgar las rupturas permite capturar eficazmente las rupturas de tendencia de los precios. El rango de ATR se establece en función de la tasa de fluctuación y no interfiere demasiado con la fluctuación normal.
El incremento de los EMA como indicadores de dirección, evitando el comercio en contra de la dirección de la tendencia, puede aumentar considerablemente la tasa de ganancias.
El uso de la reversión de precios para romper el rango ATR como método de parada de pérdidas puede controlar al máximo el riesgo de pérdidas.
En situaciones convulsivas, el rango de ATR puede ser interrumpido con frecuencia, lo que puede provocar demasiadas transacciones no válidas y pérdidas ampliadas.
La EMA, como indicador para determinar la dirección de la tendencia, tiene un cierto retraso. Por lo tanto, puede perder la oportunidad de una reversión a corto plazo de los precios.
El método de stop loss es el retorno del precio, que es susceptible a la expansión de las pérdidas por eventos inesperados.
Se puede considerar la combinación de otros indicadores para juzgar la tendencia y la retirada, para evitar un error de juicio único de la EMA. Por ejemplo, MACD, KDJ, etc.
Se puede considerar ajustar los parámetros de ATR en tiempo real en función de la volatilidad del mercado para que el rango de ATR esté más cerca de la fluctuación real.
Se puede combinar con un modo móvil de parada, ajustando el punto de parada en tiempo real, para controlar al máximo el riesgo de pérdida individual.
Esta estrategia tiene una idea clara, utiliza el indicador ATR para determinar la ruptura del precio y la dirección de la evaluación de la EMA, para seguir la tendencia de manera efectiva; el método de parada es directo y fácil de operar. Pero al mismo tiempo, existe un cierto riesgo, el espacio de optimización es grande, que debe ser probado y ajustado. En general, esta estrategia es adecuada para los operadores de tendencias que buscan una alta ganancia.
/*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)
//------------