A ideia central desta estratégia é tomar decisões de negociação baseadas em quebras de preços dos canais Donchian. Ela pertence à tendência seguinte tipo de estratégias quantitativas. Ela pode identificar automaticamente os canais de preços. Quando os preços atravessam o trilho superior do canal, as posições longas serão abertas. Quando os preços caem perto do trilho inferior do canal ou do ponto de stop loss, as posições serão fechadas. Esta estratégia visa capturar tendências de preços de médio a longo prazo e é adequada para negociação algorítmica de derivativos financeiros, como futuros de índices.
Esta estratégia baseia-se no indicador de canais de Donchian. Os canais de Donchian são os canais desenhados pelos preços mais altos e mais baixos durante um determinado período. Seu método de cálculo é:
Preço do produto em circulação Lower Rail = Preço mais baixo nos últimos n períodos
Quando os preços quebram o trilho superior, considera-se que uma tendência longa começou. Quando os preços quebram o trilho inferior, considera-se que uma tendência curta começou. Esta estratégia considera apenas casos em que o trilho superior é quebrado.
A lógica específica de negociação é a seguinte:
As vantagens desta estratégia incluem:
Há também alguns riscos:
Soluções:
Esta estratégia pode ser melhorada nos seguintes domínios:
A ideia geral desta estratégia é clara e fácil de entender e implementar. Utiliza canais Donchian maduros para identificar automaticamente a direção da tendência. A configuração também é altamente flexível para atender a diferentes necessidades. Com o stop loss e otimização de parâmetros adequados, bons resultados podem ser alcançados. Em conclusão, esta estratégia tem uma curva de aprendizado baixa, mas eficiência razoável. É adequada como uma estratégia quantitativa de negociação inicial.
/*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])