Estrategia de seguimiento de tendencias adaptativas para detener pérdidas

El autor:¿ Qué pasa?, Fecha: 2023-10-17 14:04:28
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el método Wilder de volatilidad de trailing stop, combinado con el indicador ATR y diferentes tipos de medias móviles, para implementar una estrategia de stop loss de seguimiento de tendencias adaptativa.

Estrategia lógica

El núcleo de esta estrategia es el algoritmo de stop de volatilidad de trailing de Wilder. Primero calcula el indicador ATR y traza dinámicamente la línea de stop loss de acuerdo con la longitud y el multiplicador de entrada ATR. Luego rastrea el máximo y el mínimo más alto de la línea de stop loss basado en la opción de precio elegida entre los precios cerrados, altos y bajos. Envía señales comerciales cuando el precio rompe la línea de stop loss.

En el código, la función f_ma implementa varios promedios móviles, incluyendo RMA, EMA, SMA y Hull MA. El indicador ATR se calcula y multiplica por el multiplicador definido por el usuario para generar la línea de parada posterior basada en la volatilidad. Los niveles más altos y más bajos de esta línea se rastrean utilizando las funciones más altas y más bajas. Se realizan operaciones cuando el precio penetra esta línea de parada posterior.

Al utilizar de manera flexible el indicador ATR, diferentes promedios móviles y parámetros ajustables, esta estrategia realiza un sistema de seguimiento de tendencias de stop loss altamente adaptable.

Análisis de ventajas

  • Esta estrategia aprovecha el algoritmo Wilder Volatility Trailing Stop, que es una metodología madura y confiable de seguimiento de tendencias para detener pérdidas.

  • La estrategia utiliza el indicador ATR para calcular dinámicamente la línea de stop loss, evitando puntos de stop loss rígidos.

  • La aplicación de varias medias móviles, incluidas RMA, EMA, SMA y Hull MA, mejora la adaptabilidad de la estrategia.

  • Al ajustar la longitud del ATR, los parámetros del multiplicador, los parámetros optimizados se pueden encontrar para diferentes mercados, mejorando el rendimiento de la estrategia.

  • El uso de diferentes opciones de precios como precios altos, bajos y cerrados permite la optimización en diferentes productos.

  • En resumen, esta es una estrategia de seguimiento de tendencias confiable, adaptable y fácilmente optimizable.

Análisis de riesgos

  • La estrategia se basa en gran medida en la optimización de parámetros. Los parámetros ATR y multiplicador apropiados deben encontrarse a través de pruebas para diferentes mercados y productos, de lo contrario el efecto stop loss puede no ser ideal.

  • En los mercados variados, la línea de stop loss ATR puede desencadenar frecuentes stop outs injustificados.

  • Si la línea de stop loss es demasiado amplia, se perderán las oportunidades de pérdida. Si es demasiado estrecha, la frecuencia de las operaciones y los costos de deslizamiento aumentarán.

  • Para cada producto se debe seleccionar un promedio móvil principal, y los demás solo se utilizan como referencia.

  • Esta estrategia se centra en el seguimiento de tendencias y no se dirige directamente a las ganancias.

  • Con parámetros inadecuados, la estrategia puede presentar períodos de negociación excesivos o de retención de gran tamaño.

Direcciones de optimización

  • Se pueden introducir indicadores de identificación de tendencias para evitar problemas en mercados variados.

  • Los indicadores de reversión pueden probarse para permitir una detención y una reversión más rápidas cuando la tendencia alcista y la tendencia bajista se alternan.

  • El parámetro del período ATR puede correlacionarse con las características del producto, de modo que los diferentes productos utilicen períodos ATR diferentes.

  • Los indicadores de volumen se pueden utilizar para apretar la línea de stop loss más rápidamente cuando el volumen disminuye significativamente.

  • El porcentaje de pérdida de parada puede aumentarse, pero no demasiado estrecho para evitar detenerse en retracements normales.

  • Otros indicadores se pueden utilizar para medir el impulso y optimizar los parámetros para aflojar las paradas cuando el impulso es débil.

Resumen de las actividades

Basada en el concepto de WILDER VOLATILITY TRAILING STOP, esta estrategia utiliza el indicador ATR para diseñar un sistema de seguimiento de tendencia de stop loss altamente adaptable. A través de la optimización de parámetros, se puede adaptar a diferentes productos comerciales, y es un enfoque de stop loss confiable y práctico. Pero los riesgos deben administrarse mediante mejoras adicionales como filtros de tendencia y elementos de volumen para hacerlo más robusto. También debe combinarse con otras estrategias para maximizar la utilidad de las técnicas de stop loss.


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

// Wilder's Volatility Trailing Stop Strategy with various MA's
// by SparkyFlary

//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true)

AtrMult = input(3.0, title="ATR multiplier")
ATRlength = input(7, title="ATR length")
ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"])
sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"])

//function for choosing moving averages
f_ma(type, src, len) =>
    float result = 0
    if type == "RMA" // Wilder's moving averaege or Running moving average
        result := rma(src, len)
    if type == "EMA" // Exponential moving average
        result := ema(src, len)
    if type == "SMA" // Simple moving average
        result := sma(src, len)
    if type == "HULL" // Hull moving average
        result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
    result

ATR = f_ma(ATRavgType, tr, ATRlength)
upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR
lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR

float TS = 0
TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS

//plot
plot(TS, title="trailing stop", color=close<TS?color.red:color.green)

//Strategy
buy = crossover(close, TS)
//sell = close < TS
short = crossunder(close, TS)
//cover = close > TS

strategy.entry(id="enter long", long=true, when=buy)
//strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
//strategy.close(id="enter short", comment="exit short", when=cover)

Más.