Estratégia de rastreamento duplo da AlphaTrend

Autora:ChaoZhang, Data: 2024-02-02 15:17:01
Tags:

img

Resumo

A estratégia de rastreamento duplo da AlphaTrend opera com base nos sinais de compra e venda gerados pelo indicador AlphaTrend.

Estratégia lógica

O núcleo da estratégia de rastreamento duplo da AlphaTrend é o indicador AlphaTrend. O indicador AlphaTrend calcula as faixas superior e inferior com base no ATR adaptativo e no preço (preço de fechamento ou preço médio ponderado por volume). O método específico de cálculo é:

Faixa superior = Baixa mais baixa - ATR * Multipliante Banda inferior = Alta mais alta + ATR * Multipliante

Quando o preço está acima da faixa superior, a linha do indicador se aproxima da faixa superior. Quando o preço está abaixo da faixa inferior, a linha do indicador se aproxima da faixa inferior. Assim, a AlphaTrend forma um canal adaptativo.

A estratégia de rastreamento duplo da AlphaTrend estabelece posições longas e curtas com base nos sinais gerados pela AlphaTrend.

  • Vai longo quando o preço cruza acima do AlphaTrend;
  • Faça curto quando o preço cruzar abaixo do AlphaTrend.

Com isso, completa-se a negociação de rastreamento bidirecional baseada no canal dinâmico AlphaTrend.

Análise das vantagens

A maior vantagem da estratégia de rastreamento duplo da AlphaTrend é que ela pode rastrear mudanças nas tendências do mercado.

Além disso, o AlphaTrend combina informações de preço e volume (ou impulso), o que ajuda a filtrar algumas falhas, melhorando a qualidade dos sinais de negociação.

Análise de riscos

O principal risco da estratégia de rastreamento duplo AlphaTrend vem de grandes flutuações de mercado que podem atingir os pontos de stop loss. Quando há um movimento anormal do mercado, os pontos de stop loss podem ser quebrados, levando a grandes perdas. Isso precisa ser controlado ajustando adequadamente os parâmetros ATR e os pontos de stop loss.

Além disso, o próprio ALPHA tem algum atraso. Pode também gerar sinais incorretos em torno dos pontos de virada do mercado. Outros indicadores devem ser utilizados para confirmar os sinais.

Orientações de otimização

A estratégia de rastreamento duplo da AlphaTrend pode ser otimizada nos seguintes aspectos:

  1. Combinar com indicadores de tendência para determinar a principal tendência do mercado para evitar negociações contrárias à tendência;
  2. Aumentar o filtro de volume para evitar perdas causadas por falsos rompimentos de baixo volume;
  3. Otimizar os parâmetros dos indicadores para tornar a gama de canais mais adequada a diferentes produtos;
  4. Aumentar os algoritmos de aprendizagem de máquina para tornar o canal mais inteligente.

Através das otimizações acima referidas, a estabilidade e a rentabilidade da estratégia AlphaTrend podem ser ainda melhoradas.

Resumo

Em resumo, a estratégia de rastreamento duplo AlphaTrend é uma maneira eficaz de rastrear as mudanças do mercado. Resolve o problema dos indicadores técnicos tradicionais perdendo eficácia e também incorpora informações de volume para filtrar sinais. Com otimizações adequadas, essa estratégia pode se tornar uma ferramenta poderosa em sistemas de negociação quantitativa.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5
strategy('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=true)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

//plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

//plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))



longCondition = buySignalk and showsignalsk and O1 > K2
if (longCondition)
    
    strategy.entry("BUY", strategy.long, comment = "BUY ENTRY")

shortCondition = sellSignalk and showsignalsk and O2 > K1
if (shortCondition )
    
    strategy.entry("SELL", strategy.short, comment = "SELL ENTRY")













// alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
// alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')

// alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
// alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')



// alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
// alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')

// alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
// alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')






Mais.