Estratégia de negociação quantitativa de Donchian baseada no rompimento do canal de preços


Data de criação: 2023-12-08 11:00:05 última modificação: 2023-12-08 11:00:05
cópia: 0 Cliques: 655
1
focar em
1621
Seguidores

Estratégia de negociação quantitativa de Donchian baseada no rompimento do canal de preços

Visão geral

A idéia central da estratégia é realizar operações de compra e venda com base em uma ruptura de preço no canal de Dongguan, uma estratégia quantitativa do tipo de rastreamento de tendências. Ela pode identificar automaticamente o canal de preços, abrir posições ao longo do canal quando o preço quebra o canal, e fechar posições quando o preço retorna ao longo do canal abaixo ou perto do ponto de parada. A estratégia visa capturar a tendência de preços de linha média e longa e é aplicável à negociação de derivativos financeiros como índices de ações.

Princípios

A estratégia baseia-se no indicador do canal de Dongxian, que é uma área de canal desenhada através dos preços mais altos e mais baixos de um determinado período. A sua forma de cálculo é:

Apertura = maior preço em n ciclos Baixa trajectória = menor preço em n ciclos

A estratégia considera apenas o caso de uma ruptura de trajectória.

A lógica da transação é a seguinte:

  1. Desenhar o traçado do corredor de Dongjian com o preço máximo de n ciclos
  2. Quando o preço de fechamento se eleva, faça mais entrada
  3. Método de stop-loss para o preço de fechamento voltar para o canal de baixo perto de uma faixa ou um ponto de parada definido

Vantagens

A estratégia tem as seguintes vantagens:

  1. A estratégia é clara, fácil de entender e de implementar
  2. Indicadores do Canal de Dongxian são confiáveis e fáceis de avaliar
  3. Identificação automática de corredores, sem necessidade de julgamento manual
  4. Parâmetros configuráveis, adaptáveis
  5. Contém um mecanismo de stop loss para limitar as perdas

Riscos

A estratégia também apresenta alguns riscos:

  1. O Corredor de Dongcheng pode ser destruído e causar prejuízos não necessários
  2. A configuração inadequada da posição de parada pode aumentar as perdas
  3. O risco de reversão deve ser observado ao se aproximar do corredor.
  4. Configuração de parâmetros (duração de ciclo, etc.) incorreta pode afetar a eficácia da política

Resolução:

  1. Combinado com outros indicadores de filtragem de falhas
  2. Optimizar a posição de parada e suavizar a saída
  3. Considere aumentar o volume de transações ou expandir o alcance das paradas nas proximidades do canal
  4. Teste diferentes parâmetros para encontrar o melhor

Direção de otimização

A estratégia também pode ser melhorada nos seguintes aspectos:

  1. Adicionar outros indicadores de julgamento para evitar falsas falhas, como MACD, KD, etc.
  2. Otimização de mecanismos de suspensão de perdas, como suspensão móvel com oscilações de preços
  3. Controle de participação otimizado, por exemplo, apenas quando a volatilidade aumenta
  4. Optimização de parâmetros, busca de combinações ótimas de parâmetros

Resumir

A estratégia é clara, fácil de entender e de implementar, e utiliza os indicadores do canal de Tôngian para identificar automaticamente a direção da tendência. A configuração é flexível e pode ser ajustada de acordo com as necessidades reais.

Código-fonte da estratégia
/*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])