
La estrategia de negociación sincronizada de indicadores binarios es un sistema de negociación cuantitativa basado en el análisis técnico que combina hábilmente las ventajas de un indicador relativamente débil (RSI) y un indicador de dispersión de convergencia de medias móviles (MACD) para capturar una fuerte tendencia ascendente en el mercado. La estrategia realiza solo operaciones múltiples y permite un proceso de toma de decisiones de negociación sistematizada mediante la identificación de señales de ruptura dinámica combinadas con un mecanismo de gestión de riesgos.
El funcionamiento de la estrategia se basa en la sinergia de dos indicadores técnicos clave. En primer lugar, la estrategia utiliza el indicador RSI para medir la velocidad y la amplitud de los cambios en los precios y determinar si el mercado está sobrecomprado o sobrevendido. En segundo lugar, utiliza el indicador MACD para identificar los cambios en las tendencias del mercado y la intensidad de la dinámica.
Condiciones de entrada:
Condiciones de filtrado adicionales:
Condiciones de juego:
La estrategia diseñó un mecanismo de seguimiento de estado para asegurar que la entrada se realice en condiciones de equilibrio y la salida en condiciones de tenencia, evitando el problema de la repetición de la señal. Este diseño permite que cada entrada tenga una sola salida, manteniendo la claridad y la consistencia de la lógica de la negociación.
Efectos de la sinergia de los indicadoresLa combinación de las ventajas de los indicadores RSI y MACD, RSI puede responder rápidamente a los cambios en los precios, mientras que el MACD puede confirmar tendencias a medio y largo plazo, lo que aumenta la fiabilidad de la señal.
Mecanismo de filtración flexibleLa estrategia ofrece dos mecanismos opcionales de filtración de tendencias de EMA y filtración de contexto de sobreventa, lo que permite a los comerciantes ajustar la adaptabilidad de la estrategia en función de las diferentes condiciones del mercado.
Una buena gestión de riesgosUn mecanismo de stop-loss integrado permite a los operadores ajustar los parámetros porcentuales de acuerdo con sus preferencias de riesgo, controlando de manera efectiva el umbral de riesgo de una sola operación.
Administración de estado claraAsegurar la coherencia y la lógica de las señales de negociación, evitando el problema de la entrada o salida repetida.
Alta personalizaciónLa estrategia ofrece varios parámetros ajustables, incluida la longitud del RSI, los parámetros MACD, las condiciones de filtrado y los parámetros de gestión de riesgos, lo que permite a los operadores optimizar en función de las diferentes condiciones del mercado y las variedades de operaciones.
Ayuda visualLas estrategias ofrecen funciones visuales como marcadores de entrada/salida, coloración de la línea K y visualización del fondo de activación, para que los operadores puedan entender y ajustar las estrategias de forma intuitiva.
Riesgo de una falsa brechaEn un mercado convulso, el RSI y el MACD pueden generar frecuentes falsas brechas, lo que lleva a una serie de operaciones perdedoras. Para mitigar este riesgo, se pueden agregar filtros de entorno de mercado adicionales, como un indicador de volatilidad o un indicador de intensidad de tendencia.
Limitación de las transacciones unidireccionales: Esta estrategia sólo ejecuta operaciones de más tiendas, y se perderá una oportunidad potencial de hacer un shorting en una tendencia bajista. En un sistema de negociación integral, se puede considerar agregar una estrategia de tiendas en blanco correspondiente, o suspender la negociación en una tendencia bajista clara.
Sensibilidad de los parámetros: El rendimiento de la estrategia es sensible a la configuración de parámetros, y diferentes mercados y marcos de tiempo pueden requerir diferentes combinaciones de parámetros. Se recomienda optimizar los parámetros mediante la retroalimentación en varias condiciones de mercado y considerar el uso de métodos de parámetros de adaptación.
Detener el riesgo de configuraciónLos paros demasiado pequeños pueden provocar un disparo frecuente, mientras que los paros demasiado grandes pueden provocar una pérdida excesiva. Se debe ajustar el porcentaje de paros según las características de la volatilidad del mercado objetivo, o considerar el uso de métodos de paros dinámicos como el multiplicador ATR.
La latencia de la señalComo indicadores de retraso, las señales de RSI y MACD pueden aparecer después de que los precios ya han cambiado significativamente, lo que afecta el precio de entrada y la rentabilidad. Se puede considerar la combinación de indicadores de prioridad más sensibles para optimizar el momento de entrada.
Sistema de parámetros adaptadosDesarrollar un mecanismo de ajuste de parámetros de adaptación basado en la volatilidad del mercado o la intensidad de la tendencia, para que los parámetros de RSI y MACD puedan optimizarse automáticamente según las condiciones actuales del mercado, mejorando la adaptabilidad de las estrategias en diferentes entornos de mercado.
Análisis de marcos de tiempo múltiplesIntroducción de mecanismos de confirmación de múltiples marcos de tiempo, por ejemplo, la confirmación de la dirección de la tendencia en los marcos de tiempo más grandes, y luego la ejecución de operaciones específicas en los marcos de tiempo más pequeños, para reducir las falsas señales y aumentar la tasa de éxito.
Mecanismo de detención de pérdidas dinámicasSe cambian los paros porcentuales fijos por paros dinámicos basados en el ATR (Average True Rate) para adaptarse mejor a los cambios en la volatilidad del mercado y, al mismo tiempo, proteger los fondos y dar suficiente espacio de respiración a los precios.
Optimización de la gestión de fondosIntroducir algoritmos de gestión de posiciones basados en el valor neto, la volatilidad y la ganancia de la cuenta, como la fórmula de Kelly o el modelo de riesgo de proporción fija, para que el umbral de riesgo de cada operación coincida con el estado actual de la cuenta y las condiciones del mercado.
El filtro del entorno de mercado integrado: Añadir filtros que permitan identificar el entorno del mercado (trend, oscilación o giro), como el ADX (índice de dirección promedio), un indicador de volatilidad o una herramienta de análisis periódico, para ejecutar operaciones en condiciones de mercado adecuadas para la estrategia.
Logía de operaciones en blanco: Estrategia de extensión para incluir reglas de negociación a la izquierda, para que sean igualmente efectivas en una tendencia bajista, para así construir un sistema de negociación integral.
La estrategia de negociación sincronizada de indicadores de doble dinámica combina las ventajas de dos indicadores técnicos clásicos, el RSI y el MACD, para crear un sistema de negociación cuantitativo con claridad lógica y control de riesgos. La estrategia se centra en capturar oportunidades de volumen dinámico en una tendencia ascendente, al tiempo que mejora la calidad de las transacciones a través de múltiples mecanismos de filtración y herramientas de gestión de riesgos.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-08-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// Vibe coded by Andrew Grothe 2025-08-08. Adjust the TP/SL on lines 28 & 29 to fine tune the strategy
strategy("RSI + MACD Long-Only Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.0)
// Inputs — RSI
rsiLen = input.int(14, "RSI Length", minval=1, group="RSI")
rsiOB = input.int(70, "RSI Overbought", minval=50, maxval=100, group="RSI")
rsiOS = input.int(30, "RSI Oversold", minval=0, maxval=50, group="RSI")
rsiMid = input.int(50, "RSI Midline", minval=0, maxval=100, group="RSI")
// Inputs — MACD
fastLen = input.int(12, "MACD Fast Length", minval=1, group="MACD")
slowLen = input.int(26, "MACD Slow Length", minval=1, group="MACD")
sigLen = input.int(9, "MACD Signal Length", minval=1, group="MACD")
requireAboveZero = input.bool(false, "Require MACD > 0 (trend filter)", group="MACD")
// Inputs — Filters & Visuals
useOversoldContext = input.bool(false, "Entry must be within N bars after RSI < Oversold", group="Signals")
oversoldWindowBars = input.int(10, "N bars after oversold", minval=1, group="Signals")
useEMATrend = input.bool(false, "Only Long if price > EMA", group="Signals")
emaLen = input.int(200, "EMA Length", minval=1, group="Signals")
showMarkers = input.bool(true, "Plot Entry/Exit Markers", group="Visuals")
colorBars = input.bool(false, "Color Bars on Signals", group="Visuals")
// Inputs — Risk
// 1 hour = 2.0/1.0, 2 hour = 10.5/2.5
useTPSL = input.bool(true, "Use Take Profit / Stop Loss", group="Risk")
tpPerc = input.float(11.5, "Take Profit %", minval=0.0, step=0.1, group="Risk")
slPerc = input.float(2.5, "Stop Loss %", minval=0.0, step=0.1, group="Risk")
// Core calculations
rsi = ta.rsi(close, rsiLen)
[macd, macdSignal, macdHist] = ta.macd(close, fastLen, slowLen, sigLen)
emaTrend = ta.ema(close, emaLen)
// Conditions
macdBull = macd > macdSignal and (not requireAboveZero or macd > 0)
rsiBull = rsi > rsiMid
recentlyOversold = ta.barssince(rsi < rsiOS) <= oversoldWindowBars
trendOk = not useEMATrend or close > emaTrend
// Precompute cross events to avoid conditional execution warnings
rsiCrossUpMid = ta.crossover(rsi, rsiMid)
macdCrossUp = ta.crossover(macd, macdSignal)
rsiCrossDownMid = ta.crossunder(rsi, rsiMid)
macdCrossDown = ta.crossunder(macd, macdSignal)
// Signals (long-only)
longTrigger = (rsiCrossUpMid and macdBull) or (macdCrossUp and rsi >= rsiMid)
longEntry = longTrigger and (not useOversoldContext or recentlyOversold) and trendOk
exitSignal = rsiCrossDownMid or (macdCrossDown and macdHist <= 0)
// Stateful gating so we only get one exit per entry
var bool inLong = false
inLongPrev = barstate.isfirst ? false : inLong[1]
finalLongEntry = longEntry and not inLongPrev
finalExit = exitSignal and inLongPrev
inLong := (inLongPrev or finalLongEntry) and not finalExit
// Plots
plot(useEMATrend ? emaTrend : na, title="EMA", color=color.orange, linewidth=2)
plotshape(showMarkers and finalLongEntry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.tiny, text="Long")
plotshape(showMarkers and finalExit, title="Exit", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="Exit")
barcolor(colorBars ? (finalLongEntry ? color.lime : finalExit ? color.red : na) : na)
// Debug background to visualize when raw long trigger occurs
bgcolor(longTrigger ? color.new(color.lime, 90) : na)
// Alerts
//alertcondition(finalLongEntry, title="RSI+MACD Long Entry", message="RSI+MACD Long Entry on {{ticker}} {{interval}} at {{close}}")
//alertcondition(finalExit, title="RSI+MACD Exit", message="RSI+MACD Exit on {{ticker}} {{interval}} at {{close}}")
// Strategy Orders — Long only
if finalLongEntry
strategy.entry("Long", strategy.long)
// Protective exits (TP/SL) while in position
if useTPSL and strategy.position_size > 0
longSL = strategy.position_avg_price * (1 - slPerc / 100.0)
longTP = strategy.position_avg_price * (1 + tpPerc / 100.0)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)
// Signal-based exit
if finalExit and strategy.position_size > 0
strategy.close("Long", comment="Signal Exit")