Estratégia de acompanhamento de tendências de canal de fuga


Data de criação: 2023-11-23 14:04:59 última modificação: 2023-11-23 14:04:59
cópia: 0 Cliques: 603
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências de canal de fuga

Visão geral

Esta estratégia é uma estratégia de acompanhamento de tendências baseada na teoria de ruptura de canais. Ela constrói um canal através do cálculo do preço máximo e mínimo de um determinado ciclo, gerando um sinal de negociação quando o preço quebra o canal.

Princípio da estratégia

A estratégia começa com o cálculo dos preços mais altos e mais baixos em um período de comprimento, construindo um canal para cima e para baixo. Quando o preço de fechamento quebra o caminho para cima, faça mais; Quando o preço de fechamento quebra o caminho para baixo, faça um fechamento.

A estratégia é mapear simultaneamente a extensão como length*O indicador de EMA de 2 determina a direção da tendência. Quando o preço quebra o canal para cima, se a EMA está em uma tendência ascendente, aumenta a eficácia da tomada de decisões.

Análise de vantagens

  • A estratégia é capaz de capturar as tendências de preços, adaptando-se a situações tendenciais, com grande potencial de lucro.
  • A determinação da brecha por meio de um canal reduz a probabilidade de uma falsa brecha e melhora a qualidade do sinal.
  • A combinação com o julgamento da EMA evita a negociação de contrapartida, garantindo o acompanhamento das principais tendências.

Análise de Riscos

  • A estratégia de ruptura de corredor é propensa a produzir transações frequentes em momentos de flutuação de preços, o que pode acarretar maiores taxas de transação.
  • Quando a tendência se inverte, a estratégia não consegue fechar a posição a tempo e pode levar a grandes perdas.
  • A estratégia é sensível à configuração de parâmetros, e diferentes parâmetros podem ter resultados completamente diferentes.

Direção de otimização

  • Pode-se combinar com outros indicadores para avaliar a tendência e evitar falsas rupturas, como MACD, RSI, etc.
  • Os parâmetros podem ser otimizados automaticamente por algoritmos de aprendizagem de máquina, aumentando a robustez dos parâmetros.
  • Pode-se definir um stop loss para controlar a retirada máxima.

Resumir

A estratégia global é uma estratégia simples de rastreamento de tendências baseada em breakouts de canal para capturar tendências. Ela possui uma forte capacidade de rastreamento de tendências, que pode obter bons lucros em situações de tendência.

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

//@version=3


initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9


strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity) 

length = input(title="Length",  minval=1, maxval=1000, defval=length_val)

upBound = highest(high, length)
downBound = lowest(low, length)

//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
    strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
    strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
    
position = strategy.position_size
    
    
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)

message = ""

if (position > 0) 
    message = "BTCUSD L: " + tostring(strategy.position_size)
    na(position)
    
if (position < 0) 
    message = "BTCUSD S: " + tostring(strategy.position_size)
    na(position)

alertcondition(variance(strategy.position_size,2) > 0, "test", message )