Estratégia de fuga do canal Donchian


Data de criação: 2023-09-14 14:44:44 última modificação: 2023-09-14 14:44:44
cópia: 0 Cliques: 766
1
focar em
1617
Seguidores

Princípio da estratégia

A estratégia de ruptura do canal de Dongxian é uma estratégia de acompanhamento de tendências baseada no canal de Dongxian. A estratégia usa os preços mais altos e mais baixos de diferentes períodos para determinar os pontos de entrada e os pontos de parada para os pontos de entrada e vazios.

A regra de entrada para a estratégia é: quando o preço quebra o preço mais alto do período especificado (por exemplo, 20 dias), faça mais; quando o preço quebra o preço mais baixo do período especificado (por exemplo, 10 dias), faça zero.

A regra de EXIT é: a posição multi-cabeça termina no meio ou no fim do caminho; a posição em branco termina no meio ou no fim do caminho. O caminho médio é a média entre o preço mais alto e o preço mais baixo de um período especificado (por exemplo, 10 dias).

Suponha que a variedade de negociação seja BTCUSDT, e os parâmetros são os seguintes:

  • Ciclo de entrada múltipla: 20 dias
  • Período de parada de múltiplos cabeças: 10 dias
  • - Se a rotação foi interrompida: Sim
  • Período de admissão: 10 dias
  • Período de amortização de cabeçote: 20 dias
  • - Se a rotação foi interrompida: Sim

Então, as regras de entrada e de parada são:

  • Quando o preço ultrapassa o seu máximo de 20 dias, é o ponto em que a entrada de uma posição é maior.
  • O ponto de parada de uma posição múltipla é o ponto médio entre o preço mais alto e o preço mais baixo em 10 dias
  • Quando o preço cai abaixo do seu mínimo de 10 dias, você pode entrar em uma posição de vazio nesse ponto.
  • O ponto de parada de uma posição vazia é o ponto médio entre o máximo e o mínimo em 20 dias

Ao ajustar dinamicamente os parâmetros dos ciclos de entrada e parada, pode-se otimizar em diferentes ciclos de mercado, obtendo melhores retornos em situações de tendência.

Vantagens estratégicas

  • O que você pode fazer é usar breakouts para avaliar a direção das tendências e capturar os pontos fortes.
  • Ponto de parada perto do preço atual, para controlar o risco
  • Ajuste de parâmetros flexível e pode ser otimizado para diferentes ciclos

Risco estratégico

  • As transações de ruptura são facilmente manipuladas e a eficácia de uma ruptura deve ser determinada com cautela.
  • O ponto de parada é perto do preço, com maior probabilidade de suspensão de perdas em situações de turbulência
  • A configuração inadequada dos parâmetros pode levar a jogos muito frequentes ou a perda de tempo

Resumir

A estratégia de ruptura do canal de Dongguan usa a ruptura para determinar a direção da tendência, o ponto de parada é definido como o ponto médio do canal ou o caminho para baixo, o que permite controlar o risco de forma eficaz. A configuração de parâmetros de otimização pode aumentar a taxa de captura da estratégia em situações de tendência.

Código-fonte da estratégia
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Donchian Channel Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.036)

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()