Estratégia de negociação integrada multidimensional baseada em Nadaraya-Watson

SMA RSI ATR
Data de criação: 2025-02-20 17:38:44 última modificação: 2025-02-27 17:21:26
cópia: 0 Cliques: 446
2
focar em
319
Seguidores

Estratégia de negociação integrada multidimensional baseada em Nadaraya-Watson Estratégia de negociação integrada multidimensional baseada em Nadaraya-Watson

Visão geral

A estratégia é um sistema de negociação multidimensional baseado na regressão nuclear de Nadaraya-Watson, formando um sinal integrado para orientar a decisão de negociação por meio da integração de informações de mercado nas quatro dimensões da técnica, emoção, exagero e intenção. A estratégia usa um método de otimização de peso, processando sinais de diferentes dimensões e combinando filtros de tendência e dinâmica para melhorar a qualidade do sinal.

Princípio da estratégia

O núcleo da estratégia é o tratamento suave de dados de mercado em várias dimensões através do método de regressão nuclear de Nadaraya-Watson.

  1. Dimensão técnica do uso do preço de liquidação
  2. Dimensões emocionais usando o indicador RSI
  3. Dimensões ultra-sensoriais usando oscilação ATR
  4. Preço de uso de intenção dimensional e desvio da linha média Estas dimensões passam pela suavização da regressão nuclear e são integradas por meio de uma pesagem predefinida: ((Tecnologia 0.4, Emoção 0.2, Supersentimento 0.2, Intenção 0.2) para formar o sinal de negociação final. Quando o sinal de integração cruza com sua média móvel, uma instrução de negociação é emitida após a confirmação do filtro de tendência e dinamismo.

Vantagens estratégicas

  1. A análise multidimensional oferece uma visão mais abrangente do mercado, evitando as limitações de um único indicador
  2. A regressão nuclear de Nadaraya-Watson reduz efetivamente o ruído do mercado e fornece um sinal mais suave
  3. O mecanismo de otimização de peso permite ajustar a importância das dimensões de acordo com as características do mercado
  4. A adição de filtros de tendência e de força melhorou significativamente a qualidade do sinal
  5. Um bom sistema de gestão de riscos garante a segurança dos fundos

Risco estratégico

  1. A otimização excessiva dos parâmetros pode levar ao overfitting
  2. Condições de filtragem múltipla podem ter perdido parte do sinal válido
  3. A complexidade da computação de regressão nuclear é alta e pode afetar a performance em tempo real
  4. A má distribuição de pesos pode enfraquecer alguns sinais importantes do mercado As medidas de mitigação incluem: uso de parâmetros de validação de testes fora da amostra, ajuste dinâmico das condições de filtragem, otimização da eficiência computacional, avaliação periódica e ajuste da distribuição de peso.

Direção de otimização da estratégia

  1. Introdução de um sistema de pesos adaptativos para ajustar os pesos em todas as dimensões de acordo com a dinâmica do mercado
  2. Desenvolver mecanismos de filtragem mais inteligentes para equilibrar a qualidade e a quantidade de sinais
  3. Otimizar a implementação do algoritmo Nadaraya-Watson para aumentar a eficiência da computação
  4. Adição do módulo de reconhecimento de ciclo de mercado, com diferentes configurações de parâmetros em diferentes fases do mercado
  5. Ampliação do sistema de gestão de risco, adição de stop loss dinâmico e função de gestão de posições

Resumir

Trata-se de uma estratégia inovadora que combina métodos matemáticos com inteligência de negociação. Através de análise multidimensional e ferramentas matemáticas avançadas, a estratégia é capaz de capturar vários níveis do mercado, fornecendo sinais de negociação relativamente confiáveis. Embora haja algum espaço para otimização, a estrutura geral da estratégia é robusta e tem valor de aplicação prática.

Código-fonte da estratégia
/*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")