В процессе загрузки ресурсов... загрузка...

Продвинутая многопоказательная многомерная кросс-тенденционная количественная стратегия

Автор:Чао Чжан, Дата: 2025-01-17 16:00:03
Тэги:РСИMACDЕМАHTFSMACCIМ.А.

 Advanced Multi-Indicator Multi-Dimensional Trend Cross Quantitative Strategy

Обзор

Эта стратегия является всеобъемлющей торговой системой, которая сочетает в себе несколько технических индикаторов, включая облако Ичимоку, индекс относительной силы (RSI), дивергенцию конвергенции скользящей средней (MACD), дивергенцию более высокой временной шкалы (HTF) и перекрестки экспоненциальной скользящей средней (EMA).

Принципы стратегии

Основной принцип стратегии заключается в подтверждении торговых сигналов с помощью многоуровневого технического анализа. Она использует компоненты Ichimoku Cloud для определения общих рыночных тенденций, сочетает RSI для оценки условий перекупленности / перепроданности рынка, использует MACD для определения изменений импульса тренда и улавливает потенциальные сигналы об обратном тренде с помощью расхождений HTF RSI и MACD. Кроме того, стратегия включает в себя перекрестки EMA50 и EMA100 для подтверждения, наряду с EMA200 в качестве основного фильтра тренда, создавая многоуровневую систему подтверждения торговли.

Преимущества стратегии

  1. Многомерное подтверждение сигнала значительно снижает риски ложного прорыва и повышает точность торговли
  2. Анализ дивергенции HTF повышает способность прогнозировать переломные моменты рынка
  3. Интеграция характеристик торговли по тренду и реверсии обеспечивает высокую адаптивность
  4. Кроссоверы EMA обеспечивают дополнительное подтверждение тенденции, улучшая точность времени входа
  5. Комплексная система технических показателей позволяет всесторонне анализировать состояние рынка

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

  1. Подтверждение нескольких индикаторов может привести к упущенным возможностям при быстрых рыночных изменениях
  2. Может генерировать множество ложных сигналов на различных рынках
  3. Высокая сложность в оптимизации параметров увеличивает риск перенастройки
  4. Многочисленные индикаторы могут ввести определенную задержку в генерации сигнала
  5. В экстремальных рыночных условиях многократные механизмы подтверждения могут не работать

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

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

Резюме

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


/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Ichimoku + RSI + MACD + HTF Divergence + EMA Cross Strategy", overlay=true)

// تنظیمات تایم‌فریم بالاتر
htf_timeframe = input.timeframe("D", title="تایم‌فریم بالاتر")

// تنظیمات پارامترهای ایچیموکو
tenkan_period = input(9, title="Tenkan Sen Period")
kijun_period = input(26, title="Kijun Sen Period")
senkou_span_b_period = input(52, title="Senkou Span B Period")
displacement = input(26, title="Displacement")

// محاسبه خطوط ایچیموکو
tenkan_sen = (ta.highest(high, tenkan_period) + ta.lowest(low, tenkan_period)) / 2
kijun_sen = (ta.highest(high, kijun_period) + ta.lowest(low, kijun_period)) / 2
senkou_span_a = (tenkan_sen + kijun_sen) / 2
senkou_span_b = (ta.highest(high, senkou_span_b_period) + ta.lowest(low, senkou_span_b_period)) / 2
chikou_span = close  // قیمت بسته شدن فعلی

// رسم خطوط ایچیموکو
plot(tenkan_sen, color=color.blue, title="Tenkan Sen")
plot(kijun_sen, color=color.red, title="Kijun Sen")
plot(senkou_span_a, offset=displacement, color=color.green, title="Senkou Span A")
plot(senkou_span_b, offset=displacement, color=color.orange, title="Senkou Span B")
plot(chikou_span, offset=-displacement, color=color.purple, title="Chikou Span")

// رنگ‌آمیزی ابر ایچیموکو
fill(plot(senkou_span_a, offset=displacement, color=color.green, title="Senkou Span A"), plot(senkou_span_b, offset=displacement, color=color.orange, title="Senkou Span B"), color=senkou_span_a > senkou_span_b ? color.new(color.green, 90) : color.new(color.red, 90), title="Cloud")

// تنظیمات RSI
rsi_length = input(14, title="RSI Length")
rsi_overbought = input(70, title="RSI Overbought Level")
rsi_oversold = input(30, title="RSI Oversold Level")

// محاسبه RSI
rsi_value = ta.rsi(close, rsi_length)

// تنظیمات MACD
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")

// محاسبه MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_smoothing)

// شناسایی واگرایی‌ها در تایم‌فریم بالاتر
f_find_divergence(src, lower, upper) =>
    var int divergence = na  // تعریف نوع متغیر به‌صورت صریح
    if (src >= upper and src[1] < upper)
        divergence := 1  // واگرایی نزولی
    else if (src <= lower and src[1] > lower)
        divergence := -1  // واگرایی صعودی
    divergence

// محاسبه RSI و MACD در تایم‌فریم بالاتر
htf_rsi_value = request.security(syminfo.tickerid, htf_timeframe, rsi_value)
htf_macd_line = request.security(syminfo.tickerid, htf_timeframe, macd_line)

// شناسایی واگرایی‌ها در تایم‌فریم بالاتر
htf_rsi_divergence = f_find_divergence(htf_rsi_value, rsi_oversold, rsi_overbought)
htf_macd_divergence = f_find_divergence(htf_macd_line, 0, 0)

// فیلتر روند با EMA 200
ema_200 = ta.ema(close, 200)

// اضافه کردن EMA 50 و 100
ema_50 = ta.ema(close, 50)
ema_100 = ta.ema(close, 100)

// کراس‌های EMA
ema_cross_up = ta.crossover(ema_50, ema_100)  // کراس صعودی EMA 50 و 100
ema_cross_down = ta.crossunder(ema_50, ema_100)  // کراس نزولی EMA 50 و 100

// شرایط ورود و خروج
long_condition = (close > senkou_span_a and close > senkou_span_b) and  // قیمت بالای ابر
                 (rsi_value > 50) and  // RSI بالای 50
                 (macd_line > signal_line) and  // MACD خط سیگنال را قطع کرده
                 (htf_rsi_divergence == -1 or htf_macd_divergence == -1) and  // واگرایی صعودی در تایم‌فریم بالاتر
                 (close > ema_200) and  // قیمت بالای EMA 200
                 (ema_cross_up)  // کراس صعودی EMA 50 و 100

short_condition = (close < senkou_span_a and close < senkou_span_b) and  // قیمت زیر ابر
                  (rsi_value < 50) and  // RSI زیر 50
                  (macd_line < signal_line) and  // MACD خط سیگنال را قطع کرده
                  (htf_rsi_divergence == 1 or htf_macd_divergence == 1) and  // واگرایی نزولی در تایم‌فریم بالاتر
                  (close < ema_200) and  // قیمت زیر EMA 200
                  (ema_cross_down)  // کراس نزولی EMA 50 و 100

// نمایش نقاط ورود در چارت
plotshape(series=long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// اجرای استراتژی
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

Связанные

Больше