
Strategi ini didasarkan pada operasi grafik siklus waktu 30 menit, menggunakan indeks relatif kuat (RSI) sebagai indikator teknis inti, dan ketat membatasi perdagangan dalam waktu perdagangan normal Amerika Serikat (08:30-15:00, Senin sampai Jumat). Ketika RSI naik melewati batas jual, sistem secara otomatis masuk ke posisi multiples; Ketika RSI turun melewati batas beli, sistem secara otomatis masuk ke posisi kosong.
Prinsip-prinsip inti dari strategi ini didasarkan pada karakteristik dinamis dan fluktuasi indeks relatif kuat (RSI) dan mekanisme penyaringan periode perdagangan yang ketat:
Sinyal RSI dihasilkanStrategi: Menggunakan indikator RSI standar, dengan periode default 14, Anda dapat menyesuaikan overbought (70%) dan oversold (<30%) ambang batas. Dengan memantau RSI dan persimpangan dari ambang batas ini, Anda dapat menghasilkan sinyal masuk.ta.crossover(vrsi, overSold)Ini digunakan untuk mendeteksi RSI naik melewati batas oversold dan memicu entry multihead.ta.crossunder(vrsi, overBought)Digunakan untuk mendeteksi RSI turun melewati batas beli dan memicu head start.
Sistem penyaringan waktuStrategi: Strategi ini mengimplementasikan mekanisme kontrol waktu perdagangan yang tepat, hanya melakukan perdagangan selama waktu perdagangan normal AS (08:30-15:00, waktu sentral, Senin-Jumat). Hal ini dilakukan melalui kombinasi kondisi berikut:
weekdayFilter = dayofweek >= dayofweek.monday and dayofweek <= dayofweek.fridayMekanisme penutupan wajibUntuk menghindari risiko overnight, strategi ini memaksa semua posisi di posisi kosong pada pukul 15:00 setiap hari perdagangan. Kode ini memicu perintah kosong dengan memeriksa apakah waktu saat ini telah mencapai atau melebihi waktu tutup:strategy.close_all(comment="Close All by 15:00 CT")。
Bantuan visualStrategi memberikan pilihan warna latar belakang, menampilkan latar belakang hijau ketika memegang posisi multihead, dan latar belakang merah ketika memegang posisi kosong, meningkatkan persepsi intuitif dari status perdagangan.
Analisis kode strategi ini dapat disimpulkan sebagai keuntungan yang signifikan:
Fokus pada perdagangan intradayDengan membatasi waktu perdagangan dan mekanisme penutupan yang wajib, strategi ini sepenuhnya menghindari risiko malam hari, mengurangi risiko celah dan risiko fluktuasi yang mungkin dihadapi oleh pemegang posisi malam hari.
Beradaptasi dengan Perkembangan PasarRSI, sebagai indikator reversal, dapat secara efektif menangkap peluang reversal harga dalam keadaan pasar overbought dan oversold, sangat cocok untuk menangkap fluktuasi harga jangka pendek dalam perdagangan intraday.
Parameter yang dapat disesuaikanStrategi ini menyediakan beberapa parameter yang dapat disesuaikan, termasuk panjang siklus RSI, overbought dan oversold thresholds, yang memungkinkan pedagang untuk melakukan penyesuaian yang optimal sesuai dengan berbagai kondisi pasar dan preferensi risiko pribadi.
Umpan balik visual yang jelas: Fitur background coloring memberikan tampilan posisi yang intuitif, memungkinkan trader untuk melihat langsung posisi mereka saat ini.
Kode sederhana dan efisienStrategi implementasi: logika yang jelas, struktur kode yang sederhana, beban komputasi yang rendah, cocok untuk eksekusi real-time, tidak menyebabkan keterlambatan sistem atau masalah kinerja.
Performa stabilBerdasarkan data retrospektif dari kerangka waktu 30 menit kontrak NQ Juni 2025 yang diberikan, strategi tersebut menunjukkan faktor keuntungan yang tinggi (,61) dan tingkat kemenangan yang dapat diterima (<57,1%), dengan kontrol penarikan maksimum dalam kisaran yang wajar (,22%).
Meskipun ada banyak keuntungan dari strategi ini, ada risiko potensial sebagai berikut:
Frekuensi sinyal terbatasSinyal silang RSI mungkin relatif jarang terjadi pada waktu perdagangan dalam sehari, terutama jika tren pasar jelas, yang dapat menyebabkan kekurangan peluang perdagangan yang mempengaruhi pendapatan keseluruhan. Solusi: Anda dapat mempertimbangkan untuk menambahkan indikator tambahan atau menyesuaikan parameter RSI untuk meningkatkan frekuensi sinyal secara moderat.
Risiko Penembusan PalsuRSI dapat menghasilkan sinyal false breakout, terutama ketika pasar berfluktuasi secara dramatis tetapi tidak memiliki arah yang jelas. Solusi: Anda dapat menambahkan indikator konfirmasi atau mengatur kondisi penyaringan tambahan, seperti konfirmasi volume atau penyaringan arah tren.
Pengaturan zona waktu sensitifStrategi: Tergantung pada pengaturan zona waktu yang benar, konfigurasi zona waktu yang salah dapat menyebabkan kegagalan fungsi penyaringan periode perdagangan. Solusi: Periksa dan verifikasi pengaturan zona waktu dengan hati-hati sebelum perdagangan langsung untuk memastikan bahwa itu benar-benar sesuai dengan waktu perdagangan di pasar target.
Kurangnya pengendalian kerugianStrategi saat ini tidak memiliki fitur stop loss dinamis, dan dalam kondisi pasar yang ekstrim, kemungkinan kerugian yang lebih besar. Solusi: implementasi mekanisme stop loss berdasarkan volatilitas atau poin tetap, membatasi kerugian maksimum dalam satu transaksi.
Bergantung pada waktu penutupan tetapSolusi: Anda dapat mempertimbangkan untuk menerapkan strategi penutupan yang lebih fleksibel, seperti memutuskan apakah posisi kosong berdasarkan status tren akhir.
Berdasarkan analisis mendalam dari kode kebijakan, berikut adalah beberapa arah optimasi yang mungkin:
RSI Dinamis: Mengubah ambang batas overbought dan oversold yang tetap menjadi ambang batas yang disesuaikan secara dinamis berdasarkan volatilitas historis atau ATR (Average True Range) untuk menyesuaikan karakteristik volatilitas dalam lingkungan pasar yang berbeda. Dengan demikian, ambang batas yang lebih luas dapat digunakan di pasar yang berfluktuasi tinggi dan ambang batas yang lebih sempit di pasar yang berfluktuasi rendah, meningkatkan kualitas sinyal.
Tambahkan filter trenMenggunakan indikator tren (seperti Moving Average, MACD atau ADX) sebagai filter arah, hanya membuka posisi di arah tren utama, menghindari perdagangan yang sering terjadi di pasar konsolidasi, mengurangi sinyal palsu.
Implementasi sebagian dari logika posisi kosongBerbeda dengan mekanisme penutupan total saat ini, strategi penutupan batch dapat diterapkan, seperti penutupan sebagian posisi saat mencapai target keuntungan tertentu, mempertahankan sebagian posisi untuk menangkap tren yang lebih besar.
Menambahkan posisi penyesuaian volatilitas: Berdasarkan volatilitas pasar (misalnya ATR) ukuran posisi yang disesuaikan secara dinamis, meningkatkan posisi di pasar dengan volatilitas rendah, mengurangi posisi di pasar dengan volatilitas tinggi, mengoptimalkan rasio pengembalian risiko.
Konfirmasi Transaksi Terpadu: Pada dasar pembuatan sinyal RSI, menambah kondisi konfirmasi volume transaksi dan hanya melakukan transaksi jika volume transaksi mendukung, meningkatkan keandalan sinyal.
Implementasi mekanisme smart stop lossIntroduksi mekanisme stop loss cerdas yang didasarkan pada level resistensi pendukung atau rentang fluktuasi jangka pendek, menggantikan posisi timeout sederhana, untuk mengendalikan risiko dengan lebih efektif.
Strategi dinamis lintas indeks yang relatif kuat pada saat perdagangan adalah sistem perdagangan intraday yang dirancang dengan baik yang memungkinkan logika perdagangan yang efisien untuk futures indeks saham dengan menggabungkan indikator teknis RSI dan penyaringan waktu perdagangan yang ketat. Keunggulan inti dari strategi ini adalah menghindari risiko overnight, menangkap peluang overbought dan oversold intraday, dan memberikan umpan balik visual yang jelas. Meskipun ada risiko potensial seperti frekuensi sinyal yang terbatas dan kurangnya stop loss dinamis, dengan menerapkan langkah-langkah seperti penghematan RSI yang dinamis, peningkatan penyaringan tren, dan pengoptimalan pengkonfirmasi kuantitatif dari integrator, dapat secara signifikan meningkatkan stabilitas dan profitabilitas strategi. Strategi ini sangat cocok untuk pedagang yang tertarik pada perdagangan intraday dan mencari untuk menghindari risiko overnight sambil menangkap peluang pergerakan harga jangka pendek.
/*backtest
start: 2024-05-27 00:00:00
end: 2024-12-22 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Futures Trading Hours RSI Strategy", overlay=true)
// ——— INPUTS ——————————————————————————————
length = input(14, "RSI Length")
overSold = input(30, "RSI Oversold Level")
overBought = input(70, "RSI Overbought Level")
price = close
vrsi = ta.rsi(price, length)
// ——— TIME FILTER (CENTRAL TIME) ——————————————————
startHour = 8
startMinute = 30
endHour = 15
endMinute = 0
// Offset in hours from UTC to CST (not accounting for DST)
var timezoneOffset = 0
adjustedTime = time + (timezoneOffset * 60 * 60 * 1000)
adjustedHour = hour(adjustedTime)
adjustedMinute = minute(adjustedTime)
// Only trade Monday (1) through Friday (5) in the chart’s default time zone.
weekdayFilter = dayofweek >= dayofweek.monday and dayofweek <= dayofweek.friday
// Determine if the current bar is within the session (08:30–15:00 CT)
inSession = (adjustedHour > startHour or (adjustedHour == startHour and adjustedMinute >= startMinute)) and (adjustedHour < endHour or (adjustedHour == endHour and adjustedMinute < endMinute))
// ——— SIGNALS ————————————————————————————————
co = ta.crossover(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)
// ——— ENTRY LOGIC ————————————————————————————
if not na(vrsi) and inSession and weekdayFilter
if co
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if cu
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
// ——— EXIT ALL ORDERS AT/AFTER 15:00 CT ——————————————————
// Closes any open positions once the clock hits 15:00 CT or later on weekdays
if weekdayFilter and (adjustedHour > endHour or (adjustedHour == endHour and adjustedMinute >= endMinute))
strategy.close_all(comment="Close All by 15:00 CT")
// ——— (Optional) Plot ————————————————————————————
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)
// ——— BACKGROUND SHADING WHEN POSITION IS OPEN ——————————————————
longOpen = strategy.position_size > 0
shortOpen = strategy.position_size < 0
bgcolor(longOpen ? color.new(color.green, 90) : na, title="Long Position Shading")
bgcolor(shortOpen ? color.new(color.red, 90) : na, title="Short Position Shading")