
La estrategia de negociación intradiaria precisa basada en bloques de órdenes institucionales y retractaciones de Fibonacci es un sistema de negociación intradiaria de alta precisión diseñado específicamente para el mercado de valores de los Estados Unidos, optimizado especialmente para el marco de tiempo de 15 minutos. La estrategia combina el concepto de flujo de órdenes institucionales con el principio de retractación de Fibonacci, diseñado para identificar puntos de inflexión de precios de alta probabilidad, al tiempo que aplica una estricta gestión de riesgos y reglas basadas en períodos de negociación.
El núcleo de la estrategia consiste en identificar las zonas de orden de los fondos de la entidad (Order Blocks) y encontrar el punto de entrada óptimo utilizando los niveles de retiro de Fibonacci del 61.8% o el 79%. Al esperar la ruptura de los puntos de parada (liquidity sweep), la estrategia es capaz de reconocer posibles reveses de precios, lo que proporciona una señal de negociación más confiable. El estricto filtro de tiempo asegura que la estrategia solo se negocie entre las 9:30 y las 16:00 horas EST, y se obligue a liquidar todas las posiciones a las 16:30 horas, lo que evita el riesgo de noche a la mañana.
El principio central de la estrategia se basa en la identificación de los flujos de pedidos de las instituciones y la estructura de los precios, y el mecanismo específico de funcionamiento es el siguiente:
Identificación de movimiento de pulso fuerteLa estrategia consiste en identificar un movimiento de impulso fuerte primero buscando una ruptura en la estructura de precios. Cuando el precio se mueve en un período de 5 líneas K y la amplitud de la oscilación es mayor que ATR (~ 14) multiplicado por el tamaño mínimo de la oscilación, el sistema identifica un punto alto o bajo de oscilación efectivo.
Marcado con el bloque de orden: Después de confirmar el punto de oscilación, la estrategia marcará la zona de la orden de la agencia. Cuando se forma un punto de oscilación bajo, el nivel de precio de ese punto se marca como un bloque de orden bajista; Cuando se forma un punto de oscilación alto, el nivel de precio de ese punto se marca como un bloque de orden bajista.
Fibonacci retira su confirmación: La estrategia requiere que el precio retroceda al 61.8% o al 79% de los niveles de Fibonacci, que se obtienen calculando los picos y los bajos. Cuando el precio retrocede a estos niveles clave, la estrategia comienza a buscar señales de entrada.
El filtro del tiempoTodas las operaciones deben realizarse entre las 9:30 y las 16:00 horas EST, lo que garantiza que la estrategia opere en el momento en que el mercado es más activo y de mayor liquidez. No se abren nuevas posiciones después de las 16:00 horas y todas las posiciones se cierran a las 16:30 horas.
Confirmación de ingreso:
Mecanismo de gestión de riesgosLa estrategia utiliza el ATR ((14) para establecer el punto de parada, asegurando que el riesgo se controle dentro de un rango razonable. El punto de parada para las operaciones con más tiendas está establecido por debajo de los mínimos más recientes, y el punto de parada para las operaciones con tiendas en blanco está establecido por encima de los máximos más recientes.
Ratio fijo de riesgo-retorno: La estrategia por defecto utiliza un riesgo de retorno de riesgo de 2: 1 para establecer el punto de parada, que se obtiene calculando el parámetro de riesgo de retorno de riesgo por ATR ((14)).
Al analizar el código de la estrategia, podemos resumir las siguientes ventajas:
Lógica de transacción basada en el comportamiento de la instituciónA través de la identificación de bloques de pedidos y limpieza de liquidez, la estrategia puede seguir la dirección de movimiento de grandes capitales, aumentando la probabilidad de éxito de las transacciones.
La administración precisa del tiempoLa restricción estricta de las horas de negociación asegura que la estrategia se opere solo durante los momentos más activos del mercado, evitando los riesgos de deslizamiento y fluctuación que pueden surgir durante los momentos de baja liquidez.
Mecanismo de compensación obligatorioLa regla obligatoria de la posición baja de 16:30 al día es eficaz para evitar el riesgo de mantener posiciones durante la noche, especialmente en mercados con mucha volatilidad durante el día.
Señales de negociación visualesEstrategia: Marque claramente las señales de negociación a través de una interfaz gráfica, con el triángulo verde en la parte superior y el triángulo rojo en la parte inferior, lo que permite a los operadores identificar rápidamente las oportunidades de negociación potenciales.
Gestión de riesgos dinámicosLa configuración de stop loss basada en ATR permite que los controles de riesgo se ajusten automáticamente a la volatilidad del mercado, proporcionando una exposición de riesgo consistente en diferentes entornos de volatilidad.
Alta personalizaciónLa estrategia ofrece varios parámetros clave para ajustar, incluidos los niveles de Fibonacci, el tamaño mínimo de oscilación y el índice de retorno del riesgo, lo que permite a los comerciantes personalizar los ajustes según sus preferencias de riesgo y estilo de negociación.
Las condiciones de ingreso son estrictas.A través de la combinación de varios factores de confirmación (plataforma de pedido, nivel de Fibonacci, tiempo de negociación efectivo), la estrategia reduce efectivamente las señales falsas y mejora la calidad de las transacciones.
A pesar de las ventajas de esta estrategia, existen algunos riesgos y desafíos potenciales:
El riesgo de optimización excesivaLa estrategia depende de varios parámetros precisos, como el nivel de Fibonacci, el multiplicador ATR, etc. Puede haber un riesgo de optimización excesiva, lo que lleva a un mal rendimiento en datos fuera de la muestra. La solución es usar un ciclo de retrocesión lo suficientemente largo y probar la solidez de la estrategia en diferentes entornos de mercado.
El riesgo de una tendencia rápida: En un mercado de tendencia fuerte, los precios pueden no retroceder a los niveles de Fibonacci indicados, lo que lleva a perder una tendencia potencialmente favorable. Se puede considerar agregar un módulo de seguimiento de tendencias o ajustar dinámicamente los niveles de Fibonacci para responder a este problema.
Riesgo de interrupción por tiempo limitadoLas reglas de no abrir nuevas posiciones después de las 16:00 y las 16:30 obligatorias pueden conducir a la salida forzada en condiciones favorables o a la posición cerrada forzada a precios desfavorables. Se puede considerar la introducción de reglas de posición cerrada más flexibles en función de las condiciones del mercado y la situación de pérdidas y pérdidas de la posición.
El retraso en la identificación de puntos de oscilaciónLa estrategia utiliza datos históricos (< 5 líneas K) para identificar puntos de oscilación, lo que puede causar que la señal se retrase y se pierda el mejor momento de entrada. Se puede intentar optimizar los algoritmos de identificación de puntos de oscilación o introducir otros indicadores tempranos para mejorar la efectividad de la señal.
Limitaciones de un solo marco de tiempo: El uso de un marco de tiempo de solo 15 minutos puede pasar por alto una estructura de mercado importante en una escala de tiempo mayor o menor. Considerar la adición de análisis de múltiples marcos de tiempo puede proporcionar una perspectiva de mercado más completa.
Limitaciones de las tasas fijas de riesgo-beneficioLa configuración uniforme de la rentabilidad por riesgo de 2: 1 puede no ser adecuada para todos los entornos de mercado, especialmente cuando la volatilidad cambia significativamente. Se puede considerar ajustar la relación de rentabilidad por riesgo en función de la volatilidad del mercado o la dinámica de los niveles de resistencia de soporte.
Basado en un análisis profundo del código de la política, las siguientes son algunas posibles direcciones de optimización:
Confirmación del marco temporal múltipleIntroducir un marco de tiempo más alto (como 1 hora o 4 horas) para confirmar tendencias, asegurar que la dirección de las operaciones durante el día esté en consonancia con las tendencias más grandes y mejorar la tasa de ganancias. Esta optimización se puede lograr mediante la adición de indicadores de tendencia o análisis de la estructura de los precios en el marco de tiempo más alto.
El nivel dinámico de FibonacciRequiere ajustar el nivel de retracción de Fibonacci en función de la volatilidad del mercado o la dinámica de la intensidad de la tendencia actual. Se puede necesitar una retracción más leve en una tendencia fuerte (por ejemplo, 38.2%) y una retracción más profunda en un mercado convulso (por ejemplo, 61.8% o 79%).
El estado del mercado se adaptaIntroducir la clasificación de estados de mercado (trend, oscilación, alta volatilidad, etc.) y ajustar los parámetros de la estrategia en función de las diferentes condiciones del mercado. Por ejemplo, en un mercado de alta volatilidad puede ser necesario un mayor ajuste de los parámetros de pérdidas, mientras que en un mercado de baja volatilidad puede utilizar un parámetro de pérdidas más estrechas para aumentar la probabilidad de ganar.
Mecanismo de bloqueo parcial de las gananciasIntroducción de posiciones cerradas cuando los beneficios alcanzan un nivel específico, como el 50% de la posición cerrada cuando los beneficios alcanzan el 1R, y el resto de la configuración de seguimiento de los stop losses para maximizar la captura de oportunidades de tendencias potenciales.
Filtrado de los indicadores de fluctuación: Añadir indicadores de volatilidad como la variación de ATR o el indicador de ancho de banda de Bollinger para filtrar las señales de negociación en entornos de baja volatilidad y evitar el exceso de negociación en mercados con fluctuaciones intermitentes.
Confirmación de la transacciónIntroducción de análisis de volumen de transacciones como un factor de confirmación adicional para asegurar que los cambios en los precios están respaldados por un volumen de transacciones suficiente y mejorar la fiabilidad de la señal.
Aprendizaje automático: Utiliza algoritmos de aprendizaje automático para analizar la efectividad de los bloques de orden y los retrocesos de Fibonacci en los datos históricos y, en consecuencia, optimizar los ajustes de parámetros o mejorar la selección de señales.
Optimización de pérdidasLas estrategias actuales utilizan el establecimiento de paros de pérdidas con un multiplicador ATR fijo. Se puede considerar el uso de estructuras de precios recientes (como puntos de oscilación recientes) para establecer posiciones de paros más precisos, tanto para proteger los fondos como para evitar la salida prematura del mercado.
La estrategia de negociación intradiaria precisa basada en bloques de órdenes institucionales y retiros de Fibonacci representa un método de negociación sistematizado que proporciona reglas claras de entrada y salida para los operadores intradiarios mediante la combinación de análisis de comportamiento de las operaciones institucionales con herramientas de análisis técnico clásico.
La mayor ventaja de esta estrategia reside en su identificación y aprovechamiento de los flujos de órdenes de las instituciones, combinado con estrictas reglas de filtración de tiempo y gestión de riesgos, lo que la hace especialmente adecuada para el comercio intradiario en el mercado de valores de los Estados Unidos. La idea central de la negociación se centra en la búsqueda de puntos de inflexión de alta probabilidad de retorno de los precios a las áreas clave de órdenes de las instituciones y a los niveles de Fibonacci, un método que equilibra eficazmente la frecuencia de las operaciones con la calidad de la señal.
Los riesgos de la estrategia provienen principalmente de los desafíos de optimización de parámetros y adaptabilidad al entorno del mercado, pero estos riesgos pueden ser administrados y mitigados de manera efectiva a través de direcciones de optimización propuestas, como la confirmación de marcos de tiempo múltiples, el ajuste de parámetros dinámicos y la adaptación automática al estado del mercado.
En general, la estrategia ofrece un marco de operaciones intradiarias sólido, adecuado para los comerciantes con un cierto entendimiento del comportamiento de las operaciones institucionales, que puede mantener un rendimiento estable en diferentes entornos de mercado a través de la configuración y optimización de parámetros razonables. Es una opción de estrategia que vale la pena considerar para los comerciantes que desean encontrar oportunidades de operaciones estructuradas en el marco de tiempo intradiario.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-29 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Rawstocks 15-Minute Model", overlay=true, margin_long=100, margin_short=100, pyramiding=0)
// ===== TIME CONTROL ===== (UTC-4 = Eastern Time)
startHour = input(9, "Start Hour (ET)")
startMin = input(30, "Start Minute")
entryCutoffHour = input(16, "Last Entry Hour (ET)") // 4:00 PM
entryCutoffMin = input(0, "Last Entry Minute")
closeHour = input(16, "Force Close Hour (ET)") // 4:30 PM
closeMin = input(30, "Force Close Minute")
// Define session in UTC-4 (ET)
sessionStart = timestamp("UTC-4", year, month, dayofmonth, startHour, startMin)
entryCutoffTime = timestamp("UTC-4", year, month, dayofmonth, entryCutoffHour, entryCutoffMin)
forceCloseTime = timestamp("UTC-4", year, month, dayofmonth, closeHour, closeMin)
// ===== CORE STRATEGY =====
// Inputs
fib1 = input.float(61.8, "Fib Level (%)")
minSwingSize = input.float(1.0, "Min Swing Size (%)") / 100
rrRatio = input.float(2.0, "Risk/Reward")
// Swing Detection
swingHigh = ta.highest(high, 5) == high[2] and (high[2] - low[2]) >= ta.atr(14) * minSwingSize
swingLow = ta.lowest(low, 5) == low[2] and (high[2] - low[2]) >= ta.atr(14) * minSwingSize
// Order Blocks
var float bullOB = na
var float bearOB = na
if swingLow
bullOB := low[2]
if swingHigh
bearOB := high[2]
// Fib Levels
var float swingTop = na
var float swingBot = na
if swingHigh
swingTop := high[2]
if swingLow
swingBot := low[2]
fib618 = swingBot + (swingTop - swingBot) * (fib1/100)
fib79 = swingBot + (swingTop - swingBot) * 0.79
// Entry Conditions
longCond = not na(bullOB) and (low <= bullOB) and (close >= fib618 or close >= fib79)
shortCond = not na(bearOB) and (high >= bearOB) and (close <= fib618 or close <= fib79)
// Time Filter - No entries after 4:00 PM
validEntryTime = (time >= sessionStart) and (time <= entryCutoffTime)
// ===== EXECUTION =====
// Entries (only before 4:00 PM)
if (longCond and validEntryTime)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", stop=low - ta.atr(14), limit=close + (ta.atr(14) * rrRatio))
if (shortCond and validEntryTime)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", stop=high + ta.atr(14), limit=close - (ta.atr(14) * rrRatio))
// Force Close at 4:30 PM ET
var bool forceClosedToday = false
if (time >= forceCloseTime and time < forceCloseTime + 60000) and (not forceClosedToday)
strategy.close_all("EOD Close @ 4:30PM")
forceClosedToday := true
// Reset daily flag
if dayofmonth != dayofmonth[1]
forceClosedToday := false
// ===== VISUALS =====
// Signal Triangles (gray if after entry cutoff)
plotshape(series=longCond, title="Long Signal", style=shape.triangleup, location=location.belowbar,
color=validEntryTime ? color.new(color.green, 0) : color.new(color.gray, 0), size=size.small)
plotshape(series=shortCond, title="Short Signal", style=shape.triangledown, location=location.abovebar,
color=validEntryTime ? color.new(color.red, 0) : color.new(color.gray, 0), size=size.small)
// Execution Markers
var float longEntryPrice = na
var float shortEntryPrice = na
if (strategy.position_size > 0 and strategy.position_size[1] <= 0)
longEntryPrice := close
if (strategy.position_size < 0 and strategy.position_size[1] >= 0)
shortEntryPrice := close
plot(series=longEntryPrice, title="Long Entry", style=plot.style_circles, linewidth=3, color=color.new(color.green, 0))
plot(series=shortEntryPrice, title="Short Entry", style=plot.style_circles, linewidth=3, color=color.new(color.red, 0))
// Force Close Marker
if (time >= forceCloseTime and time < forceCloseTime + 60000)
label.new(
bar_index,
high,
"4:30 PM Close",
style=label.style_label_down,
color=color.red,
textcolor=color.white
)