Estrategia de seguimiento de tendencias basada en las rupturas de los canales

El autor:¿ Qué pasa?, Fecha: 2023-11-23 14:04:59
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de seguimiento de tendencias diseñada sobre la base de la teoría de la ruptura del canal. Construye un canal utilizando el precio más alto y el precio más bajo durante un cierto período y genera señales comerciales cuando el precio se rompe con el canal. Esta estrategia es adecuada para mercados de tendencias y puede capturar la dirección de tendencia del precio para el seguimiento de tendencias.

Estrategia lógica

La estrategia primero calcula el precio más alto y el precio más bajo durante un período de longitud para construir la banda superior y la banda inferior del canal. Cuando el precio de cierre rompe la banda superior, se abre una posición larga. Cuando el precio de cierre rompe la banda inferior, se abre una posición corta. La posición se cerrará cuando el precio vuelva a caer en el canal.

La estrategia también traza un indicador EMA con longitud *2 para determinar la dirección de la tendencia.

Análisis de ventajas

  • La estrategia puede capturar las tendencias de precios y es adecuada para mercados de tendencias con un alto potencial de ganancia.
  • El uso de interrupciones de canal para generar señales puede reducir las interrupciones falsas y mejorar la calidad de la señal.
  • Combinar con la EMA para evitar negociar contra la tendencia y garantizar el seguimiento de la tendencia principal.

Análisis de riesgos

  • Las estrategias de ruptura tienden a generar operaciones frecuentes durante la consolidación de precios, lo que puede suponer altos costos comerciales.
  • La estrategia no puede salir de posiciones de inmediato cuando la tendencia se invierte, lo que puede llevar a grandes pérdidas.
  • La estrategia es sensible a la configuración de parámetros y diferentes parámetros pueden dar lugar a resultados completamente diferentes.

Direcciones de optimización

  • Incorpore otros indicadores como el MACD, el RSI para evitar fallas.
  • Utilice algoritmos de aprendizaje automático para optimizar automáticamente los parámetros y mejorar la robustez.
  • Configurar el stop loss para controlar el descenso máximo.

Resumen de las actividades

En resumen, esta es una estrategia de seguimiento de tendencias simple basada en las rupturas de canal para capturar tendencias. Tiene una fuerte capacidad de seguimiento de tendencias y puede lograr buenos rendimientos en los mercados de tendencia. Pero también tiene algunos riesgos y necesita una mayor optimización para mejorar la estabilidad. A través de la puesta a punto de parámetros, el ajuste de pérdidas y la combinación con otros indicadores, esta estrategia se puede aplicar a la negociación en vivo.


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

//@version=3


initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9


strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity) 

length = input(title="Length",  minval=1, maxval=1000, defval=length_val)

upBound = highest(high, length)
downBound = lowest(low, length)

//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
    strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
    strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
    
position = strategy.position_size
    
    
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)

message = ""

if (position > 0) 
    message = "BTCUSD L: " + tostring(strategy.position_size)
    na(position)
    
if (position < 0) 
    message = "BTCUSD S: " + tostring(strategy.position_size)
    na(position)

alertcondition(variance(strategy.position_size,2) > 0, "test", message )

Más.