La idea central de esta estrategia es utilizar el rango de fluctuación de precios calculado por el indicador ATR para juzgar los avances de precios, y el indicador EMA para juzgar la dirección general de la tendencia, a fin de lograr la tendencia después de la negociación.
En primer lugar, esta estrategia utiliza el indicador ATR para calcular el rango de fluctuación de precios durante un cierto período. El límite superior del rango ATR es SMA+ATR, y el límite inferior es SMA-ATR. Donde SMA representa el promedio móvil simple del precio de cierre del día, y ATR representa el promedio de rango verdadero.
Cuando el precio rompe el límite superior o inferior del rango ATR, se produce una oportunidad comercial. En este momento, es necesario juzgar la dirección. Si es un avance ascendente, vaya largo. Si es un avance descendente, vaya corto. Para garantizar que la dirección del avance sea consistente con la dirección de la tendencia, la estrategia utiliza el indicador EMA para determinar la dirección general de la tendencia. Solo cuando la dirección del avance sea consistente con la dirección de la EMA se tomará una posición.
Finalmente, la estrategia utiliza el precio que rompe el rango ATR nuevamente como la señal de cierre.
El uso del indicador ATR para determinar los avances puede capturar de manera efectiva los avances de la tendencia de precios.
La adición del indicador EMA como un juicio direccional evita el comercio en contra de la dirección de la tendencia, lo que puede mejorar en gran medida la tasa de ganancia.
El uso de la ruptura del precio por encima del rango ATR como método de stop loss puede maximizar el control del riesgo.
En un mercado volátil, el intervalo ATR puede penetrar con frecuencia, lo que conduce fácilmente a operaciones excesivamente inválidas y a pérdidas más amplias.
El EMA como indicador para juzgar la dirección de la tendencia tiene cierto retraso, por lo que puede perder oportunidades de reversión de precios a corto plazo.
El método de stop loss es el retorno del precio por encima del rango, lo que puede llevar fácilmente a pérdidas ampliadas debido a eventos repentinos.
Considere combinar otros indicadores para determinar tendencias y retrocesos para evitar errores de juicio singulares de la EMA, como MACD, KDJ, etc.
Considere ajustar los parámetros ATR en tiempo real de acuerdo con la volatilidad del mercado para que el intervalo ATR esté más cerca de la fluctuación real.
Considerar la incorporación de un método de stop loss móvil para ajustar continuamente el punto de stop loss para maximizar el control del riesgo de pérdidas individuales.
La idea general de esta estrategia es clara, utilizando el indicador ATR para determinar los avances de precios y cooperando con la EMA para determinar la dirección, puede seguir efectivamente las tendencias; el método de stop loss es sencillo y fácil de operar. Pero al mismo tiempo, hay ciertos riesgos y un gran margen de optimización que necesitan más pruebas y ajustes. En general, esta estrategia es adecuada para los traders de tendencia que persiguen altas tasas de 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) //------------