En la carga de los recursos... Cargando...

Tendencia de seguimiento de la estrategia de parada de seguimiento del rango verdadero promedio

El autor:¿ Qué pasa?, Fecha: 2024-05-24 18:12:01
Las etiquetas:El ATRTítulo de los productos

img

Resumen general

Esta estrategia utiliza el Rango Verdadero Promedio (ATR) como base para un Trailing Stop (TS), ajustando dinámicamente la posición de stop-loss para seguir la tendencia. Cuando el precio se mueve en una dirección favorable, la posición de stop-loss se ajusta en consecuencia para bloquear las ganancias; cuando el precio se mueve en una dirección adversa, la posición de stop-loss permanece sin cambios, y una vez que el precio alcanza el precio de stop-loss, la posición se cierra. La clave de esta estrategia radica en el ajuste dinámico de la posición de stop-loss, que puede proteger las ganancias y permitir que las ganancias se expandan a medida que continúa la tendencia.

Principio de la estrategia

  1. Calcular el ATR como base para la parada de seguimiento.
  2. Calcular la distancia de stop-loss nLoss basándose en el parámetro ATR y KeyValue. KeyValue es un multiplicador definido por el usuario, y nLoss es el producto de KeyValue y ATR, lo que indica que la distancia de stop-loss es varias veces el ATR.
  3. Para una posición larga, se establece en el mayor de el precio más alto de la vela anterior y (cierre - nLoss) ; para una posición corta, se establece en el menor de el precio más bajo de la vela anterior y (cierre + nLoss) .
  4. Generar señales de entrada. Cuando el precio de cierre cruza por encima de xATRTrailingStop, ir largo; cuando el precio de cierre cruza por debajo de xATRTrailingStop, ir corto.

Análisis de ventajas

  1. La posición de stop-loss se ajusta dinámicamente con las fluctuaciones de precios, lo que permite que las ganancias se bloqueen al tiempo que permite que las ganancias se expandan a medida que continúa la tendencia.
  2. La posición de stop-loss se basa en el cálculo ATR, que puede reflejar objetivamente la volatilidad del mercado y es más flexible y eficaz en comparación con las posiciones de stop-loss fijas establecidas subjetivamente.
  3. Al amplificar el ATR con el parámetro KeyValue, puede establecer una distancia de stop-loss apropiada en función de sus preferencias de riesgo.

Análisis de riesgos

  1. Las estrategias de seguimiento de tendencias tienen un mal rendimiento en mercados inestables, y cuando la tendencia unilateral no es clara, los frecuentes stop-loss pueden conducir a una pérdida rápida de fondos.
  2. El momento de entrada se basa en la señal cruzada entre el precio de cierre y la línea dinámica de stop-loss, que puede dar lugar a pequeñas stop-loss consecutivas en un mercado inestable.
  3. Las estrategias de stop de seguimiento no pueden evitar los vacíos causados por noticias bajistas o alcistas significativas, y la velocidad de ajuste de la posición de stop-loss no puede mantenerse al día con la velocidad de cambio de precios, lo que resulta en pérdidas reales mucho mayores que las pérdidas controlables esperadas.

Dirección de optimización

  1. Los indicadores de evaluación de tendencias, como los sistemas de promedios móviles e indicadores de impulso, pueden añadirse a la estrategia para entrar en el mercado solo cuando la tendencia sea clara, evitando el comercio frecuente en mercados agitados.
  2. Se puede considerar una estrategia de toma de ganancias, como el cálculo de los tamaños de las posiciones basados en la fórmula de Kelly, el establecimiento de puntos de ganancia fijos para los stop-profit de retroceso, etc., para reducir la posibilidad de posibles devoluciones de ganancias al final de una tendencia.
  3. Para las aberturas de gap, se puede establecer un límite máximo de stop-loss, como un importe fijo o un porcentaje fijo.

Resumen de las actividades

La estrategia ATR trailing stop puede ajustar dinámicamente la posición de stop-loss en función de la magnitud de las fluctuaciones de precios y puede lograr buenos resultados en los mercados de tendencia. Sin embargo, esta estrategia también tiene riesgos como la incapacidad de hacer frente a los mercados agitados, la frecuencia excesiva de stop-loss y la dificultad para evitar las aberturas de brechas. Para abordar estas deficiencias, la estrategia puede ser optimizada y mejorada en términos de juicio de tendencia, estrategias de toma de ganancias y límites máximos de stop-loss.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')


Relacionados

Más.