Menggabungkan penjejakan arah aliran berbilang penunjuk dan strategi amaran kejutan

SMA RSI ADX ATR STOCH
Tarikh penciptaan: 2025-02-18 14:54:47 Akhirnya diubah suai: 2025-02-18 14:54:47
Salin: 0 Bilangan klik: 343
1
fokus pada
1617
Pengikut

Menggabungkan penjejakan arah aliran berbilang penunjuk dan strategi amaran kejutan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan berdasarkan pelbagai petunjuk teknikal, yang menggabungkan kelebihan trend tracking dan indikator goyah. Logik utamanya adalah untuk menilai arah trend melalui penyambungan rata-rata SMA, mengkonfirmasi kekuatan trend menggunakan ADX, kemudian menggunakan RSI rawak untuk mencari titik masuk yang paling baik dalam arah trend, dan menggunakan tracking stop loss untuk melindungi keuntungan.

Prinsip Strategi

Kaedah ini berfungsi seperti berikut:

  1. Penghakiman trend: menggunakan persilangan SMA20 dan SMA200 untuk menentukan arah trend, melintasi garis perlahan pada garis cepat dianggap sebagai trend multihead, sebaliknya sebagai trend kosong
  2. Pengesahan kekuatan trend: ADX lebih besar daripada 20 menunjukkan trend berkembang sepenuhnya, mengelakkan perdagangan dalam pasaran yang menyusun
  3. Waktu masuk: Setelah trend disahkan, cari peluang overbought dan oversold menggunakan RSI rawak, cari peluang overdo apabila RSI di bawah 30 dan cari peluang short apabila RSI di atas 70
  4. Pengurusan kedudukan: menggunakan mekanisme perdagangan terbalik, secara automatik menutup dan membuka posisi terbalik apabila trend berubah
  5. Kawalan risiko: Gunakan tracking stop loss ((40 mata, 5 mata langkah panjang) untuk mengunci keuntungan, dan set 1 K-line reentry delay untuk mengelakkan isyarat palsu

Kelebihan Strategik

  1. Analisis multidimensi: meningkatkan kebolehpercayaan perdagangan dengan menggabungkan garis rata-rata, ADX dan RSI rawak untuk mengesahkan isyarat perdagangan dari pelbagai sudut
  2. Adaptif: Strategi dapat menyesuaikan diri secara automatik dengan keadaan pasaran, mencari peluang perdagangan di pasaran yang sedang tren dan bergolak
  3. Pengurusan risiko yang baik: mekanisme tracking stop loss yang membolehkan keuntungan terus berjalan sambil melindungi keuntungan
  4. Teruskan menyertai pasaran: pastikan anda sentiasa mengikuti pasaran utama melalui mekanisme perdagangan reverse
  5. Kemampuan untuk menyesuaikan parameter: Strategi menyediakan pelbagai parameter yang boleh disesuaikan untuk memudahkan pengoptimuman mengikut keadaan pasaran yang berbeza

Risiko Strategik

  1. Risiko terlalu banyak dagangan: dagangan berulang yang kerap boleh menyebabkan kos bayaran yang terlalu tinggi
  2. Risiko penembusan palsu: Isyarat penembusan palsu yang kerap boleh berlaku ketika pasaran bergolak
  3. Risiko tergelincir: mungkin menghadapi kos tergelincir yang lebih besar dalam kitaran 5 minit
  4. Risiko kelewatan trend: sistem linear itu sendiri mempunyai ketinggalan dan mungkin terlepas beberapa titik perubahan penting
  5. Sensitiviti parameter: Kesan strategi sensitif terhadap tetapan parameter dan memerlukan pengoptimuman berterusan

Arah pengoptimuman strategi

  1. Pengenalan penunjuk lalu lintas: dapat meningkatkan ketepatan penilaian trend dengan menambahkan analisis lalu lintas
  2. Optimumkan masa masuk: pertimbangkan untuk menambah analisis bentuk harga, seperti bentuk grafik, untuk meningkatkan ketepatan masuk
  3. Mekanisme penangguhan yang lebih baik: boleh digabungkan dengan penyesuaian dinamik ATR untuk mengesan jarak penangguhan, menjadikannya lebih fleksibel
  4. Menambah penapisan masa: Tambah penapisan masa perdagangan untuk mengelakkan tempoh kecairan rendah
  5. Membangunkan parameter penyesuaian: Penyelidikan dan pembangunan sistem parameter yang dapat menyesuaikan secara automatik mengikut turun naik pasaran

ringkaskan

Strategi ini membina sistem perdagangan yang komprehensif dengan menggabungkan beberapa petunjuk teknikal klasik. Ia mampu menangkap trend utama dan mencari titik masuk terbaik dalam trend, dengan mekanisme pengurusan risiko yang lengkap. Walaupun terdapat beberapa risiko yang wujud, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza melalui pengoptimuman berterusan dan penyesuaian parameter yang halus. Reka bentuk modular strategi juga menyediakan asas yang baik untuk pengoptimuman selanjutnya, yang dapat terus diperbaiki dan disempurnakan berdasarkan kesan perdagangan sebenar.

Kod sumber strategi
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("XAU/USD 5M SMA + Stochastic RSI + ADX Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// === Входные параметры ===
sma_fast_length = input(20, title="SMA Fast Period")  
sma_slow_length = input(200, title="SMA Slow Period")  
stoch_k_length = input(14, title="Stochastic RSI K Length")
stoch_d_length = input(3, title="Stochastic RSI D Length")
adx_length = input(10, title="ADX Period")  
adx_smoothing = input(10, title="ADX Smoothing Period")
atr_length = input(14, title="ATR Period")

// === Уровни фильтрации ===
adx_min_trend = input(20, title="ADX Minimum Trend Strength")  // Было 25 → уменьшено до 20
stoch_buy_level = input(30, title="Stoch RSI Buy Level")  // Было 20 → увеличено для входов
stoch_sell_level = input(70, title="Stoch RSI Sell Level")  // Было 80 → снижено для входов

// === Трейлинг-стоп ===
use_trailing_stop = input(true, title="Enable Trailing Stop")
trailing_stop_pips = input(40, title="Trailing Stop (Pips)")  // Было 50 → уменьшено для активной торговли
trailing_step_pips = input(5, title="Trailing Step (Pips)")

// === Управление позициями ===
entry_delay = input(1, title="Bars Delay Before Re-Entry")  // Было 2 → уменьшено до 1

// === Расчёт индикаторов ===
sma_fast = ta.sma(close, sma_fast_length)
sma_slow = ta.sma(close, sma_slow_length)
[diPlus, diMinus, adx_value] = ta.dmi(adx_length, adx_smoothing)
atr_value = ta.atr(atr_length)

// === Stochastic RSI ===
stoch_rsi_k = ta.stoch(close, stoch_k_length, stoch_d_length, stoch_d_length)
stoch_rsi_d = ta.sma(stoch_rsi_k, stoch_d_length)

// === Фильтр волатильности (Убран, если мешает входам) ===
// atr_threshold = ta.sma(atr_value, 20)
// volatility_ok = atr_value > atr_threshold  // Комментируем, если ATR слишком строгий

// === Пересечения ===
sma_crossover = ta.crossover(sma_fast, sma_slow)
sma_crossunder = ta.crossunder(sma_fast, sma_slow)
stoch_rsi_crossover = ta.crossover(stoch_rsi_k, stoch_rsi_d)
stoch_rsi_crossunder = ta.crossunder(stoch_rsi_k, stoch_rsi_d)

// === Условия входа ===
longCondition = sma_crossover and adx_value > adx_min_trend and stoch_rsi_crossover and stoch_rsi_k < stoch_buy_level
shortCondition = sma_crossunder and adx_value > adx_min_trend and stoch_rsi_crossunder and stoch_rsi_k > stoch_sell_level

// === Исправленный таймер на повторные входы ===
barsSinceExit = ta.barssince(strategy.position_size == 0)
canReenter = not na(barsSinceExit) and barsSinceExit > entry_delay

// === Переворот позиции (исправлен) ===
if strategy.position_size > 0 and shortCondition and canReenter
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short)

if strategy.position_size < 0 and longCondition and canReenter
    strategy.close("SELL")
    strategy.entry("BUY", strategy.long)

// === Открытие позиций ===
if strategy.position_size == 0 and longCondition
    strategy.entry("BUY", strategy.long)

if strategy.position_size == 0 and shortCondition
    strategy.entry("SELL", strategy.short)

// === Трейлинг-стоп (работает корректно) ===
if use_trailing_stop
    strategy.exit("Exit Long", from_entry="BUY", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)
    strategy.exit("Exit Short", from_entry="SELL", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)

// === Визуализация ===
plot(sma_fast, color=color.blue, title="SMA 20")
plot(sma_slow, color=color.red, title="SMA 200")
hline(stoch_buy_level, title="Stoch RSI Buy Level", color=color.blue)
hline(stoch_sell_level, title="Stoch RSI Sell Level", color=color.purple)
hline(adx_min_trend, title="ADX Min Trend Level", color=color.orange)