
La estrategia de comercio cuantitativa, denominada “sistema de determinación de tendencias dinámicas de múltiples marcos horarios”, es un sistema integral que combina varios indicadores técnicos, principalmente la combinación de los indicadores de la media móvil (EMA) cruzada, el índice de fuerza relativa (RSI), el precio promedio ponderado por volumen de transacción (VWAP) y el índice de dirección promedio (ADX) para tomar decisiones comerciales. La estrategia, a través del análisis de múltiples marcos horarios, combina indicadores de tendencia y confirmación de movimiento para identificar eficazmente las zonas de venta y venta exageradas del mercado y determinar el flujo de fondos de la institución.
El principio central de la estrategia se basa en la confirmación de la sinergia de indicadores de mercado a varios niveles. En primer lugar, el sistema calcula las medias móviles de índices de dos períodos diferentes, el corto período EMA (9) y el largo período EMA (21), para identificar la dirección de la tendencia y los posibles puntos de cambio de tendencia. En segundo lugar, el sistema obtiene datos del RSI (14) del marco de tiempo de 15 minutos, introduciendo un análisis de marcos temporales para confirmar el estado de los volúmenes de precios. En tercer lugar, el sistema utiliza el VWAP del marco de tiempo actual como un indicador de referencia para la participación de fondos de la institución y establece un umbral de diferencia entre el VWAP y la línea media del 0.1% para filtrar las señales de negociación.
Concretamente, los requisitos de entrada en el mercado libre deben cumplirse al mismo tiempo: el EMA a corto plazo debe atravesar el EMA a largo plazo (cruzamiento hacia abajo), el RSI de 15 minutos es mayor que 30 (no sobreventa), el VWAP es significativamente inferior a los dos EMA (al menos 0.1%), lo que indica la existencia de presión de venta de la institución y el sentimiento de caída. Mientras que los requisitos de entrada múltiple solo requieren un RSI de 15 minutos por debajo de 30 (estado de sobreventa), que aún no se han incorporado a los filtros EMA y VWAP.
Además, la estrategia también introdujo un filtro ADX opcional, que asegura que solo se negocie en una tendencia clara mediante el cálculo manual del valor ADX (la longitud predeterminada es 14) y el establecimiento de un umbral mínimo (la longitud predeterminada es 20). Los usuarios pueden habilitar o deshabilitar el filtro ADX, lo que aumenta la flexibilidad de la estrategia. La estrategia también admite la opción de elegir la dirección de negociación mediante la introducción de parámetros (largo, corto o ambos), lo que facilita su adaptación a sistemas de negociación automatizados como el robot OKX o las alertas de TradingView.
Confirmación sincronizada de varios indicadoresLa combinación de los cuatro indicadores: cruce EMA, dinámica RSI, flujo de fondos de las instituciones VWAP y intensidad de la tendencia ADX, forma un mecanismo de confirmación de señales de negociación en varios niveles, lo que mejora significativamente la fiabilidad de la señal.
Análisis de marcos de tiempo múltiplesLa estrategia permite evaluar el movimiento del mercado desde una perspectiva más macro, reduciendo los puntos ciegos que el análisis de un solo marco de tiempo puede generar.
Perspectivas financieras de las institucionesUtilizando la brecha entre el VWAP y el EMA como indicador de la participación de los fondos de las instituciones, esta perspectiva institucional permite a la estrategia identificar mejor las verdaderas presiones y áreas de apoyo del mercado.
Modo de operación flexibleA través de los parámetros de tradeDirection, los usuarios pueden elegir solo hacer más, solo hacer menos o comerciar de manera bidireccional según el entorno del mercado o las preferencias personales, sin tener que mantener varias versiones de la estrategia.
Filtración de tendencias dinámicasEl filtro ADX opcional ayuda a la estrategia a operar solo en tendencias claras, reduciendo de manera efectiva las falsas señales en mercados convulsionados, al tiempo que se conserva la flexibilidad de desactivar este filtro.
Integración de la gestión de riesgosLa estrategia incluye un mecanismo de stop loss y stop stop ((un número fijo de puntos de precio), combinado con el RSI sobre la condición de sobrecompra como señal de salida, formando un ciclo de cierre completo.
Eficiencia en el códigoEstrategia: estructura de código clara, modularidad lógica, proceso de cálculo eficiente, fácil de mantener y optimizar aún más.
Las condiciones de entrada no son perfectas.La lógica de overbought de las estrategias actuales se basa únicamente en condiciones de sobreventa en el RSI < 30, y la falta de filtros de cruce EMA y VWAP puede conducir a una entrada prematura o a un exceso frecuente de overbought en una tendencia bajista continua, aumentando el riesgo de pérdidas.
Ajuste para detener los dañosLa estrategia utiliza un número fijo de puntos ((100 puntos de parada, 200 puntos de parada) en lugar de un porcentaje o un deterioro dinámico basado en la tasa de fluctuación, que puede no ser lo suficientemente flexible en diferentes entornos de fluctuación, el período de alta fluctuación puede detenerse con demasiada facilidad y el período de baja fluctuación puede detenerse con demasiada rigidez.
Sin control de la frecuencia de las transaccionesLa falta de estrategia. Opentrades == 0 El juicio puede conducir a la entrada repetida cuando se activa una señal en serie, formando superposición de posiciones y aumentando involuntariamente la abertura de riesgo.
Complejidad de cálculo de ADXEl ADX calculado manualmente aumenta la complejidad del código, aunque funciona correctamente, pero es de baja capacidad de mantenimiento, lo que puede conducir a errores en el juicio de tendencias si se produce una desviación de cálculo.
VWAP para el umbral de diferencia fijoEl umbral de la brecha VWAP fija del 0.1% puede no ser aplicable a todas las condiciones del mercado, puede ser demasiado flexible en mercados de alta volatilidad y puede ser demasiado riguroso en mercados de baja volatilidad.
Falta de análisis de sensibilidad de retroalimentación: El código no muestra los resultados de la optimización de parámetros o el análisis de sensibilidad, por lo que no se puede determinar si la combinación de parámetros actual (como EMA 9⁄21, RSI 14, ADX 14⁄20) es la mejor.
Puede haber un retrasoLas solicitudes de datos a través de marcos de tiempo (request.security) pueden introducir retrasos en los datos en ciertos casos, especialmente en mercados que cambian rápidamente, lo que afecta la precisión de la hora de transacción.
Mejorar la lógica de las entradas múltiplesPara añadir imágenes en múltiples estrategias, se requieren condiciones VWAP y filtros cruzados de EMA, es decir, se requiere que el VWAP sea significativamente superior a dos EMAs (por ejemplo, 0.1%) y que el EMA a corto plazo pase por encima del EMA a largo plazo, para que la simetría de la lógica de múltiples espacios mejore la calidad de la señal de múltiples.
Añadir control de frecuencia de las transaccionesOpentrades == 0 para evitar la acumulación de posiciones causada por señales continuas y para controlar mejor las brechas de riesgo.
Ajuste para detener el daño dinámico: Basado en la amplitud real media (ATR) de los ajustes dinámicos de los niveles de stop loss para adaptar la gestión de riesgos a las fluctuaciones actuales del mercado, en lugar de la configuración actual de puntos fijos.
Optimización del cálculo de ADX: Considere la posibilidad de utilizar la función ta.adx () incorporada en TradingView para reemplazar el cálculo manual, simplificar el código y mejorar la mantención, al tiempo que se agrega la determinación de la dirección de ADX () + la relación DI con -DI) para refinar aún más la dirección de la tendencia.
VWAP Dinámico de brecha: Diseñar el umbral de la brecha VWAP como un parámetro dinámico basado en la volatilidad del mercado, por ejemplo en relación con el ATR, para que las condiciones de filtración se adapten a diferentes entornos del mercado.
Añadir un filtro de tiempo de transacciónIntroducir controles de horario de operaciones, evitar los momentos de baja liquidez o los anuncios de noticias importantes, y reducir el riesgo de puntos de deslizamiento y fluctuaciones inesperadas.
Consistencia de las tendencias de los marcos temporales múltiplesConsidere agregar un marco de tiempo más alto (por ejemplo, 1 hora o 4 horas) para determinar la dirección de la tendencia, y solo negocie cuando la tendencia coincida en varios marcos de tiempo, para reducir aún más las señales falsas.
Introducción de la confirmación de volumen de las transaccionesAumentar la confirmación de indicadores de volumen de transacciones, como el volumen de transacciones que se requieren cuando se produce un cruce de EMA significativamente superior al promedio de los períodos anteriores, para mejorar la fiabilidad de la señal de cambio de tendencia.
El sistema de determinación de tendencias dinámicas de múltiples marcos horarios es una estrategia cuantitativa integral que combina una variedad de herramientas de análisis técnico para proporcionar a los comerciantes una señal de entrada y salida relativamente confiable a través del mecanismo de confirmación múltiple de los flujos de fondos de las instituciones y la intensidad de las tendencias de la EMA, RSI, VWAP y ADX. La estrategia se centra especialmente en el análisis combinado del comportamiento de los fondos de las instituciones con el sentimiento minorista, teniendo en cuenta las características de seguimiento de tendencias y inversiones de operaciones.
A pesar de que las estrategias se muestran excelentes en cuanto a la compatibilidad y flexibilidad de varios indicadores, todavía existen problemas como la imperfección de la multicondicionamiento, la administración fija del riesgo y la posible entrada repetida. Se espera que el rendimiento y la estabilidad de las estrategias se mejoren significativamente mediante la mejora de la multilogía, la implementación de la gestión dinámica del riesgo, la adición de control de la frecuencia de transacción, la optimización del cálculo ADX, el diseño de la valoración VWAP dinámica y la introducción de medidas de optimización como el filtro de tiempo de transacción y los requisitos de coherencia de múltiples marcos de tiempo.
En general, la estrategia representa una idea de diseño de sistema de negociación integral y flexible, que ofrece a los operadores una herramienta que en teoría puede adaptarse a una variedad de entornos de mercado, considerando integralmente los indicadores técnicos, la estructura de precios, el sentimiento del mercado y el comportamiento institucional. Después de la optimización recomendada, la estrategia tiene el potencial de ser un sistema de negociación más completo y eficiente.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MinhPhan MA Crossover Strategy RSI 15m + ADX Toggle", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.001)
// === Inputs ===
shortLen = input.int(9, title="Short EMA")
longLen = input.int(21, title="Long EMA")
useAdxFilter = input.bool(true, title="Enable ADX Filter?")
adxLen = input.int(14, title="ADX Length")
adxThresh = input.float(20, title="Min ADX to Trade")
// === EMAs ===
shortMA = ta.ema(close, shortLen)
longMA = ta.ema(close, longLen)
// === VWAP ===
vwap = ta.vwap
// === RSI from 15-minute timeframe ===
rsi_15m = request.security(syminfo.tickerid, "15", ta.rsi(close, 14))
// === Manual ADX Calculation ===
upMove = high - high[1]
downMove = low[1] - low
plusDM = na(upMove) or upMove <= downMove or upMove < 0 ? 0 : upMove
minusDM = na(downMove) or downMove <= upMove or downMove < 0 ? 0 : downMove
tr = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
smoothedTR = ta.rma(tr, adxLen)
smoothedPlusDM = ta.rma(plusDM, adxLen)
smoothedMinusDM = ta.rma(minusDM, adxLen)
plusDI = 100 * smoothedPlusDM / smoothedTR
minusDI = 100 * smoothedMinusDM / smoothedTR
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLen)
isTrending = useAdxFilter ? adx > adxThresh : true // ADX toggle logic
// === VWAP Gap Filter ===
gapThreshold = 0.001
vwapBelowEMAs =
(shortMA - vwap) / shortMA > gapThreshold and
(longMA - vwap) / longMA > gapThreshold
// === Direction Control ===
tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"])
allowLong = tradeDirection == "Long" or tradeDirection == "Both"
allowShort = tradeDirection == "Short" or tradeDirection == "Both"
// === Entry Conditions ===
if (allowLong and rsi_15m < 30 and isTrending)
strategy.entry("Long", strategy.long)
if (allowShort and rsi_15m > 30 and ta.crossunder(shortMA, longMA) and vwapBelowEMAs and isTrending)
strategy.entry("Short", strategy.short)
// === Exit Conditions ===
if (strategy.position_size > 0 and rsi_15m > 70)
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
if (strategy.position_size < 0 and rsi_15m < 30)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)
// === Plots ===
plot(shortMA, color=color.blue, title="Short EMA")
plot(longMA, color=color.red, title="Long EMA")
plot(vwap, title="VWAP", color=color.purple, linewidth=2)
plot(adx, title="ADX", color=color.orange)
hline(adxThresh, "ADX Threshold", color=color.gray, linestyle=hline.style_dashed)