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.
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.
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 )