Stratégie de trading intégrée multidimensionnelle basée sur Nadaraya-Watson

SMA RSI ATR
Date de création: 2025-02-20 17:38:44 Dernière modification: 2025-02-27 17:21:26
Copier: 0 Nombre de clics: 446
2
Suivre
319
Abonnés

Stratégie de trading intégrée multidimensionnelle basée sur Nadaraya-Watson Stratégie de trading intégrée multidimensionnelle basée sur Nadaraya-Watson

Aperçu

La stratégie est un système de négociation multidimensionnel basé sur la régression nucléaire de Nadaraya-Watson, qui forme un signal global pour guider les décisions de négociation en intégrant les quatre dimensions de l’information sur le marché: technique, émotionnelle, extrasensorielle et intentionnelle. La stratégie utilise une méthode d’optimisation des poids, traite les signaux de différentes dimensions avec un traitement de poids, et combine des filtres de tendance et de dynamique pour améliorer la qualité du signal.

Principe de stratégie

Le cœur de la stratégie est le traitement en douceur des données de marché multidimensionnelles par la méthode de régression nucléaire de Nadaraya-Watson.

  1. Dimension technique utilisée pour le prix de clôture
  2. La dimension émotionnelle avec l’indicateur RSI
  3. Dimension hypersensitive à l’aide du taux de fluctuation ATR
  4. Dimension intentionnelle de l’utilisation des prix par rapport à l’écart de la moyenne Ces dimensions, après l’aplatissement de la régression nucléaire, sont intégrées par pondération à l’aide de poids préréglés (technique 0.4, émotion 0.2, hypersensitivité 0.2, intention 0.2) pour former le signal de transaction final. Lorsque le signal d’intégration se heurte à sa moyenne mobile, un ordre de transaction est émis après confirmation du filtre de tendance et de dynamique.

Avantages stratégiques

  1. L’analyse multidimensionnelle offre une perspective plus globale du marché et évite les limites d’un seul indicateur
  2. La régression nucléaire de Nadaraya-Watson réduit efficacement le bruit du marché et fournit un signal plus fluide
  3. Le mécanisme d’optimisation des poids permet d’ajuster l’importance des dimensions en fonction des caractéristiques du marché
  4. L’ajout de filtres de tendance et de dynamique améliore considérablement la qualité du signal
  5. Une bonne gestion des risques assure la sécurité des fonds

Risque stratégique

  1. Une optimisation excessive des paramètres peut conduire à un surapprentissage
  2. Les conditions de filtrage multiples peuvent manquer une partie du signal valide
  3. La complexité du calcul de la régression nucléaire est élevée et peut affecter les performances en temps réel.
  4. Une mauvaise répartition des poids pourrait affaiblir certains signaux importants du marché Les mesures d’atténuation comprennent: l’utilisation de paramètres de validation de test hors échantillon, l’adaptation dynamique des conditions de filtrage, l’optimisation de l’efficacité du calcul, l’évaluation périodique et l’adaptation de la répartition des poids.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un système de poids adaptatif pour ajuster les poids de chaque dimension en fonction de la dynamique du marché
  2. Développer des mécanismes de filtrage plus intelligents pour équilibrer la qualité et la quantité des signaux
  3. Optimisation de la mise en œuvre de l’algorithme Nadaraya-Watson pour améliorer l’efficacité du calcul
  4. Ajout d’un module de reconnaissance des cycles de marché avec différents paramètres à différentes étapes du marché
  5. Amélioration du système de gestion des risques et de la fonctionnalité de gestion dynamique des stop-loss et des positions

Résumer

Il s’agit d’une stratégie innovante qui combine les méthodes mathématiques et l’intelligence de la négociation. Grâce à l’analyse multidimensionnelle et à des outils mathématiques avancés, la stratégie est capable de capturer plusieurs niveaux du marché et de fournir des signaux de négociation relativement fiables. Bien qu’il y ait de la place pour l’optimisation, le cadre global de la stratégie est robuste et a une valeur d’application pratique.

Code source de la stratégie
/*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")