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.
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.
La tendencia alfa tiene capacidades más fuertes para determinar las tendencias de precios que las simples medias móviles y otros indicadores.
Al permitir el stop loss de seguimiento, se puede controlar eficazmente la pérdida de una sola operación, reduciendo los riesgos.
Esta estrategia tiene fuertes capacidades de control de riesgos. Incluso en condiciones de mercado desfavorables, las pérdidas pueden minimizarse.
Con menos entradas de referencia, esta estrategia es eficiente para calcular, adecuada para el comercio de alta frecuencia.
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.
Cuando se habilita el stop loss de seguimiento, el porcentaje de stop loss debe fijarse adecuadamente.
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.
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.
Se pueden probar diferentes parámetros de indicadores para encontrar combinaciones de parámetros de indicadores alfa más adecuadas.
Intentar establecer porcentajes de pérdida de parada dinámicamente basados en ATR para adaptarse mejor a las fluctuaciones del mercado.
Combina con otros indicadores como MACD, KD para filtrar algunas señales falsas.
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.
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)