Многоиндикаторная, многомерная трендовая кроссоверная расширенная количественная стратегия

RSI MACD EMA HTF SMA CCI MA
Дата создания: 2025-01-17 16:00:03 Последнее изменение: 2025-01-17 16:00:03
Копировать: 3 Количество просмотров: 363
1
Подписаться
1617
Подписчики

Многоиндикаторная, многомерная трендовая кроссоверная расширенная количественная стратегия

Обзор

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

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

Основной принцип стратегии — подтверждение торговых сигналов посредством комплексного анализа многослойных технических индикаторов. Во-первых, используйте компонент облачного графика Ichimoku Kinko Hyo для определения общей тенденции рынка, объедините индикатор RSI для определения состояния перекупленности и перепроданности рынка, используйте индикатор MACD для определения изменений кинетической энергии тренда и зафиксируйте потенциальные тренды через расхождение RSI и MACD высокого временного периода. Сигнал разворота. Кроме того, стратегия также вводит перекрестное подтверждение EMA50 и EMA100, а также EMA200 в качестве основного фильтра тренда, тем самым создавая многоуровневую систему подтверждения транзакций.

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

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

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

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

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

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

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

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

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