
Strategi ini digunakan untuk mengidentifikasi sinyal beli dan jual melalui sinergi dari dua indikator teknis, dimana SMA digunakan untuk menentukan arah tren secara keseluruhan, sedangkan RSI digunakan untuk mengkonfirmasi kondisi overbought dan oversold. Strategi ini berkinerja baik di pasar yang sedang tren dalam jangka menengah dan sangat cocok untuk beroperasi pada kerangka waktu 1 jam. Strategi ini berpusat pada sinyal beli ketika SMA berjangka pendek melintasi SMA berjangka panjang ke atas dan RSI lebih tinggi dari level jual; sinyal jual ketika SMA berjangka pendek melintasi SMA berjangka panjang ke bawah dan RSI lebih rendah dari level beli.
Prinsip strategi ini didasarkan pada kerja sama dua indikator teknis inti:
Simple Moving Average (SMA)Strategi ini menggunakan dua siklus SMA yang berbeda, yang secara default ditetapkan sebagai siklus 20 jangka pendek dan siklus 30 jangka panjang. Ketika SMA jangka pendek naik melewati SMA jangka panjang, ini menunjukkan bahwa harga bergerak ke arah yang lebih tinggi, dan pada saat itu sinyal pembelian potensial terbentuk. Sebaliknya, ketika SMA jangka pendek turun melewati SMA jangka panjang, ini menunjukkan bahwa harga bergerak ke arah yang lebih rendah, dan pada saat itu sinyal penjualan potensial terbentuk.
Indeks Relatif Lemah (RSI)Strategi ini menggunakan RSI 14 siklus untuk memastikan apakah pasar berada dalam kondisi overbought atau oversold. RSI di bawah 25 dianggap sebagai kondisi oversold, dan RSI di atas 75 dianggap sebagai kondisi oversold. Indikator RSI berperan sebagai filter dalam strategi ini, memastikan bahwa sinyal beli terjadi ketika RSI telah keluar dari daerah oversold, dan sinyal jual terjadi ketika RSI telah keluar dari daerah oversold.
Logika transaksi adalah sebagai berikut:
Dalam implementasi kode, fungsi ta.crossover dan ta.crossunder digunakan untuk mendeteksi persilangan SMA, yang dikombinasikan dengan kondisi RSI untuk menghasilkan sinyal jual beli akhir. Status transaksi dilacak melalui variabel Boolean inBuyState dan inSellState untuk memastikan bahwa strategi dapat mengelola posisi dengan benar.
Setelah menganalisis kode secara mendalam, strategi ini menunjukkan beberapa keuntungan yang signifikan:
Efek sinergis dari kombinasi indikatorStrategi ini secara cerdik menggabungkan indikator penelusuran tren (SMA) dan indikator momentum (RSI) yang secara efektif mengurangi sinyal palsu. SMA mengkonfirmasi perubahan arah tren, sementara RSI lebih lanjut memverifikasi status dinamis pasar, yang keduanya meningkatkan keandalan sinyal.
Fleksibilitas penghentianStrategi ini memiliki fitur stop loss yang dapat disesuaikan, dengan target profit 2% sebagai default. Lebih penting lagi, pedagang dapat memilih untuk mengaktifkan atau menonaktifkan stop loss, atau bahkan dapat memilih mode stop loss setengah posisi (halfPositionTakeProfit), yang hanya akan menghapus setengah dari posisi mereka saat mencapai harga target, sehingga posisi yang tersisa dapat terus memperoleh potensi keuntungan. Fleksibilitas ini memungkinkan pedagang untuk menyesuaikan strategi mereka sesuai dengan preferensi risiko mereka dan kondisi pasar.
Kustomisasi parameterSemua parameter penting dari strategi dapat disesuaikan dengan variabel input, termasuk siklus SMA jangka pendek dan panjang, siklus RSI, overbought dan oversold, dan persentase stop-loss. Ini memungkinkan strategi untuk beradaptasi dengan berbagai lingkungan pasar dan varietas perdagangan.
Efek visualisasi yang intuitifStrategi ini memetakan garis SMA jangka pendek dan jangka panjang pada grafik dan mengubah warna grafik sesuai dengan kondisi pasar (membeli dengan warna hijau, menjual dengan warna merah), memungkinkan pedagang untuk secara intuitif melacak sinyal strategi dan kondisi pasar.
Struktur kode yang jelas: Kode strategi terorganisir dengan baik, menggunakan variabel untuk melacak kondisi pasar, harga masuk dan status semi-stop, logika jelas dan mudah dipahami dan dipertahankan.
Meskipun strategi ini dirancang dengan baik, masih ada beberapa risiko potensial:
Sinyal palsu di pasar horizontalDalam situasi pasar yang horizontal atau berfluktuasi terbatas, SMA crossover dapat sering terjadi, menyebabkan overtrading dan kerugian beruntun. Dalam lingkungan pasar seperti itu, indikator SMA sering menghasilkan banyak sinyal crossover yang tidak efektif.
Parameter SensitivitasPerforma strategi cukup sensitif terhadap pengaturan parameter SMA dan RSI. Kondisi pasar yang berbeda mungkin memerlukan konfigurasi parameter yang berbeda, dan jika pengaturan parameter tidak tepat, strategi mungkin tidak dapat menangkap titik balik pasar yang sebenarnya.
Keterbatasan sistem sinyal tunggalStrategi ini hanya bergantung pada sinyal yang dihasilkan oleh indikator teknis dan tidak mempertimbangkan faktor penting lainnya seperti struktur pasar, resistance level pendukung atau faktor fundamental. Dalam beberapa kondisi pasar, strategi yang didorong oleh indikator teknis murni mungkin tidak sesuai dengan pergerakan pasar yang sebenarnya.
Potensi masalah dengan pengaturan stopSetelan stop loss persentase tetap mungkin tidak cocok untuk semua situasi pasar. Dalam pasar yang lebih berfluktuasi, stop loss 2% mungkin terlalu kecil, menyebabkan stop loss yang sering dan kehilangan tren besar; dan dalam pasar yang lebih rendah volatilitas, target 2% mungkin terlalu radikal.
Beberapa cara untuk mengurangi risiko ini adalah:
Berdasarkan analisis kode, strategi ini memiliki beberapa kemungkinan optimasi:
Mekanisme penyesuaian parameter dinamisStrategi saat ini menggunakan parameter SMA dan RSI yang tetap. Sebuah arah optimasi yang efektif adalah untuk mencapai penyesuaian dinamis parameter, seperti penyesuaian otomatis siklus SMA atau RSI thresholds berdasarkan volatilitas pasar (ATR).
Filter intensitas tren meningkat: Anda dapat menambahkan indikator kekuatan tren seperti ADX ((rata-rata arah indeks) untuk memfilter sinyal silang SMA. Hanya ketika ADX lebih tinggi dari suatu titik terendah (seperti 25) untuk memastikan tren cukup kuat untuk melakukan sinyal perdagangan yang dihasilkan oleh silang SMA. Ini membantu untuk menghindari sinyal palsu yang dihasilkan dalam tren lemah atau pasar horizontal.
Menambahkan mekanisme stop loss dinamisStrategi saat ini hanya memiliki fungsi stop loss, tanpa mekanisme stop loss. Disarankan untuk menambahkan stop loss dinamis berbasis ATR untuk membatasi kerugian maksimum dalam satu transaksi. Misalnya, stop loss level dapat ditetapkan sebagai harga masuk dikurangi 2 kali nilai ATR, sehingga stop loss distance dapat disesuaikan secara otomatis sesuai dengan volatilitas pasar.
Mengoptimalkan logika stop-lossLogika stop loss setengah posisi saat ini dapat ditingkatkan lebih lanjut, misalnya, setelah mencapai target stop loss pertama, stop loss dari posisi yang tersisa dipindahkan ke harga masuk (stop loss terjamin), atau mengatur beberapa target stop loss, dengan posisi kosong secara batch. Ini dapat melindungi posisi yang sudah menguntungkan sambil memaksimalkan peluang untuk menangkap tren besar.
Tambahkan filter waktu transaksi: Banyak pasar menunjukkan karakteristik yang berbeda pada waktu perdagangan yang berbeda. Anda dapat mempertimbangkan untuk menambahkan filter waktu perdagangan, hanya pada waktu perdagangan berkualitas tinggi tertentu (seperti periode overlay pada waktu perdagangan Eropa dan Amerika) melakukan sinyal perdagangan.
Gagasan inti dari arah optimasi ini adalah untuk membuat strategi lebih adaptif, dapat secara otomatis menyesuaikan perilakunya sesuai dengan kondisi pasar, sehingga meningkatkan stabilitas dan profitabilitas dalam berbagai lingkungan pasar.
Strategi konfirmasi pergerakan lintas RSI adalah sistem perdagangan kuantitatif yang menggabungkan indikator analisis teknis SMA dan RSI untuk menghasilkan sinyal perdagangan dengan mengidentifikasi titik-titik perubahan tren dan mengkonfirmasi kondisi pergerakan. Keunggulan utama dari strategi ini adalah kesederhanaan, kustomisasi, dan mekanisme penghentian yang fleksibel yang membuatnya menjadi alat yang efektif untuk melacak tren jangka menengah.
Meskipun ada risiko seperti sinyal palsu di pasar horizontal dan sensitivitas parameter, stabilitas dan fleksibilitas strategi dapat ditingkatkan secara signifikan dengan memperkenalkan metode seperti penyesuaian parameter dinamis, penyaringan intensitas tren, stop loss dinamis, dan manajemen posisi yang dioptimalkan. Khususnya, integrasi indikator ATR ke dalam penyesuaian parameter dan manajemen risiko dapat membuat strategi lebih sesuai dengan kondisi pasar yang berbeda.
Strategi ini cocok untuk pasar tren jangka menengah dan panjang, dan merupakan titik awal yang sederhana namun memiliki ruang untuk diperluas bagi pedagang yang tertarik untuk memasuki bidang perdagangan kuantitatif. Dengan terus-menerus mengoptimalkan dan menyesuaikan diri, pedagang dapat mengembangkan strategi dasar ini menjadi sistem perdagangan yang unik yang sesuai dengan gaya perdagangan dan preferensi risiko mereka.
/*backtest
start: 2025-03-02 00:00:00
end: 2025-03-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("SMA+RSI Strategy", overlay=true)
// Customizable input settings
smaShortPeriod = input.int(20, title="SMA Short Period", minval=1)
smaLongPeriod = input.int(30, title="SMA Long Period", minval=1)
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(75, title="RSI Overbought Level", minval=1, maxval=100)
rsiOversold = input.int(25, title="RSI Oversold Level", minval=1, maxval=100)
takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1, step=0.1) / 100 // Target profit percentage
enableTakeProfit = input.bool(true, title="Enable Take Profit") // Enable/disable take profit option
halfPositionTakeProfit = input.bool(false, title="Enable Half Position Take Profit") // Option to take profit on half position
// Indicator calculations
smaShort = ta.sma(close, smaShortPeriod)
smaLong = ta.sma(close, smaLongPeriod)
rsi = ta.rsi(close, rsiPeriod)
// Buy and sell signals
buySignal = ta.crossover(smaShort, smaLong) and rsi > rsiOversold
sellSignal = ta.crossunder(smaShort, smaLong) and rsi < rsiOverbought
// Variable to store current market state
var bool inBuyState = false
var bool inSellState = false
// Store entry price
var float entryPrice = na
// Variable to track whether half position take profit has been executed
var bool halfPositionTaken = false
// Update market state based on signals
if (buySignal)
inBuyState := true
inSellState := false
entryPrice := close // Store entry price at buy signal
halfPositionTaken := false // Reset half position take profit state when opening a new trade
if (sellSignal)
inSellState := true
inBuyState := false
halfPositionTaken := false // Reset half position take profit state when closing a trade
// Calculate target take profit level
takeProfitLevel = inBuyState ? entryPrice * (1 + takeProfitPerc) : na
// Execute trades
if (buySignal)
strategy.entry("Buy", strategy.long, comment="Buy") // Comment when opening trade
// Close half position at target if enabled and not yet taken
if (inBuyState and enableTakeProfit and halfPositionTakeProfit and close >= takeProfitLevel and not halfPositionTaken)
strategy.close("Buy", qty_percent=50, comment="partialClose") // Close half position
halfPositionTaken := true // Update state to prevent re-execution
// Close full position at target if half position take profit is disabled
if (inBuyState and enableTakeProfit and not halfPositionTakeProfit and close >= takeProfitLevel)
strategy.close("Buy", comment="Close") // Close full position
// Close position on sell signal
if (sellSignal)
strategy.close("Buy", comment="Close") // Close position on sell signal
// Plot moving averages on chart
plot(smaShort, color=color.blue, title="SMA Short")
plot(smaLong, color=color.red, title="SMA Long")
// Change candle colors based on market state
barcolor(inBuyState ? color.green : inSellState ? color.red : na)