Strategi kuantitatif lanjutan berbilang penunjuk, bersilang arah aliran berbilang dimensi

RSI MACD EMA HTF SMA CCI MA
Tarikh penciptaan: 2025-01-17 16:00:03 Akhirnya diubah suai: 2025-01-17 16:00:03
Salin: 3 Bilangan klik: 363
1
fokus pada
1617
Pengikut

Strategi kuantitatif lanjutan berbilang penunjuk, bersilang arah aliran berbilang dimensi

Gambaran keseluruhan

Strategi ini ialah sistem perdagangan komprehensif yang menggabungkan berbilang penunjuk teknikal, termasuk Ichimoku, RSI, MACD, perbezaan HTF dan Purata Pergerakan Eksponen (EMA) silang dan kaedah analisis pelbagai dimensi yang lain. Strategi ini meningkatkan ketepatan urus niaga melalui pengesahan isyarat berbilang, sambil menggunakan maklumat pasaran dari tempoh masa yang berbeza untuk menangkap peluang dagangan yang lebih dipercayai.

Prinsip Strategi

Prinsip teras strategi adalah untuk mengesahkan isyarat dagangan melalui analisis komprehensif penunjuk teknikal berbilang lapisan. Mula-mula, gunakan komponen carta awan Ichimoku Kinko Hyo untuk menentukan arah aliran pasaran keseluruhan, gabungkan penunjuk RSI untuk menentukan keadaan pasaran terlebih beli dan terlebih jual, gunakan penunjuk MACD untuk mengenal pasti perubahan tenaga kinetik arah aliran, dan tangkap. aliran berpotensi melalui perbezaan RSI dan MACD bagi isyarat Pembalikan tempoh tinggi. Selain itu, strategi ini juga memperkenalkan pengesahan silang EMA50 dan EMA100, serta EMA200 sebagai penapis arah aliran utama, sekali gus membina sistem pengesahan transaksi berbilang peringkat.

Kelebihan Strategik

  1. Pengesahan isyarat berbilang dimensi sangat mengurangkan risiko penemuan palsu dan meningkatkan ketepatan transaksi
  2. Meningkatkan keupayaan untuk meramalkan titik perubahan pasaran melalui analisis perbezaan tempoh masa yang tinggi
  3. Ia menggabungkan ciri-ciri penjejakan arah aliran dan perdagangan pembalikan, dan mempunyai kebolehsuaian yang kukuh
  4. Persilangan EMA memberikan pengesahan arah aliran tambahan, meningkatkan ketepatan pemasaan kemasukan
  5. Sistem penunjuk teknikal yang lengkap membolehkan strategi menganalisis status pasaran dalam semua aspek

Risiko Strategik

  1. Pengesahan penunjuk berbilang boleh menyebabkan kehilangan beberapa peluang yang bergerak pantas
  2. Lebih banyak isyarat palsu mungkin dihasilkan dalam pasaran yang tidak menentu
  3. Kerumitan pengoptimuman parameter adalah tinggi, dan overfitting cenderung berlaku
  4. Pengiraan berbilang penunjuk mungkin menyebabkan ketinggalan tertentu
  5. Di bawah keadaan pasaran yang melampau, mekanisme pengesahan berganda mungkin gagal

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme parameter penyesuaian untuk membolehkan strategi melaraskan parameter setiap penunjuk mengikut keadaan pasaran secara dinamik
  2. Penapis kemeruapan ditambah untuk melaraskan parameter strategi dalam persekitaran kemeruapan yang tinggi
  3. Membangunkan mekanisme henti rugi dan henti untung yang lebih bijak untuk meningkatkan kecekapan pengurusan dana
  4. Tambah modul klasifikasi status pasaran, pakai logik dagangan yang berbeza untuk status pasaran yang berbeza
  5. Optimumkan algoritma pengecaman perbezaan tempoh masa yang tinggi untuk meningkatkan ketepatan masa isyarat

ringkaskan

Strategi ini membina sistem perdagangan yang agak lengkap melalui kerjasama yang diselaraskan oleh pelbagai petunjuk teknikal. Kelebihan strategi terletak pada mekanisme pengesahan isyarat berbilang dimensi, tetapi ia juga menghadapi cabaran dalam pengoptimuman parameter dan kebolehsuaian pasaran. Menerusi hala tuju pengoptimuman yang dicadangkan, strategi itu dijangka meningkatkan lagi prestasinya dalam persekitaran pasaran yang berbeza sambil mengekalkan kekukuhannya.

Kod sumber strategi
/*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)