Estratégia Quant Trading Baseada no Canal SuperTrend

Autora:ChaoZhang, Data: 2024-02-05 13:57:28
Tags:

img

Resumo

Esta estratégia gera sinais de entradas e saídas com base no indicador do canal SuperTrend para realizar a negociação de quantidade automatizada. O indicador do canal SuperTrend pode identificar pontos de ruptura e níveis de suporte / resistência claramente para determinar a direção da tendência. Esta estratégia incorpora as vantagens deste indicador para realizar negociações longas e curtas.

Princípio da estratégia

Esta estratégia usa o ATR e o canal de Donchian para calcular duas linhas de stop-loss para posições longas e curtas. Especificamente, ele calcula o valor do ATR usando o período ATR e os parâmetros do multiplicador, em seguida, adiciona e subtrai-o da média do mais alto alto e do mais baixo baixo para obter as linhas de stop-loss longas e curtas. Quando o preço de fechamento quebra acima da linha de stop-loss longa para cima, um sinal longo é gerado. Quando o preço de fechamento quebra abaixo da linha de stop-loss curto para baixo, um sinal curto é acionado.

Após a tomada de posições longas ou curtas, as linhas de stop-loss são atualizadas dinamicamente para bloquear os lucros. A nova linha de stop-loss não será menor ou maior do que a anterior, evitando a penetração de stop-loss. Quando uma nova alta ou baixa aparece entre a linha de stop-loss atual e anterior, a linha de stop-loss é ajustada ao último preço.

Análise das vantagens

A maior vantagem desta estratégia é que o indicador do canal SuperTrend pode identificar claramente a direção da tendência e os principais níveis de suporte / resistência.

Especificamente, as duas linhas de stop-loss no indicador do canal SuperTrend representam a base de custo da posição e o mais recente suporte / resistência. Eles oferecem orientação muito clara para Entradas e Saídas. Enquanto isso, a linha de stop-loss é atualizada dinamicamente para bloquear lucros e evitar a penetração de stop-loss.

Em geral, esta estratégia entra em tempo útil quando a tendência é determinada, controla o risco através de stop-loss dinâmico, tornando-se uma estratégia comercial quantitativa relativamente robusta.

Análise de riscos

O principal risco desta estratégia reside na possibilidade de penetração de stop-loss. Quando o preço flutua violentamente, a nova linha de stop-loss pode se tornar mais baixa ou mais alta do que a anterior, causando penetração de stop-loss e aumento das perdas.

Além disso, os sinais de entradas gerados pelo indicador do canal SuperTrend não funcionam bem em mercados variados, levando a negociações erradas ocasionalmente.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimize o período de ATR e os parâmetros do multiplicador para encontrar a melhor combinação através de backtesting de vários valores e análise de métricas como retorno e taxa de Sharpe.

  2. Adicionar outros indicadores para filtragem de sinal para evitar entradas erradas em mercados variáveis.

  3. Incorporar indicadores de volume para ajustar a posição de stop-loss.

  4. Introduzir modelos de aprendizado de máquina para otimização de parâmetros adaptativos.

Conclusão

Esta estratégia tem origem no indicador do canal SuperTrend com um julgamento claro da direção da tendência e uma taxa de ganho relativamente alta. Também aplica stop-loss de rastreamento ATR dinâmico para controlar a perda de uma única negociação. O desempenho pode ser melhorado ainda mais através da otimização de parâmetros, otimização de indicadores, etc. Em geral, é uma estratégia robusta adequada para negociação de quantidade automatizada.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//EU ESCREVI ISSO TUDO, PARA FICAR BEM CLARO

strategy("SuperTrend Strategy", overlay=true)


//AQUI OS INPUTS PARA A SUPERTREND
length = input(title="ATR Period", type=input.integer, defval=7)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=7)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true)

//AQUI O CALCULO DO ATR STOPS
atr = mult * atr(length)



//AQUI A TRANSFORMAÇÃO DO ATR STOPS EM SUPERTREND
//-
//A LÓGICA PARA LONGSTOP
longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

//A LÓGICA PARA SELLSTOP
shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop


//DIREÇÃO DO INDICADOR
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : 
   dir == 1 and close < longStopPrev ? -1 : dir


//DEFININDO AS CORES DAS LINHAS DA SUPERTREND
longColor = color.lime
shortColor = color.red


//PLOTANDO NO GRÁFICO A SUPERTREND E A ESTRATÉGIA
plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=3, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=3, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1

//DEFININDO AS FUNÇÕES DE COMPRA E VENDA
strategy.entry("long", strategy.long, when = buySignal)
strategy.entry("short", strategy.short, when = sellSignal)




Mais.