
La estrategia de negociación de consenso de múltiples indicadores es un sistema de negociación cuantitativo que combina tres indicadores técnicos diferentes para confirmar las señales de negociación mediante la verificación mutua entre los indicadores. La estrategia integra un sistema de señales de tendencia de tendencia de onda amplificada y un oscilador de tendencia de onda amplificada, que solo ejecuta operaciones de compra o venta cuando al menos dos indicadores dan señales en la misma dirección. Este mecanismo de consenso mejora significativamente la fiabilidad de la señal y reduce las pérdidas causadas por falsas brechas.
El principio central de la estrategia de negociación de consenso de múltiples indicadores consiste en confirmar la dirección de las operaciones mediante el análisis multidimensional del estado del mercado:
La tendencia a la superpeso de la liquidez (LWST): Combinación de ATR y información de tráfico para crear una banda de resistencia de soporte dinámico. El indicador combina el tradicional indicador de tendencias súper con un peso de tráfico, lo que hace que la banda sea más sensible en áreas de alto tráfico. El proceso de cálculo incluye:
Sistema de señales de tendenciaUtiliza el sistema de doble EMA para detectar tendencias de precios. Juzga la intensidad de las tendencias del mercado comparando el porcentaje de diferencia entre las medias móviles rápidas y lentas. Cuando la EMA rápida supera la EMA lenta y alcanza el umbral establecido, genera una señal de múltiples cabezas; a la inversa, genera una señal de cabeza vacía.
Oscilador de tendencia de ondas de aumento (WT): Calcula el valor de oscilación basado en el grado de desviación del precio de su promedio plano, para identificar el estado de sobrecompra y sobreventa. El indicador genera la señal a través de los siguientes pasos:
Mecanismo de señales de consensoLa estrategia solo ejecuta operaciones cuando al menos dos indicadores coinciden. Esto se logra calculando el número de indicadores múltiples (en el rango de 3 a 3), generando una señal de compra cuando el valor es mayor que igual a 2 y una señal de venta cuando es menor que igual a 2.
Gestión de riesgosEl precio de entrada de cada operación se establece en un Stop Loss (el 2% por defecto) y un Stop Loss (el 4% por defecto), que se ejecutan automáticamente cuando se cumple cualquiera de las condiciones.
El filtro de la señal está mejorado.: Requiere el consenso de varios indicadores para ejecutar operaciones, lo que reduce considerablemente las señales engañosas que un solo indicador puede generar y mejora la precisión de las operaciones.
Adaptación a las diferentes condiciones del mercadoLos tres indicadores se enfocan en diferentes propiedades del mercado (trend, momentum, volatilidad) para que la estrategia pueda mantenerse efectiva en diferentes entornos del mercado.
Ajuste sensible a la liquidez: Las súper tendencias con peso de liquidez ajustan la sensibilidad a la dinámica de la transacción, lo que permite que la estrategia capte los cambios de tendencia más rápidamente en las zonas de alta liquidez y sea más conservadora en las zonas de baja liquidez.
Gestión de riesgos integradaLos mecanismos predeterminados de stop-loss y stop-loss proporcionan un claro índice de riesgo-beneficio para cada operación, controlando el riesgo de una sola operación dentro de un rango aceptable.
Las herramientas de visualización intuitivaLa estrategia proporciona tablas de señales en tiempo real y marcas gráficas para ayudar a los operadores a comprender rápidamente el estado actual del mercado y las señales de los indicadores.
Integración de la gestión de fondosGestión inteligente de fondos, evitando exceso de riesgo al establecer el tamaño de las posiciones basado en los intereses de la cuenta.
Sensibilidad de los parámetrosEstrategia: Utiliza varios parámetros ajustables, la configuración inadecuada de los parámetros puede conducir a una optimización excesiva o a una falta de señal. Solución: Realiza un análisis exhaustivo de sensibilidad de los parámetros y selecciona una combinación de parámetros que se muestren estables en varias condiciones de mercado.
La señal está retrasada.: Debido al uso de medias móviles y confirmación de múltiples indicadores, la estrategia puede perder parte de la marcha al inicio de la tendencia. Solución: Se puede considerar la configuración de diferentes combinaciones de parámetros para diferentes períodos de tiempo, o la adición de un indicador de corto plazo más sensible.
El mercado horizontal no funciona bien: En mercados sin una tendencia clara, varios indicadores de tendencia pueden dar señales mixtas, lo que lleva a la negociación frecuente o no. Solución: agregar un filtro que identifica específicamente el mercado de la horizontal, suspender la negociación cuando se identifica la horizontal o cambiar a una estrategia diseñada específicamente para la horizontal.
Riesgo de pérdidas fijasEl uso de un porcentaje fijo de pérdidas puede no ser adecuado para las características de volatilidad de diferentes activos. Solución: Ajuste el intervalo de pérdidas basado en el ATR o la volatilidad histórica.
Riesgos de la gestión de fondosEl uso por defecto del 100% de los fondos de la cuenta puede conducir a una concentración excesiva de riesgo. Solución: Ajuste el tamaño de la posición según el estado del mercado y la dinámica de la intensidad de las señales, implemente una estrategia de comercio descentralizado.
Ajuste de parámetros dinámicos:
Añadir filtro de entorno de mercado:
Optimización de los mecanismos de frenado/detención de pérdidas:
Grado de intensidad de la señal:
El filtro del tiempo:
La estrategia de negociación de consenso de múltiples indicadores crea un sistema de negociación robusto mediante la integración de supertrends ponderados por la liquidez, el sistema de señales de tendencia y el oscilador de tendencia de ondas de aumento. Su principal ventaja es que el mecanismo de consenso de múltiples indicadores mejora significativamente la fiabilidad de la señal, mientras que el componente de peso de liquidez agrega a la estrategia una mayor sensibilidad a la profundidad del mercado.
Sin embargo, la estrategia aún tiene espacio para la optimización, especialmente en cuanto a la adaptabilidad de los parámetros, la identificación del estado del mercado y el bloqueo dinámico de los estancamientos. Mediante la implementación de la dirección de optimización recomendada, especialmente mediante la creación de filtros de entorno de mercado y un sistema de clasificación de la intensidad de la señal, la estrategia puede mejorar aún más la adaptabilidad y la estabilidad en una variedad de condiciones de mercado.
En general, es un sistema de comercio cuantitativo bien diseñado, adecuado para que los comerciantes experimentados realicen retroalimentación y optimización de parámetros antes de la venta. El diseño modular de la estrategia también hace que sea fácil de modificar y ampliar según las necesidades personales.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-Indicator Consensus Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// =================== Input Parameters ===================
// Liquidity Weighted Supertrend
lwst_period = input.int(10, "LWST Period", minval=1, tooltip="Period for ATR calculation")
lwst_multiplier = input.float(3.0, "LWST Multiplier", minval=0.1, tooltip="Multiplier for ATR bands")
lwst_length = input.int(20, "Volume SMA Length", minval=1, tooltip="Length for volume SMA")
// Trend Signals
trend_length = input.int(14, "Trend Length", minval=1, tooltip="Length for EMA calculation")
trend_threshold = input.float(0.5, "Trend Threshold", minval=0.1, tooltip="Percentage threshold for trend signals")
// Enhanced Wavetrend
wt_channel_length = input.int(9, "WT Channel Length", minval=1, tooltip="Smoothing period for initial calculations")
wt_average_length = input.int(12, "WT Average Length", minval=1, tooltip="Smoothing period for final signal")
wt_ma_length = input.int(3, "WT MA Length", minval=1, tooltip="Moving average length for signal line")
wt_overbought = input.float(53, "WT Overbought", minval=0, tooltip="Level to identify overbought conditions")
wt_oversold = input.float(-53, "WT Oversold", minval=-100, tooltip="Level to identify oversold conditions")
// Risk Management
sl_percent = input.float(2.0, "Stop Loss %", minval=0.1, tooltip="Stop loss percentage from entry")
tp_percent = input.float(4.0, "Take Profit %", minval=0.1, tooltip="Take profit percentage from entry")
// =================== Indicator 1: Liquidity Weighted Supertrend ===================
// Volume-weighted component for dynamic sensitivity
vol_sma = ta.sma(volume, lwst_length)
vol_weight = volume / vol_sma
// ATR-based bands with volume weighting
atr = ta.atr(lwst_period)
upperBand = hl2 + lwst_multiplier * atr * vol_weight
lowerBand = hl2 - lwst_multiplier * atr * vol_weight
// Trend determination based on price action
var float lwst_trend = 0.0
lwst_trend := close > lwst_trend[1] ? 1 : close < lwst_trend[1] ? -1 : lwst_trend[1]
// =================== Indicator 2: Trend Signals ===================
// Dual EMA system for trend detection
fast_ema = ta.ema(close, trend_length)
slow_ema = ta.ema(close, trend_length * 2)
trend_diff = (fast_ema - slow_ema) / slow_ema * 100
trend_signal = trend_diff > trend_threshold ? 1 : trend_diff < -trend_threshold ? -1 : 0
// =================== Indicator 3: Enhanced Wavetrend ===================
// Calculate Wavetrend components
ap = hlc3 // Typical price
esa = ta.ema(ap, wt_channel_length) // Smoothed price
d = ta.ema(math.abs(ap - esa), wt_channel_length) // Average volatility
ci = (ap - esa) / (0.015 * d) // Base oscillator
tci = ta.ema(ci, wt_average_length) // Smoothed oscillator
// Generate main and signal lines
wt1 = tci
wt2 = ta.sma(wt1, wt_ma_length)
// Generate Wavetrend Signal based on overbought/oversold conditions
wt_signal = 0
wt_signal := wt1 > wt_overbought and wt2 > wt_overbought ? -1 :
wt1 < wt_oversold and wt2 < wt_oversold ? 1 :
wt_signal[1]
// =================== Consensus Signal Generation ===================
// Count bullish signals (1 point for each bullish indicator)
var int consensus_count = 0
consensus_count := (lwst_trend == 1 ? 1 : 0) +
(trend_signal == 1 ? 1 : 0) +
(wt_signal == 1 ? 1 : 0)
// Generate trading signals when majority (2+ indicators) agree
bool buy_signal = consensus_count >= 2
bool sell_signal = consensus_count <= -2
// =================== Trade Execution ===================
// Long position entry and exit with risk management
if (buy_signal and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", "Long",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// Short position entry and exit with risk management
if (sell_signal and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", "Short",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// =================== Visualization ===================
// Signal markers for entry points
plotshape(buy_signal ? low : na, "Buy Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(sell_signal ? high : na, "Sell Signal", shape.triangledown, location.abovebar, color.red, size=size.small)
// Indicator lines
plot(wt1, "Wavetrend 1", color.blue, linewidth=1)
plot(wt2, "Wavetrend 2", color.orange, linewidth=1)
plot(wt_overbought, "Overbought", color.red, linewidth=1)
plot(wt_oversold, "Oversold", color.green, linewidth=1)
plot(fast_ema, "Fast EMA", color.yellow, linewidth=1)
plot(slow_ema, "Slow EMA", color.white, linewidth=1)
plot(lwst_trend == 1 ? upperBand : na, "Upper Band", color.green, linewidth=2)
plot(lwst_trend == -1 ? lowerBand : na, "Lower Band", color.red, linewidth=2)
// =================== Information Table ===================
// Real-time display of indicator signals
var table info = table.new(position.top_right, 2, 4)
table.cell(info, 0, 0, "Indicator", bgcolor=color.gray, text_color=color.white)
table.cell(info, 1, 0, "Signal", bgcolor=color.gray, text_color=color.white)
table.cell(info, 0, 1, "LWST", text_color=color.white)
table.cell(info, 1, 1, str.tostring(lwst_trend), text_color=lwst_trend == 1 ? color.green : color.red)
table.cell(info, 0, 2, "Trend", text_color=color.white)
table.cell(info, 1, 2, str.tostring(trend_signal), text_color=trend_signal == 1 ? color.green : color.red)
table.cell(info, 0, 3, "Wavetrend", text_color=color.white)
table.cell(info, 1, 3, str.tostring(wt_signal), text_color=wt_signal == 1 ? color.green : color.red)