Estrategia de ruptura del canal de precios

El autor:¿ Qué pasa?, Fecha: 2024-01-16 14:22:57
Las etiquetas:

img

Esta estrategia se llama Price Channel Breakout Strategy. Su idea principal es usar el canal de precios para determinar la tendencia y dirección del mercado y establecer posiciones cuando el precio se rompe el canal. Primero dibujará el rango del canal de precios, luego juzgará si hay dos líneas K rojas o verdes consecutivas. Si la última línea K se rompe a través de la mitad del ancho del canal y se cierra fuera del canal, generará señales de compra o venta.

Estrategia lógica

La estrategia calcula el máximo más alto y el mínimo más bajo durante un cierto período en el pasado utilizando las funciones más alto y más bajo para determinar los carriles superiores e inferiores del canal de precios. El punto medio del canal se define como el promedio de los carriles superiores e inferiores. Luego calcula el tamaño del cuerpo de la línea K y lo suaviza utilizando SMA para determinar si el último cuerpo de la línea K es mayor que la mitad del cuerpo promedio. También juzga si las últimas dos líneas K están en la misma dirección (dos líneas rojas o verdes consecutivas). Cuando se cumplen estas condiciones, genera señales de compra / venta y cierra las posiciones cuando el precio vuelve a caer en la dirección del canal.

Análisis de ventajas

Esta es una estrategia de ruptura que utiliza el canal de precios para juzgar la tendencia general.

  1. El uso del canal de precios para determinar la dirección general de la tendencia puede filtrar eficazmente el ruido del mercado.

  2. Dos líneas K consecutivas rompiendo el canal en la misma dirección indica un impulso más fuerte y una mayor tasa de éxito de la ruptura.

  3. Juzgar el cuerpo de la línea K más grande que la mitad del cuerpo promedio puede evitar ser engañado por una falsa fuga.

  4. La lógica de la estrategia es simple y fácil de implementar.

  5. Los parámetros personalizables, como el período del canal, los productos comerciales, las horas de negociación, etc., lo hacen altamente adaptable.

Análisis de riesgos

La estrategia también tiene algunos riesgos potenciales:

  1. Todavía existe la probabilidad de una fuga fallida, que puede llevar a pérdidas.

  2. El canal de precios puede fallar cuando el mercado fluctúa violentamente.

  3. La falta de un mecanismo de stop loss no permite controlar las pérdidas de manera efectiva.

  4. Las reglas comerciales sencillas tienen riesgos de sobreajuste.

  5. Incapaz de adaptarse a entornos de mercado más complejos.

Las soluciones correspondientes son:

  1. Optimice los parámetros para mejorar la tasa de éxito de la fuga.

  2. Agregue el índice de volatilidad para evitar el mercado agitado.

  3. Agregue el stop loss móvil.

  4. Realizar pruebas de complejidad para comprobar el sobreajuste.

  5. Aumentar los modelos de aprendizaje automático para mejorar la adaptabilidad.

Direcciones de optimización

Las principales direcciones de optimización son:

  1. Agregue un mecanismo de stop loss para controlar mejor los riesgos. Establezca el stop loss de retroceso de precios o el stop loss móvil basado en ATR.

  2. Optimice parámetros como el período del canal, el umbral de ruptura, etc. Encuentre parámetros óptimos a través de algoritmos genéticos, búsqueda de cuadrícula, etc.

  3. Añadir condiciones de filtrado para mejorar la certeza de la ruptura, por ejemplo, combinar el volumen de operaciones para confirmar la ruptura.

  4. Añadir modelos de aprendizaje automático como LSTM para mejorar la capacidad de predicción y adaptabilidad mediante la utilización de más datos.

  5. Realizar la optimización de la cartera, combinar diferentes tipos de estrategias de ruptura para lograr la ortogonalidad y reducir las similitudes.

Conclusión

En conclusión, esta es una estrategia cuantitativa basada en el canal de precios para determinar la tendencia y descubrir señales de ruptura. Tiene la ventaja de juzgar la tendencia y confirmar la ruptura, pero también tiene ciertos riesgos de ruptura falsa. Podemos mejorar la estrategia mediante optimización de parámetros, stop loss, adición de filtros, etc. para reducir los riesgos. Mientras tanto, la introducción de modelos de aprendizaje automático puede mejorar aún más la capacidad predictiva. En general, este es un enfoque de estrategia cuantitativa prometedor que vale la pena investigar y mejorar.


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.0", shorttitle = "Price Channel str 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")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
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")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Signals
body = abs(close - open)
abody = sma(body, 10)
up = rbars and close > center and body > abody / 2
dn = gbars and close < center and body > abody / 2
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Más.