Estrategia de tendencia alfa con pérdida de parada de seguimiento

El autor:¿ Qué pasa?, Fecha: 2023-11-27 15:25:35
Las etiquetas:

img

Resumen general

La estrategia de tendencia alfa con stop loss de seguimiento es una versión mejorada de la estrategia de tendencia alfa al incorporar un mecanismo de stop loss de seguimiento, que puede controlar los riesgos de manera más efectiva y mejorar los rendimientos generales.

Estrategia lógica

La estrategia utiliza primero el indicador Alpha para determinar las tendencias de precios. Cuando el indicador Alpha sube, es una señal alcista. Cuando el indicador Alpha baja, es una señal bajista. La estrategia genera señales de compra y venta basadas en la cruz dorada y la cruz muerta del indicador Alpha.

Mientras tanto, se habilitó un mecanismo de stop loss. El nivel de stop loss por defecto es del 10% del precio de cierre del día. Al mantener posiciones largas, si el precio cae por debajo del nivel de stop loss, la estrategia saldrá de la posición para detener la pérdida.

Análisis de ventajas

  1. La tendencia alfa tiene capacidades más fuertes para determinar las tendencias de precios que las simples medias móviles y otros indicadores.

  2. Al permitir el stop loss de seguimiento, se puede controlar eficazmente la pérdida de una sola operación, reduciendo los riesgos.

  3. Esta estrategia tiene fuertes capacidades de control de riesgos. Incluso en condiciones de mercado desfavorables, las pérdidas pueden minimizarse.

  4. Con menos entradas de referencia, esta estrategia es eficiente para calcular, adecuada para el comercio de alta frecuencia.

Análisis de riesgos

  1. En los mercados de rango lateral, la estrategia puede generar muchas señales comerciales innecesarias, aumentando los costos de negociación y las pérdidas por deslizamiento.

  2. Cuando se habilita el stop loss de seguimiento, el porcentaje de stop loss debe fijarse adecuadamente.

  3. En casos de fluctuación violenta de los precios, la probabilidad de que se active un stop loss aumentará significativamente, lo que aumentará el riesgo de que se bloqueen las posiciones.

  4. Al optimizar los parámetros de stop loss, se deben considerar varios factores, incluidas las características subyacentes y la frecuencia de negociación, no solo la búsqueda de rendimientos máximos.

Los riesgos anteriores podrían mitigarse ajustando los parámetros del indicador alfa, estableciendo el stop loss DYNAMIC, acortando las longitudes de los ciclos de negociación, etc.

Direcciones de optimización

  1. Se pueden probar diferentes parámetros de indicadores para encontrar combinaciones de parámetros de indicadores alfa más adecuadas.

  2. Intentar establecer porcentajes de pérdida de parada dinámicamente basados en ATR para adaptarse mejor a las fluctuaciones del mercado.

  3. Combina con otros indicadores como MACD, KD para filtrar algunas señales falsas.

  4. Los parámetros se pueden optimizar automáticamente en función de los resultados de negociación en vivo y backtesting, utilizando técnicas de aprendizaje automático para mejorar la inteligencia de la selección de parámetros.

Conclusión

La estrategia de tendencia alfa con trailing stop loss combina la determinación de tendencias y el control de riesgos. Puede identificar eficazmente las tendencias de precios y bloquear las ganancias para reducir los riesgos. En comparación con las estrategias simples de seguimiento de tendencias, esta estrategia puede obtener mayores rendimientos constantes. Con varios aspectos de optimización, tiene el potencial de lograr un rendimiento aún mejor.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 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 Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
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=false)
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[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #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))


// //ENTER SOME SETUP TRADES FOR TSL EXAMPLE
// longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20))
// if longCondition
//     strategy.entry('My Long Entry Id', strategy.long)

// shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20))
// if shortCondition
//     strategy.entry('My Short Entry Id', strategy.short)



longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
    

enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true)
//TRAILING STOP CODE
trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01



longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + trailStop)
    math.min(stopValue, shortStopPrice[1])
else
    999999

//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop')

    
if enableTrailing
    //EXIT TRADE @ TSL
    if strategy.position_size > 0
        strategy.exit(id='Close Long', stop=longStopPrice)
    if strategy.position_size < 0
        strategy.exit(id='Close Short', stop=shortStopPrice)


 

Más.