La idea central de esta estrategia es tomar decisiones comerciales basadas en las rupturas de precios de los canales Donchian. Pertenece a la tendencia siguiente tipo de estrategias cuantitativas. Puede identificar automáticamente los canales de precios. Cuando los precios rompen el carril superior del canal, se abrirán posiciones largas. Cuando los precios caen cerca del carril inferior del canal o el punto de stop loss, las posiciones se cerrarán. Esta estrategia tiene como objetivo capturar las tendencias de precios a medio y largo plazo y es adecuada para el comercio algorítmico de derivados financieros como futuros de índices.
Esta estrategia se basa en el indicador de canales de Donchian, los canales son los canales dibujados por los precios más altos y más bajos durante un período determinado.
Precio superior = Precio más alto durante los últimos n períodos Precio más bajo en los últimos n períodos
Cuando los precios rompen el carril superior, se considera que ha comenzado una tendencia larga. Cuando los precios rompen el carril inferior, se considera que ha comenzado una tendencia corta. Esta estrategia solo considera los casos en que se rompe el carril superior.
La lógica de negociación específica es:
Las ventajas de esta estrategia incluyen:
También hay algunos riesgos:
Soluciones:
Esta estrategia puede optimizarse aún más en los siguientes ámbitos:
La idea general de esta estrategia es clara y fácil de entender e implementar. Utiliza canales Donchian maduros para identificar automáticamente la dirección de la tendencia. La configuración también es muy flexible para satisfacer diferentes necesidades. Con una parada de pérdida adecuada y optimización de parámetros, se pueden lograr buenos resultados. En conclusión, esta estrategia tiene una curva de aprendizaje baja pero una eficiencia razonable. Es adecuada como una estrategia de negociación cuantitativa de inicio.
/*backtest start: 2022-12-07 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Giovanni_Trombetta // Strategy to capture price channel breakouts //@version=4 strategy("ChannelsBreakout", max_bars_back=50, overlay=true) instrument = input(1, title = "Select 1: Stock/Forex, 2: Future") money = input(10000, title = "Money for each trade") backtest_start = input(2000, "Insert first year to backtest") period = input(50, title = "Period in bars of Donchian Channel") monetary_stoploss = input(1000, title = "Monetary Stop Loss") quantity = if instrument != 1 1 else int(money / close) upBarrier = highest(high,period) downBarrier = lowest(low,period) up = highest(high,period / 4) down = lowest(low,period / 4) plot(upBarrier, color=color.green, linewidth=2) plot(downBarrier, color=color.red, linewidth=2) plot(up, color=color.lime, linewidth=1) plot(down, color=color.orange, linewidth=2) longCondition = crossover(close, upBarrier[1]) and year >= backtest_start if (longCondition) strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0) closeCondition = crossunder(close, down[1]) or down < down[1] if (closeCondition) strategy.close("Long", comment = "Trailing") stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size strategy.exit("StopLoss", from_entry = "Long", stop = stop_level) plot(stop_level, color=color.yellow, linewidth=2) // l = label.new(bar_index, na, // text="PineScript Code", color= color.lime, textcolor = color.white, // style=label.style_labelup, yloc=yloc.belowbar, size=size.normal) // label.delete(l[1])