Estrategia de stop loss dinámico con doble ATR


Fecha de creación: 2024-01-31 17:10:32 Última modificación: 2024-01-31 17:10:32
Copiar: 3 Número de Visitas: 921
1
Seguir
1617
Seguidores

Estrategia de stop loss dinámico con doble ATR

Descripción general

La estrategia de doble ATR es una estrategia de trading de corta línea basada en el indicador de la amplitud real media (ATR). La estrategia establece dos líneas de alto riesgo de ATR rápido y una de baja riesgo de ATR lento al mismo tiempo, para determinar la entrada y la salida en función de la intersección de las dos líneas de alto riesgo. La estrategia es simple y fácil de entender, responde rápidamente y es adecuada para mercados de alta volatilidad.

Principio de estrategia

La estrategia utiliza principalmente el indicador ATR para establecer dos líneas de parada de pérdidas. Una es la línea ATR rápida, con un ciclo ATR corto, multiplicado por pequeño, de rápida respuesta; la otra es la línea ATR lenta, con un ciclo ATR largo, multiplicado por grande, que actúa como un filtro.

La lógica de operación específica es: calcular la línea ATR rápida y la línea ATR lenta; si el precio de la línea rápida es más alto que el de la línea lenta, se detendrá con la línea rápida, o se detendrá con la línea lenta. El color Kline indica la línea de parada actualmente en uso, el verde y el azul indican la parada con la línea rápida, el rojo y el amarillo indican la parada con la línea lenta.

Análisis de las ventajas

La estrategia de doble ATR para detener el seguimiento de pérdidas tiene las siguientes ventajas:

  1. La lógica de la operación es simple, clara y fácil de entender.
  2. Responder rápidamente a los cambios en el mercado, adecuado para mercados con alta volatilidad.
  3. El doble ATR para el control de pérdidas de riesgo, para el control de pérdidas efectivas.
  4. El indicador ATR está parametrizado, lo que permite ajustar el stop loss.
  5. El color Kline de la visualización muestra claramente el estado de deterioro.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Las transacciones son muy frecuentes.
  2. El indicador ATR tiene una mala adaptación a la curva, lo que puede ocasionar pérdidas de aumento.
  3. No se puede filtrar eficazmente el horizonte y la tendencia en las dos fases del mercado.

Se pueden reducir estos riesgos mediante la optimización de los ciclos ATR, la adaptación de la multiplicación de ATR y la combinación de filtros de otros indicadores.

Dirección de optimización

Las direcciones en las que se puede optimizar aún más la estrategia de parada de pérdidas de seguimiento de doble ATR incluyen:

  1. Optimización de los parámetros ATR y ajuste de la amplitud de stop loss.
  2. Aumentar los indicadores de filtración para evitar transacciones no válidas. Por ejemplo, aumentar los indicadores de medias para juzgar la tendencia.
  3. Aumentar las condiciones de apertura de posiciones para evitar errores de transacción. Por ejemplo, aumentar el indicador de energía de volumen de transacción.
  4. Aumentar el tiempo de tenencia de posiciones y las salidas para evitar el exceso de transacciones frecuentes.

Resumir

La estrategia de detención de pérdidas de seguimiento de doble ATR es fácil de entender y implementar en general, especialmente adecuada para escenarios de alta volatilidad, y permite un control de riesgo eficaz. El espacio de optimización también es grande, y se puede mejorar mediante el ajuste de parámetros, la adición de filtros, etc. Es una estrategia de línea corta recomendable.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
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/
// © ceyhun

//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)

/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and        //
// different interpretation.                        //
// This is a fast-reacting system and is better     //
// suited for higher volatility markets             //
//////////////////////////////////////////////////////

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

// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer)  // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float)  // ATR Factor
SL1 = AF1 * atr(AP1)  // Stop Loss
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) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))

// Slow Trail //
AP2 = input(10, "Slow ATR perod", input.integer)  // ATR Period
AF2 = input(2, "Slow ATR multiplier", input.float)  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
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) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))

// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2

// Signals //
Bull = barssince(Green) < barssince(Red)
Bear = barssince(Red) < barssince(Green)

Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)

TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.green : color.red, transp=90)

plotcolor = input(true, "Paint color on chart", input.bool)

bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)

if Buy
    strategy.entry("Buy", strategy.long, comment="Buy")
    
if Sell
    strategy.entry("Sell", strategy.short, comment="Sell")