Estrategia de detención de tracción basada en ATR para los vehículos eléctricos

El autor:¿ Qué pasa?, fecha: 2024-01-12 14:52:23
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de trailing stop aplicada a los futuros E-mini S&P500 (ES). Utiliza ATR de 10 días como referencia y establece el rango de stop loss a 3 veces ATR para definir líneas de stop largas y cortas. La estrategia juzga la tendencia por el cambio de dirección de las líneas ATR y genera señales de entrada en los puntos de inflexión de la tendencia. Una vez ingresada, ajustará las líneas de stop loss en tiempo real para seguir el movimiento del precio, protegiendo las ganancias.

Estrategia lógica

La estrategia utiliza hl2 como fuente de precio. Primero calcula el ATR de 10 días, y permite al usuario elegir entre usar el método SMA o la función ATR incorporada para calcular el ATR. Después de obtener el ATR, agrega 3 veces el ATR hacia arriba y hacia abajo para formar el rango.

El método para juzgar la tendencia es cuando el precio excede el límite superior, es largo; cuando el precio rompe el límite inferior, es corto. Cuando el precio vuelve al rango, confirma la inversión de tendencia. En este momento, si se gira de corto a largo, generará una señal de entrada larga; si se gira de largo a corto, generará una señal de entrada corta.

Después de entrar, la línea de stop loss larga se establece en el límite superior menos 1 tick, y la línea de stop loss corta se establece en el límite inferior más 1 tick, detrás para proteger las ganancias.

Ventajas

  1. El uso de ATR puede adaptarse automáticamente a los cambios en la volatilidad del mercado y reducir la probabilidad de que se inicie un stop loss.
  2. El método de seguimiento de tendencias es simple y eficaz para evitar los riesgos de perseguir los picos y los fondos.
  3. Los trailing stops bloquean las ganancias y evitan devolver operaciones rentables.

Análisis de riesgos

  1. La configuración incorrecta de los parámetros ATR puede hacer que el intervalo de pérdida de parada sea demasiado grande o demasiado pequeño.
  2. Los cambios drásticos en la volatilidad del subyacente pueden provocar una activación anormal del stop loss.
  3. Las paradas de seguimiento pueden ser demasiado conservadoras para seguir la tendencia.

Direcciones de optimización

  1. Considere la posibilidad de optimizar los parámetros ATR combinados con las métricas de volatilidad.
  2. Prueba diferentes algoritmos de trailing stop como el porcentaje de trailing stops, etc.
  3. Filtrar las señales de entrada combinadas con los indicadores de tendencia para evitar señales de tendencia falsas.

Conclusión

En general, esta es una estrategia de seguimiento de tendencia robusta. Soluciona el problema de determinar el rango de pérdida de parada y reduce los riesgos ajustando las paradas dinámicamente en función de ATR. Al mismo tiempo, las paradas de seguimiento bloquean las ganancias. Pero todavía hay espacio para optimizar parámetros como los períodos de ATR, los algoritmos de parada, etc. Con más pruebas y ajustes, esta estrategia puede convertirse en una estrategia de seguimiento de tendencia con alta robustez.


/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Based Trailing Stop Strategy on ES! [v4]", overlay=true)

// Given ATR study
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Entry logic based on trend change
longCondition = trend == 1 and trend[1] == -1
shortCondition = trend == -1 and trend[1] == 1

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trailing stop loss logic
// For long positions, trail 1 point below the up plot
longStopPrice = up - 1

// For short positions, trail 1 point above the dn plot
shortStopPrice = dn + 1

strategy.exit("Trailing Stop Long", "Long", trail_offset=longStopPrice)
strategy.exit("Trailing Stop Short", "Short", trail_offset=shortStopPrice)


Más.