Estrategia de seguimiento de tendencia de media móvil de Fibonacci de varios niveles

FIB EMA MA SMA
Fecha de creación: 2024-11-29 15:09:56 Última modificación: 2024-11-29 15:09:56
Copiar: 0 Número de Visitas: 486
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de media móvil de Fibonacci de varios niveles

Descripción general

La estrategia es un sistema de seguimiento de tendencias que combina retrocesos de Fibonacci, promedios móviles de múltiples índices y volúmenes de transacciones. La estrategia confirma la tendencia mediante el análisis de la ubicación de los precios en diferentes niveles de retrocesos de Fibonacci (,0,382, ,618, ) en combinación con EMAs de varios períodos (<20/50/100/200) y identifica oportunidades de negociación potenciales a través de filtros de brechas de volumen de transacciones. El sistema diseña un mecanismo de gestión de riesgos completo, que incluye un porcentaje fijo de pérdidas y paradas.

Principio de estrategia

La lógica central de la estrategia se basa en una metodología de análisis técnico de varios niveles:

  1. Utilizando 30 ciclos como un intervalo de retrospectiva para calcular el nivel de retracción de Fibonacci y establecer un marco de soporte y resistencia para el movimiento de precios
  2. Construir un sistema de confirmación de tendencias de varios niveles a través de promedios móviles de índices con un ciclo de 20/50/100/200
  3. Cuando el precio está cerca del nivel de Fibonacci de 0.382 y el volumen de transacciones es mayor que la depreciación, se activa una señal de plus si el precio está por encima de la línea media
  4. Cuando el precio está cerca del nivel de Fibonacci de 0.618 y el volumen de transacciones es mayor que la depreciación, si el precio está por debajo de la línea media, se activa una señal de brecha
  5. Se ha configurado un Stop Loss basado en porcentajes de 6% y 3% respectivamente.

Ventajas estratégicas

  1. Análisis multidimensional: combina las tres dimensiones de la forma, la tendencia y el volumen de transacción de los precios para mejorar la fiabilidad de la señal
  2. Gestión de riesgos perfecta: establece condiciones de stop-loss claras para controlar el riesgo de cada transacción
  3. Confirmación de tendencias: el uso de un sistema de líneas medias múltiples permite determinar con mayor precisión la intensidad y la dirección de las tendencias
  4. Estricta filtración de señales: requiere que se cumplan al mismo tiempo las condiciones de precio, línea media y volumen de transacción, reduciendo la probabilidad de falsas brechas
  5. Alta visibilidad: los puntos de entrada y salida se indican claramente a través de un sistema de etiquetas para facilitar el análisis y la optimización

Riesgo estratégico

  1. Riesgo de mercado de oscilación: Falsa señal frecuente en mercados de oscilación horizontal, se recomienda el aumento de filtros para los indicadores de oscilación
  2. Riesgo de punto de deslizamiento: bajo las limitaciones de las condiciones de volumen de transacción, se puede enfrentar a la ejecución de puntos de deslizamiento que requieren ajustar el umbral de volumen de transacción según las circunstancias reales
  3. Riesgo de gestión de fondos: el porcentaje fijo de pérdidas puede no ser lo suficientemente flexible en ciertos casos y se recomienda un ajuste dinámico en función de la volatilidad
  4. Dependencia de la tendencia: la estrategia funciona mejor en una tendencia evidente, pero puede sufrir pérdidas continuas en un período de cambio de tendencia
  5. Sensibilidad de los parámetros: la combinación de varios parámetros aumenta el riesgo de sobreajuste, lo que requiere una verificación de retrospectiva en diferentes períodos de tiempo

