Многомерная интегрированная торговая стратегия на основе Надарая-Уотсона

SMA RSI ATR
Дата создания: 2025-02-20 17:38:44 Последнее изменение: 2025-02-27 17:21:26
Копировать: 0 Количество просмотров: 446
2
Подписаться
319
Подписчики

Многомерная интегрированная торговая стратегия на основе Надарая-Уотсона Многомерная интегрированная торговая стратегия на основе Надарая-Уотсона

Обзор

Стратегия является многомерной торговой системой, основанной на ядерной регрессии Надарайя-Уотсона, которая формирует комплексные сигналы для руководства торговыми решениями путем интеграции информации о рынке в четырех измерениях: техническом, эмоциональном, гиперчувственном и намеренном. Стратегия использует метод весовой оптимизации, обрабатывает сигналы в разных измерениях с нагрузкой, а также сочетает в себе трендовые и динамические фильтры для улучшения качества сигнала. Система также включает в себя полный модуль управления рисками, чтобы защитить безопасность средств с помощью остановок и остановок.

Стратегический принцип

В основе стратегии лежит сглаживание многомерных рыночных данных с помощью метода ядерной регрессии Надарайя-Уотсона. В частности:

  1. Техническое измерение с использованием цены закрытия
  2. Эмоциональное измерение с использованием RSI
  3. Сверхчувствительные измерения с использованием ATR
  4. Цена и отклонение от средней После того, как эти измерения пройдут через выравнивание ядерной регрессии, они будут сбалансированы с помощью заранее установленных весов (технический 0,4, эмоциональный 0,2, сверхчувственный 0,2, намерение 0,2) для формирования окончательного торгового сигнала. Когда интеграционный сигнал пересекается с его движущейся средней, торговая инструкция будет выпущена в сочетании с подтверждением тренда и динамического фильтра.

Стратегические преимущества

  1. Многомерный анализ дает более полный взгляд на рынок, избегая ограничений одного показателя
  2. Ядерная регрессия Надарайя-Уотсона эффективно снижает рыночный шум и обеспечивает более плавный сигнал
  3. Механизм весовой оптимизации позволяет скорректировать значение измерений в зависимости от рыночных особенностей
  4. Добавление фильтров тренда и динамики значительно улучшило качество сигнала
  5. Хорошая система управления рисками обеспечивает безопасность средств

Стратегический риск

  1. Чрезмерная оптимизация параметров может привести к переобучению
  2. Многочисленные условия фильтрации могут пропустить часть сигнала
  3. Высокая сложность вычислений ядерной регрессии может повлиять на производительность в реальном времени
  4. Неправильное распределение весов может ослабить некоторые важные рыночные сигналы Меры по смягчению включают в себя: использование параметров проверки на основе экспериментального тестирования, динамическое изменение условий фильтрации, оптимизацию вычислительной эффективности, регулярную оценку и коррекцию распределения веса.

Направление оптимизации стратегии

  1. Внедрение адаптивной системы весов, при которой весы в разных измерениях будут изменяться в зависимости от динамики рынка
  2. Разработка более интеллектуальных механизмов фильтрации, сбалансирующих качество и количество сигналов
  3. Оптимизация реализации алгоритма Надарайя-Уотсон для повышения эффективности вычислений
  4. Включение модуля идентификации циклов рынка с использованием различных параметров на разных этапах рынка
  5. Расширение системы управления рисками, добавление динамических функций по прекращению убытков и управлению позициями

Подвести итог

Это инновационная стратегия, объединяющая математические методы и торговый интеллект. Благодаря многомерному анализу и передовым математическим инструментам, стратегия способна захватить несколько уровней рынка и предоставить относительно надежные торговые сигналы. Хотя есть некоторые возможности для оптимизации, общая структура стратегии является прочной и имеет практическую ценность.

Исходный код стратегии
/*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")