Estrategia de seguimiento de tendencias de canales de ruptura


Fecha de creación: 2023-11-23 14:04:59 Última modificación: 2023-11-23 14:04:59
Copiar: 0 Número de Visitas: 603
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias de canales de ruptura

Descripción general

Esta estrategia es una estrategia de seguimiento de tendencias diseñada en base a la teoría de la ruptura del canal. Construye un canal calculando los precios máximos y mínimos de un determinado ciclo, generando una señal de negociación cuando el precio rompe el canal. La estrategia se aplica a la conducta de tendencias, puede capturar la dirección de la tendencia de los precios y hacer un seguimiento de tendencias.

Principio de estrategia

La estrategia comienza calculando los precios máximos y mínimos en un período de longitud, construyendo un canal ascendente y descendente. Cuando el precio de cierre rompe el camino ascendente, haga más; cuando el precio de cierre rompe el camino descendente, haga un vacío.

Esta estrategia también traza la longitud como length*El indicador de EMA 2 determina la dirección de la tendencia. Cuando el precio se desvía por el canal, si la EMA está en una tendencia alcista, aumenta la eficacia de tomar más decisiones.

Análisis de las ventajas

  • La estrategia capta las tendencias de los precios, se adapta a las tendencias y tiene un gran potencial de ganancias.
  • La detección de brechas mediante el canal reduce la probabilidad de falsas brechas y mejora la calidad de la señal.
  • La combinación de los juicios de la EMA evita el comercio de contravalores y asegura el seguimiento de las tendencias dominantes.

Análisis de riesgos

  • Las estrategias de ruptura de canal son propensas a generar transacciones frecuentes en momentos de fluctuaciones de precios, lo que puede conllevar mayores gastos de transacción.
  • Cuando la tendencia se invierte, la estrategia no puede cerrar posiciones a tiempo, lo que puede llevar a grandes pérdidas.
  • Esta estrategia es sensible a la configuración de los parámetros, y diferentes parámetros producen resultados completamente diferentes.

Dirección de optimización

  • Se puede combinar con otros indicadores para juzgar la tendencia y evitar falsas rupturas, como el MACD, el RSI, etc.
  • Se puede optimizar automáticamente los parámetros a través de algoritmos de aprendizaje automático para mejorar la robustez de los parámetros.
  • Se puede configurar el stop loss para controlar la máxima retirada.

Resumir

La estrategia en su conjunto es una estrategia simple de seguimiento de tendencias basada en breakouts de canal para capturar tendencias. Tiene una gran capacidad de seguimiento de tendencias, que puede obtener buenos beneficios en situaciones de tendencia. Pero también existe un cierto riesgo, que necesita ser optimizado para mejorar la estabilidad.

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