
Esta estrategia es un sistema de comercio cuantitativo que combina varios indicadores, que utiliza principalmente la confirmación del volumen de transacciones y la sincronización de los indicadores de dinámica para capturar oportunidades de ruptura en el mercado. La estrategia integra el indicador acumulado de volumen de transacciones (OBV), volumen de transacciones neto (Net Volume), indicador de fuerza relativa (RSI) y indicador de flujo de capital (MFI), junto con el índice de movimiento medio (EMA) para la confirmación de tendencias, y utiliza un mecanismo de seguimiento de pérdidas dinámicas para optimizar el punto de salida, que equilibra efectivamente la rentabilidad y el control del riesgo.
Según los datos de retrospectiva, la estrategia logró una tasa de victoria del 83.20% en el período de 15 minutos en los últimos 12 meses, con un promedio de ganancias por transacción de 746.18 USDT, y las mejores transacciones individuales de 65,654 USDT, con un total de 381 transacciones completadas. Estos datos indican que la estrategia tiene una considerable estabilidad y potencial de ganancias en un entorno de comercio de alta frecuencia.
La lógica central de la estrategia se basa en el mecanismo de confirmación conjunta de múltiples indicadores, y funciona de la siguiente manera:
Condiciones de ingresoEl sistema capta principalmente oportunidades múltiples y dispara una señal de compra cuando se cumplen todas las condiciones siguientes:
Mecanismo de salidaEl sistema de control de pérdidas de seguimiento dinámico con triple protección:
Conjunto de indicadores técnicos:
Este mecanismo de confirmación en varios niveles asegura la calidad de las señales de entrada, mientras que el seguimiento dinámico de los paros de pérdidas bloquea efectivamente las ganancias y controla el riesgo.
Un análisis profundo de la estructura del código y la lógica de esta estrategia puede resumirse en las siguientes ventajas notables:
Confirmación de señales multidimensionalesLa combinación de indicadores de las tres dimensiones de precio, volumen de transacciones y movilidad reduce considerablemente la probabilidad de falsas señales. La fiabilidad de la señal de entrada mejora significativamente cuando OBV, volumen de transacciones neto, RSI y MFI cumplen al mismo tiempo con los requisitos.
El comportamiento de los precios apoyado por el volumen de transaccionesAsegurarse de que los cambios en los precios están respaldados por suficientes volúmenes de transacciones, a través de la doble verificación de OBV y volumen de transacciones netas, para evitar caer en la trampa de la “caída de la cantidad”.
Deterioro de la dinámica de la inteligenciaLa estrategia no utiliza un stop-loss fijo, sino que ajusta automáticamente la posición de stop-loss en función del comportamiento del precio, lo que permite a los precios tener suficiente espacio para fluctuar mientras protege el capital.
Control por niveles de riesgoA través de un mecanismo de tres niveles de disparo, seguimiento de desviación y pérdidas máximas, se logra un manejo preciso del riesgo para evitar pérdidas significativas causadas por el fallo del mecanismo de protección único.
Adaptabilidad de las transacciones de alta frecuenciaOptimizado para un marco de tiempo de 15 minutos, capaz de capturar las fluctuaciones diarias y aprovechar las fluctuaciones de los sentimientos del mercado a corto plazo para crear múltiples oportunidades de negociación.
Un desempeño estable en la victoriaEl 83.20% de éxito muestra que la estrategia tiene una calidad de señal consistente, lo cual es crucial para la sostenibilidad a largo plazo de la estrategia de comercio cuantitativo.
A pesar de que la estrategia ha funcionado muy bien, a través del análisis del código, se han identificado los siguientes riesgos potenciales:
Dependencia volátil: La estrategia depende de que haya suficiente volatilidad en el mercado para activar el mecanismo de seguimiento de las pérdidas. En un entorno de baja volatilidad, esto puede conducir a que las posiciones se mantengan durante mucho tiempo sin poder bloquear efectivamente las ganancias. Cómo solucionarlo: Se puede agregar un mecanismo de frenado basado en el tiempo, o ajustar los parámetros de desplazamiento de disparo durante las bajas oscilaciones.
El promedio de pérdidas es mayorLos datos de retrospectiva muestran que el promedio de pérdidas (-30,713 USDT) es mucho mayor que el promedio de ganancias (7,097 USDT), aunque la probabilidad de ganar es alta, algunas pérdidas importantes pueden afectar gravemente el rendimiento general. *Cómo solucionarlo*Se podría considerar un control más estricto de pérdidas máximas, o añadir más filtros de salida.
Factor de ganancias bajoUn factor de ganancias de 0.231 indica que el riesgo es mayor que el retorno y que hay espacio para la optimización. *Cómo solucionarlo*Reevaluar las estrategias de stop loss, lo que podría requerir una reducción en el porcentaje de pérdidas máximas o un aumento en algunos mecanismos de bloqueo de ganancias.
Preferencia por una sola direcciónLa estrategia se centra en optimizar las oportunidades y puede no funcionar bien en un mercado en declive. Cómo solucionarlo: Considere las condiciones de cobro que se han definido en el código de activación pero que no se han utilizado, o agregue un filtro de tendencias de mercado general.
Sensibilidad de los parámetrosLos tres parámetros clave para el seguimiento de la pérdida de pérdidas (la cantidad de desviación desencadenada, la cantidad de desviación de seguimiento y la pérdida máxima) tienen un impacto significativo en el rendimiento de la estrategia. La configuración incorrecta de los parámetros puede causar salidas prematuras o pérdidas excesivas. *Cómo solucionarlo*Realizar análisis de sensibilidad de parámetros, determinar el rango óptimo de parámetros y considerar ajustes de estos parámetros en función de la dinámica de la volatilidad del mercado.
Basado en un análisis profundo del código de la estrategia, las siguientes son algunas direcciones de optimización posibles:
Ajuste de los parámetros de adaptación: Las estrategias actuales utilizan parámetros de stop loss de seguimiento fijos, y se puede considerar ajustar dinámicamente el desplazamiento de los disparadores y el desplazamiento de seguimiento en función de la volatilidad del mercado (como el indicador ATR). Aumentar el desplazamiento en mercados de alta volatilidad y reducir el desplazamiento en mercados de baja volatilidad, lo que hace que las estrategias se adapten mejor a diferentes entornos de mercado.
Filtrado de intensidad de tendencia: Añadir una evaluación de la intensidad de la tendencia en las condiciones de entrada, como agregar ADX (el índice de dirección promedio), y entrar solo cuando la tendencia es lo suficientemente fuerte para evitar el exceso de comercio en el mercado de liquidación. Esto puede reducir eficazmente las señales de falsa ruptura.
Mecanismo de entrada y salida por lotes: La modificación del código permite el establecimiento y la liquidación de la posición por lotes, por ejemplo, dividir los fondos en 3 partes, ingresar en 1 / 3 cuando se cumplen las condiciones básicas, aumentar la posición cuando las condiciones son más fuertes, y también salir 3 veces. Esto puede optimizar el precio promedio de la posición y reducir la presión de la selección de la oportunidad.
Integrar el análisis del entorno del mercado: Añadir una evaluación del entorno del mercado en períodos de tiempo más altos, por ejemplo, para determinar la dirección de la tendencia en un gráfico de 1 hora o 4 horas, y ejecutar una señal de 15 minutos solo si la tendencia es de mayor apoyo, mejora la calidad de la señal.
Optimización de los factores de ganancias: Aumentar el mecanismo de bloqueo de parte de las ganancias, por ejemplo, cuando las ganancias alcanzan una cierta proporción, eliminar parte de las posiciones para bloquear las ganancias, y el resto continúa utilizando el seguimiento de los estancamientos. De esta manera, se puede equilibrar la alta tasa de ganancias y mejorar la contradicción de la tasa de ganancias promedio.
Aumentar las estrategias de corto plazo: Las condiciones de descuento que ya se han definido en el código de activación y las estrategias de descuento optimizadas específicamente para que las estrategias puedan mantener un rendimiento estable en diferentes entornos de mercado.
El filtro del tiempo: Añadir filtros temporales para evitar períodos de baja o alta volatilidad, como antes y después de la publicación de datos económicos importantes, para reducir el riesgo de situaciones anormales.
Esta estrategia de ruptura de la dinámica de múltiples indicadores combina hábilmente el análisis de la transacción, los indicadores de la dinámica y la confirmación de la tendencia, para construir un sistema de negociación riguroso en la lógica. Su ventaja central consiste en aprovechar la confirmación de señales multidimensionales para mejorar la calidad de entrada, mientras que se logra la gestión dinámica del riesgo mediante el seguimiento de los mecanismos de detención de pérdidas.
A pesar de la impresionante alta tasa de éxito del 83.20%, el hecho de que el promedio de pérdidas sea mayor que el promedio de ganancias indica que la estrategia aún tiene espacio para mejorar en el control de riesgos. Mediante la implementación de las medidas de optimización recomendadas, especialmente el ajuste de los parámetros dinámicos, la operación en serie y el bloqueo parcial de las ganancias, la estrategia espera mejorar significativamente la relación entre el riesgo y el rendimiento general, al tiempo que mantiene una alta tasa de éxito.
La estrategia ofrece un marco sólido para un comerciante cuantitativo experimentado, que puede realizar ajustes personalizados en función de las preferencias de riesgo personales y los principios de gestión de fondos. Lo más importante es que el comerciante entienda los principios lógicos detrás de la estrategia y no se concentre solo en el rendimiento de retroalimentación en el pasado, ya que el entorno del mercado cambia constantemente y la estrategia exitosa requiere adaptabilidad y robustez.
/*backtest
start: 2025-06-07 00:00:00
end: 2025-07-04 08:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("BullFinder_15M_OBV_RSI_MFI", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === Göstergeler ===
// OBV
obv = ta.cum(math.sign(ta.change(close)) * volume)
obvMA = ta.sma(obv, 21)
// Net Volume
netVol = request.security(syminfo.tickerid, "1", volume - volume[1])
// RSI & MFI
rsi = ta.rsi(close, 14)
mfi = ta.mfi(hlc3, 14)
ema21 = ta.ema(close, 21)
// === Trailing Stop Parametreleri ===
trigger_offset = input.float(0.35, "Trigger Offset (%)") / 100
trail_offset = input.float(0.3, "Trail Offset (%)") / 100
max_loss = input.float(3.0, "Max Loss (%)") / 100
// === Durum Değişkenleri ===
var float highestPrice = na
var bool trailActive = false
// === GİRİŞ KOŞULLARI ===
// Long (Aynı kaldı)
longCond = obv > obvMA and netVol > 0 and rsi > 45 and mfi < 50
// Short (Genişletildi - v2.9)
shortCond1 = rsi > 70 and obv < obv[1] and netVol < 0 and close < close[1] // Reversal
shortCond2 = rsi > 65 and mfi > 80 and close < ema21 // Weak Pullback
shortCond = shortCond1 or shortCond2
// === Giriş Emirleri ===
if longCond
strategy.entry("Long", strategy.long)
highestPrice := close
trailActive := false
if shortCond
// strategy.entry("Short", strategy.short)
highestPrice := close
trailActive := false
// === Long Trailing Stop ===
if strategy.position_size > 0
highestPrice := math.max(highestPrice, high)
triggerPrice = strategy.opentrades.entry_price(0) * (1 + trigger_offset)
lossLevel = strategy.opentrades.entry_price(0) * (1 - max_loss)
trailLevel = highestPrice * (1 - trail_offset)
if not trailActive and close > triggerPrice
trailActive := true
if (trailActive and close < trailLevel) or close < lossLevel
strategy.close("Long")
// === Short Trailing Stop ===
if strategy.position_size < 0
highestPrice := math.min(highestPrice, low)
triggerPrice = strategy.opentrades.entry_price(0) * (1 - trigger_offset)
lossLevel = strategy.opentrades.entry_price(0) * (1 + max_loss)
trailLevel = highestPrice * (1 + trail_offset)
if not trailActive and close < triggerPrice
trailActive := true
if (trailActive and close > trailLevel) or close > lossLevel
strategy.close("Short")
// === ALERT ŞARTLARI ===
alertcondition(longCond, title="BullFinder Long Signal", message="BullFinder: Long Entry on {{ticker}} at {{close}}")