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