Estratégia de negociação quantitativa do Donchian Channels Breakout

Autora:ChaoZhang, Data: 2023-12-08 11:00:05
Tags:

img

Resumo

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.

Princípios

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:

  1. Traçar o trilho superior dos canais de Donchian usando o preço mais alto nos últimos n períodos
  2. Quando o preço de fechamento atravessa o trilho superior, vá longo
  3. A taxa de prejuízo é a taxa de prejuízo de uma posição em que o preço de fechamento cai para trás perto de uma linha inferior ou para um ponto de prejuízo de uma posição em que o preço de fechamento cai para trás.

Vantagens

As vantagens desta estratégia incluem:

  1. A ideia estratégica é clara e fácil de compreender e implementar
  2. O Donchian Channels é um indicador maduro e fiável para julgar a direcção da tendência
  3. Identifica automaticamente os canais sem interferência manual.
  4. Parâmetros personalizáveis tornam-no altamente adaptável
  5. Contém mecanismos de stop loss para limitar as perdas

Riscos

Há também alguns riscos:

  1. Os canais de Donchian podem ter falhas, causando perdas desnecessárias.
  2. Posicionamento inadequado de stop loss pode aumentar as perdas
  3. Preste atenção aos riscos de reversão quando o preço estiver perto dos trilhos do canal
  4. Configurações inadequadas dos parâmetros podem afetar negativamente o desempenho da estratégia

Soluções:

  1. Adicionar filtros incorporando outros indicadores para evitar falhas
  2. Otimizar o posicionamento de stop loss para saídas suaves
  3. Considere aumentar o tamanho da posição ou alargar o intervalo de lucros quando o preço estiver próximo dos trilhos do canal
  4. Teste diferentes parâmetros para encontrar valores ideais

Orientações de otimização

Esta estratégia pode ser melhorada nos seguintes domínios:

  1. Adicionar outros indicadores como MACD, KD para evitar falhas
  2. Otimizar os mecanismos de stop loss, por exemplo, mover o stop loss
  3. Otimizar o controlo da taxa de participação, por exemplo, negociar apenas quando a volatilidade aumenta
  4. Optimização de parâmetros para encontrar combinação ideal

Resumo

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

Mais.