Dirección de optimización de la estrategia

  1. Optimización dinámica de las paradas: se recomienda la introducción de indicadores ATR para ajustar dinámicamente la distancia de paradas y mejorar la adaptabilidad a las fluctuaciones del mercado
  2. Cuantificación de la intensidad de la tendencia: puede agregar indicadores de intensidad de la tendencia como ADX, aumentar las posiciones durante una tendencia fuerte y reducir las transacciones durante una tendencia débil
  3. Profundización en el análisis de transacciones: se recomienda aumentar el análisis de transacciones promedio y anormal para mejorar la precisión del análisis de transacciones
  4. Optimización de la hora de entrada: puede combinarse con indicadores de oscilación como el RSI para buscar oportunidades de sobreventa en la dirección de la tendencia
  5. Mejora en la gestión de las posiciones: se recomienda ajustar la proporción de las posiciones en función de la intensidad de la tendencia y la dinámica de la volatilidad del mercado

Resumir

Se trata de una estrategia de seguimiento de tendencias bien diseñada y con múltiples capas, que construye un marco analítico tridimensional mediante la combinación de herramientas clásicas de análisis técnico. La ventaja de la estrategia reside en la rigurosidad de la confirmación de señales y la integridad de la gestión de riesgos, pero también en la atención a la actuación en mercados convulsionados.

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

//@version=5
strategy("ALD Fib Ema SAKALAM", overlay=true)

// Inputs
lookback = input.int(30, title="Lookback Period for Fibonacci", minval=10)
volumeThreshold = input.float(500000, title="24h Volume Threshold", step=50000)
stopLossPct = input.float(3.0, title="Stop Loss %", minval=0.5)
takeProfitPct = input.float(6.0, title="Take Profit %", minval=1.0)
maLength = input.int(50, title="Trend Filter MA Length", minval=1)

// Moving Average (Trend Filter)
ma = ta.sma(close, maLength)

// High and Low for Fibonacci Levels
var float swingHigh = na
var float swingLow = na

if bar_index > lookback
    swingHigh := ta.highest(high, lookback)
    swingLow := ta.lowest(low, lookback)

// Fibonacci Levels Calculation
fib0 = swingLow
fib1 = swingHigh
fib382 = swingHigh - 0.382 * (swingHigh - swingLow)
fib618 = swingHigh - 0.618 * (swingHigh - swingLow)

// 24-hour Volume Calculation
volume24h = ta.sma(volume, 24)

// Plot Fibonacci Levels
plot(fib0, title="Fib 0", color=color.new(color.red, 80))
plot(fib382, title="Fib 0.382", color=color.new(color.green, 50))
plot(fib618, title="Fib 0.618", color=color.new(color.blue, 50))
plot(fib1, title="Fib 1", color=color.new(color.red, 80))
plot(ma, title="Trend Filter MA", color=color.orange)

// Entry Condition: Buy Signal
longCondition = (close <= fib382) and (volume24h > volumeThreshold) and (close > ma)
if (longCondition)
    strategy.entry("Buy", strategy.long)
    label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)

// Exit Conditions
takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPct / 100)
stopLossPrice = strategy.position_avg_price * (1 - stopLossPct / 100)

// Place Exit Orders
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=takeProfitPrice, stop=stopLossPrice)

// Add Labels for Exits
if (strategy.position_size > 0)
    if (high >= takeProfitPrice)
        label.new(bar_index, high, "EXIT (Take Profit)", style=label.style_label_down, color=color.blue, textcolor=color.white)

    if (low <= stopLossPrice)
        label.new(bar_index, low, "EXIT (Stop Loss)", style=label.style_label_down, color=color.red, textcolor=color.white)

// Short Selling Conditions
shortCondition = (close >= fib618) and (volume24h > volumeThreshold) and (close < ma)
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)

// Short Exit Conditions
if (strategy.position_size < 0)
    strategy.exit("Short Take Profit/Stop Loss", from_entry="Sell", limit=strategy.position_avg_price * (1 - takeProfitPct / 100), stop=strategy.position_avg_price * (1 + stopLossPct / 100))

// Add EMA 20/50/100/200
shortest = ta.ema(close, 20)
short = ta.ema(close, 50)
longer = ta.ema(close, 100)
longest = ta.ema(close, 200)

plot(shortest, color=color.orange, title="EMA 20")
plot(short, color=color.red, title="EMA 50")
plot(longer, color=color.black, title="EMA 100")
plot(longest, color=color.green, title="EMA 200")