Estrategia de seguimiento doble de AlphaTrend

El autor:¿ Qué pasa?, Fecha: 2024-02-02 15:17:01
Las etiquetas:

img

Resumen general

La estrategia de seguimiento dual de AlphaTrend opera con base en las señales de compra y venta generadas por el indicador AlphaTrend.

Estrategia lógica

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.

  • Ir largo cuando el precio cruza por encima de AlphaTrend;
  • Ir corto cuando el precio cruza por debajo de AlphaTrend.

Esto completa el comercio de seguimiento bidireccional basado en el canal dinámico AlphaTrend.

Análisis de ventajas

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.

Análisis de riesgos

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.

Direcciones de optimización

La estrategia de seguimiento dual de AlphaTrend se puede optimizar en los siguientes aspectos:

  1. Combinar con indicadores de tendencia para determinar la tendencia principal del mercado para evitar el comercio en contra de la tendencia;
  2. Aumentar el filtro de volumen para evitar las pérdidas causadas por falsos brotes de bajo volumen;
  3. Optimizar los parámetros de los indicadores para que el rango de canales sea más adecuado para diferentes productos;
  4. Aumentar los algoritmos de aprendizaje automático para hacer el canal más inteligente.

A través de las optimizaciones anteriores, la estabilidad y la rentabilidad de la estrategia AlphaTrend pueden mejorarse aún más.

Resumen de las actividades

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!')






Más.