A estratégia de rastreamento duplo da AlphaTrend opera com base nos sinais de compra e venda gerados pelo indicador AlphaTrend.
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.
Com isso, completa-se a negociação de rastreamento bidirecional baseada no canal dinâmico AlphaTrend.
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.
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.
A estratégia de rastreamento duplo da AlphaTrend pode ser otimizada nos seguintes aspectos:
Através das otimizações acima referidas, a estabilidade e a rentabilidade da estratégia AlphaTrend podem ser ainda melhoradas.
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!')