Este artículo presenta una estrategia de trading llamada
El núcleo de esta estrategia es utilizar el indicador ZigZag para localizar puntos extremos de los precios y mostrar las tendencias de los precios.
Calcule la EMA promedio móvil exponencial de los precios cerrados, incluyendo tres líneas de promedio móvil: línea rápida, línea media y línea lenta.
Juzga si los precios están en una tendencia alcista, es decir, si la línea media actual es superior a la línea media de la línea K anterior.
Si actualmente se encuentra en una tendencia al alza, encuentre el precio más bajo contado desde el comienzo de la ola anterior de puntos bajos dentro del ciclo detectado como el valor de ZigZag.
Si actualmente se encuentra en una tendencia a la baja, encuentre el precio más alto contado desde el comienzo de la ola anterior de puntos altos dentro del ciclo detectado como el valor de ZigZag.
Así, se forma el indicador ZigZag que refleja los puntos extremos de las fluctuaciones de precios.
Sobre esta base, utilizamos la línea ZigZag como referencia para juzgar la tendencia del precio. Es decir, cuando el precio sube y rompe la línea del indicador ZigZag, vamos largo; cuando el precio cae y rompe la línea del indicador ZigZag, vamos corto.
Las ventajas de utilizar el indicador ZigZag para determinar las tendencias de los precios y seguir los extremos de los precios a medida que se establecen las posiciones son:
Puede filtrar eficazmente el ruido del mercado y capturar las principales tendencias.
Las señales comerciales establecidas en las rupturas de nuevos máximos y mínimos pueden obtener ganancias de manera eficiente.
Las líneas ZigZag son relativamente lisas, lo que puede reducir las señales falsas.
Fácil de optimizar estrategias ajustando parámetros ZigZag.
Los principales riesgos de esta estrategia son:
El funcionamiento a largo plazo puede quedar atrapado debido a violentas fluctuaciones en el mercado.
Los indicadores ZigZag son sensibles a los parámetros. Los ajustes incorrectos pueden perder oportunidades comerciales o generar señales falsas. Los parámetros deben ser probados y optimizados adecuadamente.
Las estrategias de seguimiento de tendencias dependen más de los mercados de tendencias.
En respuesta a los riesgos anteriores, podemos establecer mecanismos de stop loss para controlar pérdidas individuales; al mismo tiempo, ajustar el tamaño de la posición en lugar de buscar una posición completa; finalmente, combinar diferentes tipos de cartera de estrategias.
Podemos optimizar aún más esta estrategia en los siguientes aspectos:
Añadir un mecanismo de stop loss, por ejemplo, establecer un stop loss móvil o un stop loss para la amplitud de retroceso del precio.
Combinar con otros indicadores para el filtro de posición. Por ejemplo, mejorar los indicadores de impulso para garantizar un impulso suficiente; o los indicadores de volumen de operaciones para garantizar altos volúmenes de operaciones.
Adoptar diferentes configuraciones de parámetros de acuerdo con los diferentes entornos de mercado (como los mercados alcista y bajista).
Prueba diferentes parámetros de línea EMA para encontrar la mejor combinación de parámetros.
Esta estrategia utiliza el indicador ZigZag para determinar tendencias de precios y establecer posiciones de seguimiento cerca de puntos extremos. Su ventaja es seguir la tendencia de manera eficiente para obtener ganancias. También tiene el riesgo de quedar atrapado. Podemos establecer stop loss, optimizar parámetros y cartera de estrategia comercial para controlar riesgos. Esta estrategia es más adecuada para el comercio de tendencias a medio y largo plazo. Si se controla y combina adecuadamente, puede obtener retornos estables.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-07 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") length = input(4) ExtremeDetection = input(4) src = input(close) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //ZigZag f_zz(_length, _detection)=> _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33)) _isRising = _hls >= _hls[1] _zigzag = _isRising and not _isRising[1] ? lowest(_detection) : not _isRising and _isRising[1] ? highest(_detection) : na zigzag = f_zz(length, ExtremeDetection) plot(zigzag, color=black, linewidth=2) //Signals up = close > zigzag dn = close < zigzag //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)