Estrategia comercial integrada multidimensional basada en Nadaraya-Watson

SMA RSI ATR
Fecha de creación: 2025-02-20 17:38:44 Última modificación: 2025-02-27 17:21:26
Copiar: 0 Número de Visitas: 446
2
Seguir
319
Seguidores

Estrategia comercial integrada multidimensional basada en Nadaraya-Watson Estrategia comercial integrada multidimensional basada en Nadaraya-Watson

Descripción general

La estrategia es un sistema de negociación multidimensional basado en la regresión nuclear de Nadaraya-Watson, que forma una señal integral para guiar la decisión de negociación mediante la integración de información de mercado en las cuatro dimensiones de la técnica, la emoción, la excitación y la intención. La estrategia utiliza un método de optimización por peso, un tratamiento de peso de la señal en diferentes dimensiones y combina filtros de tendencia y dinámica para mejorar la calidad de la señal.

Principio de estrategia

El núcleo de la estrategia es el tratamiento suave de los datos del mercado en varias dimensiones a través del método de regresión nuclear de Nadaraya-Watson. En concreto:

  1. Dimensión técnica con precio de cierre
  2. Dimensión emocional con el indicador RSI
  3. Las dimensiones de ultrasonido utilizan la tasa de fluctuación ATR
  4. Precio de uso de la dimensión intencional y desviación de la línea media Estas dimensiones se suavizan a través de la regresión nuclear y se integran a través de la integración ponderada de los pesos predeterminados: ((Tecnología 0.4, Emoción 0.2, Supersentimiento 0.2, Intención 0.2) para formar la señal de negociación final. Cuando la señal de integración se cruza con su promedio móvil, se emite una instrucción de negociación después de la confirmación del filtro de tendencia y dinámica.

Ventajas estratégicas

  1. El análisis multidimensional ofrece una perspectiva más completa del mercado, evitando las limitaciones de un solo indicador
  2. La regresión nuclear de Nadaraya-Watson reduce el ruido del mercado y proporciona una señal más suave
  3. El mecanismo de optimización de peso permite ajustar la importancia de las dimensiones según las características del mercado
  4. La adición de filtros de tendencia y potencia mejora significativamente la calidad de la señal
  5. Un buen sistema de gestión de riesgos garantiza la seguridad de los fondos

Riesgo estratégico

  1. La optimización excesiva de parámetros puede provocar un sobreajuste
  2. Las condiciones de filtración múltiple pueden haber perdido parte de la señal válida
  3. La regresión nuclear tiene una alta complejidad y puede afectar a las prestaciones en tiempo real
  4. La mala distribución de las ponderaciones podría debilitar algunas señales importantes del mercado Las medidas de mitigación incluyen: el uso de parámetros de validación de pruebas fuera de la muestra, ajuste dinámico de las condiciones de filtración, optimización de la eficiencia de los cálculos, evaluación periódica y ajuste de la distribución de peso.

Dirección de optimización de la estrategia

  1. Introducción de un sistema de peso adaptativo para ajustar el peso de las dimensiones en función de la dinámica de las condiciones del mercado
  2. Desarrollar mecanismos de filtración más inteligentes para equilibrar la calidad y la cantidad de señales
  3. Optimización de la implementación del algoritmo Nadaraya-Watson para mejorar la eficiencia de la computación
  4. Agrega un módulo de reconocimiento de ciclo de mercado, con diferentes configuraciones de parámetros en diferentes fases del mercado
  5. Ampliación del sistema de gestión de riesgos, con la adición de funciones de gestión dinámica de pérdidas y posiciones

Resumir

Se trata de una estrategia innovadora que combina métodos matemáticos con inteligencia de negociación. A través de análisis multidimensional y herramientas matemáticas avanzadas, la estrategia es capaz de capturar múltiples niveles del mercado y proporcionar señales de negociación relativamente confiables. Aunque hay algunos espacios de optimización, el marco general de la estrategia es sólido y tiene valor de aplicación práctica.

Código Fuente de la Estrategia
/*backtest
start: 2025-02-17 00:00:00
end: 2025-02-19 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Enhanced Multidimensional Integration Strategy with Nadaraya", overlay=true, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

//────────────────────────────────────────────────────────────────────────────
// 1. Configuration and Weight Optimization Parameters
//────────────────────────────────────────────────────────────────────────────
// Weights can be optimized to favor dimensions with higher historical correlation.
// Base values are maintained but can be fine-tuned.
w_technical   = input.float(0.4,   "Technical Weight",        step=0.05)
w_emotional   = input.float(0.2,   "Emotional Weight",      step=0.05)
w_extrasensor = input.float(0.2,   "Extrasensory Weight", step=0.05)
w_intentional = input.float(0.2,   "Intentional Weight",    step=0.05)

// Parameters for Nadaraya-Watson Smoothing Function:
// Smoothing period and bandwidth affect the "memory" and sensitivity of the signal.
smooth_length = input.int(20, "Smoothing Period", minval=5)
bw_param      = input.float(20, "Bandwidth", minval=1, step=1)

//────────────────────────────────────────────────────────────────────────────
// 2. Risk Management Parameters
//────────────────────────────────────────────────────────────────────────────
// Incorporate stop-loss and take-profit in percentage to protect capital.
// These parameters can be optimized through historical testing.
stopLossPerc   = input.float(1.5, "Stop Loss (%)", step=0.1) / 100   // 1.5% stop-loss
takeProfitPerc = input.float(3.0, "Take Profit (%)", step=0.1) / 100   // 3.0% take-profit

//────────────────────────────────────────────────────────────────────────────
// 3. Additional Filters (Trend and Momentum)
//────────────────────────────────────────────────────────────────────────────
// A long-term moving average is used to confirm the overall trend direction.
trend_length = input.int(200, "Trend MA Period", minval=50)
// RSI is used to confirm momentum. A level of 50 is common to distinguish bullish and bearish phases.
rsi_filter_level = input.int(50, "RSI Confirmation Level", minval=30, maxval=70)

//────────────────────────────────────────────────────────────────────────────
// 4. Definition of Dimensions
//────────────────────────────────────────────────────────────────────────────
tech_series         = close
emotional_series    = ta.rsi(close, 14) / 100
extrasensorial_series = ta.atr(14) / close
intentional_series  = (close - ta.sma(close, 50)) / close

//────────────────────────────────────────────────────────────────────────────
// 5. Nadaraya-Watson Smoothing Function
//────────────────────────────────────────────────────────────────────────────
// This function smooths each dimension using a Gaussian kernel.
// Proper smoothing reduces noise and helps obtain a more robust signal.
nadaraya_smooth(_src, _len, _bw) =>
    if bar_index < _len
        na
    else
        float sumW  = 0.0
        float sumWY = 0.0
        for i = 0 to _len - 1
            weight = math.exp(-0.5 * math.pow(((_len - 1 - i) / _bw), 2))
            sumW  := sumW + weight
            sumWY := sumWY + weight * _src[i]
        sumWY / sumW

//────────────────────────────────────────────────────────────────────────────
// 6. Apply Smoothing to Each Dimension
//────────────────────────────────────────────────────────────────────────────
sm_tech        = nadaraya_smooth(tech_series, smooth_length, bw_param)
sm_emotional   = nadaraya_smooth(emotional_series, smooth_length, bw_param)
sm_extrasens   = nadaraya_smooth(extrasensorial_series, smooth_length, bw_param)
sm_intentional = nadaraya_smooth(intentional_series, smooth_length, bw_param)

//────────────────────────────────────────────────────────────────────────────
// 7. Integration of Dimensions
//────────────────────────────────────────────────────────────────────────────
// The integrated signal is composed of the weighted sum of each smoothed dimension.
// This multidimensional approach seeks to capture different aspects of market behavior.
integrated_signal = (w_technical * sm_tech) + (w_emotional * sm_emotional) + (w_extrasensor * sm_extrasens) + (w_intentional * sm_intentional)
// Additional smoothing of the integrated signal to obtain a reference line.
sma_integrated = ta.sma(integrated_signal, 10)

//────────────────────────────────────────────────────────────────────────────
// 8. Additional Filters to Improve Accuracy and Win Rate
//────────────────────────────────────────────────────────────────────────────
// Trend filter: only trade in the direction of the overall trend, determined by a 200-period SMA.
trendMA = ta.sma(close, trend_length)
// Momentum filter: RSI is used to confirm the strength of the movement (RSI > 50 for long and RSI < 50 for short).
rsi_val = ta.rsi(close, 14)

longFilter  = (close > trendMA) and (rsi_val > rsi_filter_level)
shortFilter = (close < trendMA) and (rsi_val < rsi_filter_level)

// Crossover signals of the integrated signal with its SMA reference.
rawLongSignal  = ta.crossover(integrated_signal, sma_integrated)
rawShortSignal = ta.crossunder(integrated_signal, sma_integrated)
// Incorporate trend and momentum filters to filter false signals.
longSignal  = rawLongSignal and longFilter
shortSignal = rawShortSignal and shortFilter

//────────────────────────────────────────────────────────────────────────────
// 9. Risk Management and Order Generation
//────────────────────────────────────────────────────────────────────────────
// Entries are made based on the filtered integrated signal.
if longSignal
    strategy.entry("Long", strategy.long, comment="Long Entry")
if shortSignal
    strategy.entry("Short", strategy.short, comment="Short Entry")

// Add automatic exits using stop-loss and take-profit to limit losses and secure profits.
// For long positions: stop-loss below entry price and take-profit above.
if strategy.position_size > 0
    strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price * (1 - stopLossPerc), limit = strategy.position_avg_price * (1 + takeProfitPerc))
// For short positions: stop-loss above entry price and take-profit below.
if strategy.position_size < 0
    strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price * (1 + stopLossPerc), limit = strategy.position_avg_price * (1 - takeProfitPerc))

//────────────────────────────────────────────────────────────────────────────
// 10. Visualization on the Chart
//────────────────────────────────────────────────────────────────────────────
plot(integrated_signal, color=color.blue, title="Integrated Signal", linewidth=2)
plot(sma_integrated,      color=color.orange, title="SMA Integrated Signal", linewidth=2)
plot(trendMA,           color=color.purple, title="Trend MA (200)", linewidth=1, style=plot.style_line)
plotshape(longSignal,  title="Long Signal",  location=location.belowbar, color=color.green, style=shape.labelup,   text="LONG")
plotshape(shortSignal, title="Short Signal",  location=location.abovebar, color=color.red,   style=shape.labeldown, text="SHORT")