Estrategia de entrada y salida del canal de precios de impulso


Fecha de creación: 2023-12-06 16:44:32 Última modificación: 2023-12-06 16:44:32
Copiar: 1 Número de Visitas: 611
1
Seguir
1619
Seguidores

Estrategia de entrada y salida del canal de precios de impulso

Descripción general

La estrategia se basa en un indicador de canal de precios, que establece un parámetro de dinámica para formar la línea media del canal de precios calculando el promedio de los precios máximos y mínimos de los diferentes períodos, y como base de referencia, establece una línea larga y una línea corta. Cuando el precio rompe la línea larga, haga más; cuando el precio rompe la línea corta, haga vacío.

Principio de estrategia

La estrategia utiliza un indicador de canal de precios para calcular el promedio de los máximos y mínimos de precios en diferentes períodos, formando una línea media de canal de precios. Utilizando la línea media como referencia, establece la línea larga y la línea corta a través de los parámetros de cambio. En concreto, la fórmula para calcular la línea larga es: línea media + (((la línea media x el parámetro de la línea larga%); la fórmula para calcular la línea corta es: línea media + (((la línea media x el parámetro de la línea corta%).

Cuando el precio está por debajo de la línea larga, use la sola de precio limitado para abrir una carta abierta; cuando el precio está por encima de la línea corta, use la sola de precio limitado para abrir una carta abierta. El método de parada de la carta abierta múltiple es el regreso del precio a la línea media del canal.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de indicadores de canales de precios permite capturar de manera efectiva las tendencias de precios y los puntos de resistencia de soporte clave.
  2. La apertura de posiciones con registro de brechas reduce las pérdidas de brechas falsas.
  3. El método de parada de pérdidas se basa directamente en la línea media del canal de precios, para evitar pérdidas excesivas causadas por el seguimiento de la parada de precios.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Los parámetros de los canales de precios están mal configurados, lo que puede hacer que se pierda una tendencia positiva o que se produzcan demasiadas falsas rupturas.
  2. La brecha en la apertura de depósitos conlleva un cierto costo de navegación.
  3. El precio de las acciones ha caído rápidamente, y no se puede detener el deterioro a tiempo.

El riesgo puede ser reducido mediante la optimización de los parámetros, el establecimiento de órdenes de stop loss, o en combinación con otros indicadores de juicio.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros del canal de precios para encontrar la combinación óptima.
  2. Prueba diferentes formas de abrir posiciones, como la forma de la línea K, la señal de la posición en blanco, etc.
  3. Aumentar la configuración de las órdenes de stop loss para evitar pérdidas por una rápida reversión de los precios.
  4. La combinación de indicadores como el volumen de transacciones y la volatilidad evita falsas rupturas en el mercado de acciones.

Resumir

Esta estrategia se basa en un claro diseño de indicadores de canales de precios, el uso de la apertura de posición para controlar el riesgo de manera efectiva. Pero también hay un gran espacio para la optimización de los parámetros, el mecanismo de detención de pérdidas debe ser perfeccionado. En general, la estrategia tiene cierto valor práctico y merece ser probada y optimizada.

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