ZZ-4 Estrategia de ruptura del canal de precios

El autor:¿ Qué pasa?, Fecha: 2021-09-21 10:59:55
Las etiquetas:

Resumen general

Esta estrategia se opera basándose en el canal de precios del indicador ZZ, tomando posiciones largas / cortas cuando el precio se rompe por encima / por debajo de las bandas del canal.

Estrategia lógica

  1. Calcular las bandas superior/inferior del canal de precios
  2. Ir largo cuando el precio se rompe por encima de la banda superior
  3. Ir corto cuando el precio se rompe por debajo de la banda inferior
  4. Rango de tiempo de negociación establecido
  5. Posiciones claras antes del cierre diario

Específicamente, utiliza el indicador ZZ para calcular las bandas de canal de precios. Cuando el precio se rompe hacia arriba desde la banda inferior, ir largo. Cuando el precio se rompe desde la banda superior, ir corto. Las órdenes de stop loss se utilizan con las bandas de canal como niveles de stop loss.

Análisis de ventajas

  1. El canal de precios identifica posibles rupturas de tendencia
  2. Señales comerciales simples y claras
  3. Período de canal personalizable para diferentes productos y ciclos
  4. Horario de negociación y gestión de riesgos de salida diaria
  5. Limitaciones de pérdidas de detención de pérdidas de transacción única

Análisis de riesgos

  1. Las flechas en el interior del canal pueden golpear repetidamente el stop loss
  2. Requiere ajuste oportuno de parámetros, de lo contrario el rango de canales puede ser inexacto
  3. Las fugas pueden ser falsas, el riesgo de quedar atrapados.
  4. El potencial de ganancia está limitado por el rango de canales
  5. No capitaliza plenamente los movimientos de tendencia

Los riesgos pueden reducirse ampliando el rango del canal, optimizando el stop loss, evaluando la fuerza de la tendencia, etc.

Direcciones de optimización

  1. Prueba diferentes combinaciones de parámetros para obtener la mejor configuración
  2. Ampliar el canal de precios para capturar movimientos más grandes
  3. Añadir un indicador de tendencia para evitar falsas rupturas
  4. Optimice el stop loss para evitar quedarse atrapado
  5. Aumentar el tamaño de la posición para maximizar las ganancias de ruptura
  6. Evaluar la rentabilidad en diferentes intervalos de fecha

Resumen de las actividades

Esta estrategia opera las rupturas de los canales de precios para identificar los brotes de tendencia. Los pros son señales claras y fáciles de operar; los contras son los golpes y la falta de tendencias. La optimización de parámetros y la combinación de estrategias pueden superar los contras mientras se retienen los pros. Ayuda a los operadores a dominar la aplicación de técnicas de canales de precios.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", 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, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
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")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Más.