Estrategias avanzadas de seguimiento de tendencias y trailing stop adaptables

ATR SL TS
Fecha de creación: 2024-12-20 14:12:05 Última modificación: 2024-12-20 14:12:05
Copiar: 1 Número de Visitas: 418
1
Seguir
1617
Seguidores

Estrategias avanzadas de seguimiento de tendencias y trailing stop adaptables

Descripción general

Esta es una estrategia de seguimiento de tendencias basada en indicadores de Supertrend, combinada con un mecanismo de seguimiento de pérdidas adaptativo. La estrategia identifica principalmente la dirección de la tendencia del mercado a través de indicadores de Supertrend y utiliza el seguimiento de las pérdidas de ajuste dinámico para administrar el riesgo y optimizar el tiempo de salida.

Principio de estrategia

La lógica central de la estrategia se basa en los siguientes elementos clave:

  1. El uso del indicador Supertrend como base principal para determinar la tendencia, que combina el ATR (Average True Rate) para medir la volatilidad del mercado
  2. Las señales de entrada son activadas por cambios en la dirección de la Supertrend, que apoyan el comercio de más, menos o de dos vías
  3. El mecanismo de detención de pérdidas utiliza un seguimiento de detención adaptativo, que puede ajustar automáticamente la posición de detención en función de las fluctuaciones del mercado
  4. El sistema de gestión de transacciones incluye la gestión de posiciones (el 15% de las posiciones de la cuenta por defecto) y el mecanismo de filtrado de tiempo

Ventajas estratégicas

  1. Capacidad de captura de tendencias: el indicador Supertrend permite identificar las principales tendencias y reducir los errores de juicio
  2. Control de riesgos: un mecanismo de pérdidas diversificado que se adapta a las diferentes condiciones del mercado
  3. Alta flexibilidad: Configuración que admite múltiples direcciones de negociación y formas de deterioro
  4. Adaptabilidad: el trazado del stop loss se ajusta automáticamente a las fluctuaciones del mercado para mejorar la adaptabilidad de la estrategia
  5. Sistema de retroalimentación completo: función de filtrado de tiempo incorporada para facilitar el análisis del rendimiento histórico

Riesgo estratégico

  1. Riesgo de cambio de tendencia: Falsa señal en un mercado muy volátil
  2. Riesgo de deslizamiento: la ejecución de los trail stops podría verse afectada por la liquidez del mercado
  3. Sensibilidad de los parámetros: los factores de Supertrend y la configuración del ciclo ATR tienen un mayor impacto en el rendimiento de la estrategia
  4. Dependencia del entorno del mercado: el aumento de los costos puede ser causado por la frecuencia de las transacciones en un mercado convulso

Dirección de optimización de la estrategia

  1. Optimización de la filtración de señales: se pueden agregar indicadores técnicos adicionales para filtrar señales falsas
  2. Optimización de la gestión de posiciones: se puede ajustar el porcentaje de posiciones en función de la dinámica de la volatilidad del mercado
  3. Mecanismo de detención de pérdidas mejorado: puede incorporar una lógica de detención de pérdidas más compleja en el diseño de costo promedio
  4. Optimización de la hora de entrada: se puede agregar un análisis de la estructura de precios para mejorar la precisión de la entrada
  5. Mejora del sistema de retroalimentación: se pueden agregar más indicadores estadísticos para evaluar el rendimiento de la estrategia

Resumir

Se trata de una estrategia de seguimiento de tendencias de diseño razonable y controlada por el riesgo. Combinando los indicadores de Supertrend con un mecanismo de stop loss flexible, la estrategia puede controlar el riesgo de manera efectiva y al mismo tiempo mantener una alta rentabilidad. La estrategia es altamente configurable y es adecuada para su uso en diferentes entornos de mercado, pero requiere una adecuada optimización de los parámetros y verificación de la retrospectiva.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")