Estrategia de apertura y cierre del canal de precios de impulso

El autor:¿ Qué pasa?, Fecha: 2023-12-06 16: 44:32
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador de canal de precios. Al establecer un parámetro de impulso, calcula el valor medio de los precios más altos y más bajos en diferentes ciclos para formar la línea media del canal de precios, y establece líneas largas y cortas basadas en esto. Cuando el precio rompe la línea larga, va largo; cuando el precio rompe la línea corta, va corto. La condición final es que el precio regrese a la línea media del canal.

Principio de la estrategia

Esta estrategia utiliza el indicador de canal de precios para calcular el valor medio de los precios más altos y más bajos en diferentes ciclos para formar la línea media del canal. Basándose en la línea media, las líneas largas y cortas se establecen a través del parámetro de cambio.

Cuando el precio es inferior a la línea larga, abrir posiciones largas con órdenes límite; cuando el precio es superior a la línea corta, abrir posiciones cortas con órdenes límite.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso del indicador de canal de precios puede capturar eficazmente las tendencias de los precios y los niveles clave de soporte/resistencia.
  2. La apertura de posiciones en breakouts puede reducir las pérdidas por falsos breakouts.
  3. El método de stop loss toma directamente la línea media del canal de precios como estándar para evitar pérdidas excesivas por paradas de persecución.

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Los parámetros incorrectos del canal de precios pueden no tener tendencias activas o generar demasiadas fallas.
  2. Los métodos de apertura de ruptura implican un cierto grado de costos de deslizamiento.
  3. Incapaz de detener las pérdidas a tiempo durante los rápidos retrocesos de precios.

Los riesgos anteriores pueden mitigarse optimizando los parámetros, estableciendo órdenes de stop loss o combinando otros indicadores para el juicio.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar los parámetros del canal de precios para encontrar la mejor combinación.
  2. Pruebe diferentes métodos de apertura, como patrones de candelabro y señales de indicadores.
  3. Añadir configuraciones de orden de stop loss para evitar pérdidas por caídas rápidas de precios.
  4. Combinar el volumen de operaciones, la volatilidad y otros indicadores para evitar falsas rupturas en el mercado de valores.

Conclusión

La idea de diseño de esta estrategia basada en el indicador del canal de precios es clara. Usar el breakout para abrir posiciones puede controlar los riesgos de manera efectiva. Pero también hay grandes espacios de optimización de parámetros y mecanismos de stop loss que deben mejorarse. En general, la estrategia tiene un cierto valor práctico y vale la pena probar y optimizar más.


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

//Noro
//2018

//@version=3
strategy(title = "Noro's PCMA Strategy v1.0", shorttitle = "PCMA 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 = "Lot, %")
per = input(3, title = "Length")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
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(high, per)
l = lowest(low, per)
c = (h + l) / 2
ll = c + ((c / 100) * longlevel)
sl = c + ((c / 100) * shortlevel)

//Lines
shortcolor = needshort ? red : na
longcolor = needlong ? lime : na
plot(sl, linewidth = 2, color = shortcolor, title = "Short line")
plot(c, linewidth = 2, color = blue, title = "SMA line")
plot(ll, linewidth = 2, color = longcolor, title = "Long line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = ll, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = sl, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Más.