La estrategia de seguimiento dual de AlphaTrend opera con base en las señales de compra y venta generadas por el indicador AlphaTrend.
El núcleo de la estrategia de seguimiento dual de AlphaTrend es el indicador AlphaTrend. El indicador AlphaTrend calcula las bandas superior e inferior basándose en el ATR y el precio adaptativos (precio de cierre o precio promedio ponderado por volumen). El método específico de cálculo es:
Banda superior = Bajo más bajo - ATR * multiplicador Bandas inferiores = más altas + ATR * multiplicador
Cuando el precio está por encima de la banda superior, la línea del indicador se acerca a la banda superior. Cuando el precio está por debajo de la banda inferior, la línea del indicador se acerca a la banda inferior. Así AlphaTrend forma un canal adaptativo.
La estrategia de seguimiento dual de AlphaTrend establece posiciones largas y cortas basadas en las señales generadas por AlphaTrend.
Esto completa el comercio de seguimiento bidireccional basado en el canal dinámico AlphaTrend.
La mayor ventaja de la estrategia de seguimiento dual de AlphaTrend es que puede rastrear los cambios en las tendencias del mercado.
Además, AlphaTrend combina información de precio y volumen (o impulso), lo que ayuda a filtrar algunas breakouts falsas, mejorando la calidad de las señales comerciales.
El principal riesgo de la estrategia de seguimiento dual de AlphaTrend proviene de enormes fluctuaciones del mercado que podrían afectar los puntos de stop loss. Cuando hay un movimiento anormal del mercado, los puntos de stop loss pueden romperse, lo que conduce a grandes pérdidas. Esto debe controlarse ajustando adecuadamente los parámetros de ATR y los puntos de stop loss.
Además, el propio ALPHA tiene un cierto retraso. También puede generar señales incorrectas en torno a los puntos de inflexión del mercado.
La estrategia de seguimiento dual de AlphaTrend se puede optimizar en los siguientes aspectos:
A través de las optimizaciones anteriores, la estabilidad y la rentabilidad de la estrategia AlphaTrend pueden mejorarse aún más.
En resumen, la estrategia de seguimiento dual de AlphaTrend es una forma efectiva de rastrear los cambios del mercado. Soluciona el problema de los indicadores técnicos tradicionales que pierden efectividad y también incorpora información de volumen para filtrar las señales. Con las optimizaciones adecuadas, esta estrategia puede convertirse en una poderosa herramienta en los sistemas comerciales cuantitativos.
/*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!')