Estrategia de ruptura del canal de precios ZZ-4


Fecha de creación: 2023-09-21 10:59:55 Última modificación: 2023-09-21 10:59:55
Copiar: 0 Número de Visitas: 647
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia se basa en el canal de precios del indicador ZZ para negociar y utilizar las señales de que el precio ha roto el límite superior del canal hacia arriba o el límite inferior del canal hacia abajo para establecer posiciones de más o menos cabeza. Esta estrategia trata de capturar los estallidos de la tendencia fuera del rango del canal de precios.

Principio de estrategia

  1. Calcular el límite superior y inferior del canal de precios
  2. Hacer más cuando los precios suben por encima del límite
  3. Hacer un descuento cuando el precio baja por encima del límite
  4. Ajuste el tiempo de inicio y finalización de la operación
  5. Cancelación diaria antes del cierre del mercado

En concreto, la estrategia calcula el límite superior y inferior del canal de precios a través del indicador ZZ. Cuando el precio rompe el límite superior desde abajo, se hace una entrada adicional; Cuando el precio rompe el límite inferior desde arriba, se hace una entrada de baja.

Análisis de las ventajas

  1. Tiene cierta capacidad para identificar tendencias y para determinar brechas de tendencias potenciales utilizando canales de precios.
  2. Las señales de trading son sencillas, intuitivas y fáciles de juzgar.
  3. Parámetros de ciclo de canal personalizables para diferentes variedades y ciclos
  4. Establecer un rango de fechas y días de liquidación ayuda a controlar el riesgo
  5. La adopción de una orden de detención de pérdidas, que puede limitar las pérdidas individuales

Análisis de riesgos

  1. Las fluctuaciones en el rango de los canales de precios pueden provocar múltiples paros
  2. Se requiere ajuste de los parámetros en el momento oportuno, de lo contrario el alcance de la vía puede ser inexacta
  3. La brecha podría ser falsa, con riesgo de ser encubierta
  4. Las ganancias potenciales se limitan al rango de los canales de precios
  5. El espacio de ganancias de la tendencia no se aprovecha al máximo

Se pueden reducir los riesgos mencionados por medio de la flexibilización de los intervalos de los canales, la optimización de las estrategias de stop loss y la evaluación de la fuerza de la tendencia.

Dirección de optimización

  1. Prueba diferentes parámetros para encontrar la mejor combinación
  2. La liberación de los canales de precios para captar el panorama más amplio
  3. Introducción de indicadores para juzgar tendencias y evitar falsas rupturas
  4. Optimización de las estrategias de detención de pérdidas y prevención de estafas
  5. Aumentar el porcentaje de posiciones para maximizar las ganancias de la ruptura
  6. Evaluación de las tasas de rendimiento en diferentes rangos de fechas

Resumir

Esta estrategia se basa en el canal de precios para determinar el punto de ruptura de la tendencia. La ventaja es que las señales de negociación son simples, el stop loss es claro y fácil de operar; La desventaja es que hay frecuentes saltos y no se aprovecha al máximo la tendencia.

Código Fuente de la Estrategia
/*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")