Estrategia de trading cuantitativo multifactorial VWAP-MACD-RSI

VWAP MACD RSI TP SL
Fecha de creación: 2024-11-27 16:11:00 Última modificación: 2024-11-27 16:11:00
Copiar: 1 Número de Visitas: 771
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo multifactorial VWAP-MACD-RSI

Descripción general

Se trata de una estrategia de trading cuantitativa basada en el triple indicador técnico VWAP, MACD y RSI. La estrategia identifica oportunidades de compra y venta en el mercado mediante la combinación de múltiples señales de la media ponderada de transacciones (VWAP), el promedio móvil de convergencia y dispersión (MACD) y el indicador de la relativa debilidad (RSI). La estrategia utiliza un mecanismo de stop loss porcentual para administrar el riesgo y utiliza la gestión de posiciones estratégicas para optimizar el uso de los fondos.

Principio de estrategia

La lógica central de la estrategia se basa en un análisis integrado de tres indicadores principales:

  1. Usar el VWAP como la línea de referencia de tendencia principal, cuando el precio rompe el VWAP como una señal potencial de cambio de tendencia
  2. El gráfico de columnas del MACD se utiliza para confirmar la fuerza y la dirección de la tendencia, con valores positivos para una tendencia alcista y valores negativos para una tendencia bajista.
  3. El RSI se usa para identificar si el mercado está sobrecomprado o sobrevendido y evitar entrar en situaciones extremas

Las condiciones de compra son:

  • El precio de la VWAP sube
  • El MACD es el gráfico columnar positivo
  • El RSI no alcanzó el nivel de sobrecompra

Las condiciones de venta deben cumplirse al mismo tiempo:

  • El precio ha bajado por encima del VWAP
  • El MACD es negativo
  • El RSI no alcanzó el nivel de sobreventa

Ventajas estratégicas

  1. Verificación cruzada de múltiples indicadores técnicos para mejorar la fiabilidad de la señal
  2. Introducción de factores de volumen de ventas para aumentar la profundidad del análisis del mercado a través de VWAP
  3. El RSI filtra las tendencias extremas para reducir el riesgo de brechas falsas
  4. El uso de stop loss porcentual para adaptarse dinámicamente a diferentes rangos de precios
  5. El tamaño de posición se basa en la proporción de la cuenta de valor neto, para la gestión de posiciones dinámicas
  6. La lógica de la estrategia es clara, fácil de entender y mantener

Riesgo estratégico

  1. Los mercados convulsionados pueden generar transacciones frecuentes y aumentar los costos de las transacciones
  2. Las múltiples señales pueden causar un retraso en la señal y afectar el tiempo de entrada.
  3. El porcentaje fijo de stop loss puede no ser adecuado para todos los entornos de mercado
  4. Sin tener en cuenta los cambios en la volatilidad del mercado, que pueden aumentar el riesgo en períodos de alta volatilidad
  5. Falta de filtro de intensidad de tendencia, que puede generar demasiadas señales en mercados de tendencia débil

Dirección de optimización de la estrategia

  1. Introducción del ATR para ajustar el stop loss dinámico para adaptarse mejor a las fluctuaciones del mercado
  2. Agrega un filtro de intensidad de tendencia para reducir las falsas señales de los mercados vibratorios
  3. Optimización de la configuración del ciclo VWAP para considerar combinaciones de VWAP de varios períodos
  4. Introducción de un mecanismo de confirmación de la entrega para mejorar la fiabilidad de la señal de ruptura
  5. Considere agregar filtros de tiempo para evitar comerciar en momentos de baja liquidez
  6. Mecanismo de dimensionamiento de posiciones que permite un ajuste dinámico del tamaño de las posiciones según las condiciones del mercado

Resumir

La estrategia utiliza tres indicadores técnicos clásicos: VWAP, MACD y RSI para construir un sistema de negociación relativamente completo. La estrategia está diseñada para centrarse en la fiabilidad de la señal y la gestión del riesgo, para mejorar la calidad de las transacciones mediante la verificación cruzada de múltiples indicadores.

Código Fuente de la Estrategia
/*backtest
start: 2024-10-27 00:00:00
end: 2024-11-26 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("pbs", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input for take-profit and stop-loss
takeProfitPercent = input.float(0.5, title="Take Profit (%)", step=0.1) / 100
stopLossPercent = input.float(0.25, title="Stop Loss (%)", step=0.1) / 100


macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalLength = input.int(9, title="MACD Signal Length")


rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level", step=1)
rsiOversold = input.int(30, title="RSI Oversold Level", step=1)


vwap = ta.vwap(close)


[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
macdHistogram = macdLine - signalLine

rsi = ta.rsi(close, rsiLength)


plot(vwap, color=color.purple, linewidth=2, title="VWAP")
hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "Oversold", color=color.green, linestyle=hline.style_dotted)
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")

// Buy Condition
longCondition = ta.crossover(close, vwap) and macdHistogram > 0 and rsi < rsiOverbought

// Sell Condition
shortCondition = ta.crossunder(close, vwap) and macdHistogram < 0 and rsi > rsiOversold

// Execute trades based on conditions
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=close * (1 + takeProfitPercent), stop=close * (1 - stopLossPercent))

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=close * (1 - takeProfitPercent), stop=close * (1 + stopLossPercent))

// Plot Buy/Sell Signals
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")