Ide inti dari strategi ini adalah untuk menentukan kisaran harga saat ini dengan menggabungkan indikator RSI dari siklus yang berbeda, dan untuk mengambil tindakan beli atau jual yang sesuai dalam siklus yang lebih kecil ketika ada pecahnya RSI siklus yang lebih besar.
Langkah-langkah utama untuk strategi ini untuk menentukan kisaran harga dan menemukan peluang perdagangan adalah:
Sebagai contoh, ketika RSI harian keluar dari level terendah sebelumnya, kita menilai bahwa saat ini pasar bull. dan ketika RSI harian keluar di bawah level terendah sebelumnya, kita menilai sebagai pasar bear. dalam kedua kasus kita mengambil tindakan panjang dan pendek masing-masing dalam grafik 5 menit.
Dibandingkan dengan strategi tradisional yang hanya berfokus pada satu periode, strategi ini memiliki keuntungan berikut:
Penilaian yang lebih akurat dari nilai harga relatif saat ini Siklus yang lebih besar seperti harian dapat menyaring kebisingan pasar jangka pendek dan menentukan tren dan area nilai secara keseluruhan.
Menggabungkan indikator di berbagai periode meningkatkan keandalan sinyal. Bergantung hanya pada indikator periode tunggal dapat menghasilkan sinyal palsu dengan lebih mudah, sementara sinyal serentak dari beberapa periode lebih dapat diandalkan.
Lebih efektif memanfaatkan peluang jangka pendek. sementara kita hanya perlu menemukan peluang dalam siklus kecil seperti 5 menit untuk mendapatkan keuntungan.
Peningkatan yang lebih kecil. Menggabungkan periode silang membantu menghindari terjebak. Kita bisa keluar dengan cepat ketika indikator siklus besar mulai berbalik.
Risiko utama dari strategi ini terletak pada:
Penilaian yang salah dalam indikator siklus besar. Penentuan area nilai yang tidak efektif dalam RSI harian dll dapat menyebabkan sinyal yang salah. Penyesuaian parameter RSI diperlukan untuk meningkatkan akurasi.
Divergensi antara pergerakan harga siklus kecil dan penentuan siklus besar. Terkadang pergerakan jangka pendek melawan tren gambaran besar. Kita perlu mengatur stop loss yang tepat untuk mengendalikan kerugian.
Manajemen risiko yang tidak tepat. Kerugian yang berlebihan dalam perdagangan tunggal karena ukuran posisi yang buruk dapat menyebabkan pengurangan yang tidak dapat dipulihkan. Aturan ukuran yang wajar harus diterapkan.
Masih banyak ruang untuk meningkatkan strategi ini, terutama dari aspek berikut:
Peraturan parameter periode. Uji lebih banyak kombinasi periode untuk menemukan parameter optimal.
Penyesuaian parameter RSI. Sesuaikan RSI lookback dll parameter untuk meningkatkan keakuratan penilaian.
Tambahkan lebih banyak indikator, seperti MA untuk membantu menilai arah tren.
Memperbaiki mekanisme stop loss, secara dinamis menyesuaikan titik stop loss berdasarkan kondisi penarikan.
Mengoptimalkan aturan ukuran posisi. Mengelola ukuran posisi tertentu untuk setiap perdagangan lebih ilmiah.
Strategi ini mewujudkan arbitrage lintas periode antara dimensi waktu yang berbeda dengan menilai kondisi bullish di RSI lintas periode. Gagasan penilaian lintas periode semacam itu layak dieksploitasi lebih lanjut. Kita dapat terus memperbaikinya melalui penyesuaian parameter, optimasi stop loss, kombinasi indikator untuk membuatnya lebih menguntungkan. Secara keseluruhan, strategi ini memiliki ide yang unik dan potensi besar untuk ditingkatkan.
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5) // otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)") otf = input(defval="180", title="Second Momentum Timeframe") // Function to dectect a new bar is_newbar(res) => t = time(res) change(t) != 0 ? true : false // Check how many bars are in our upper timeframe since_new_bar = barssince(is_newbar(otf)) otf_total_bars = na otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1] //Calculate RSI Values ctf_rsi = rsi(open, otf_period) breakline=input(title="Breaks in lines", defval = true, type=bool) so = request.security(syminfo.tickerid, otf, rsi(open, otf_period)) sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period)) final_otf_so = na final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so final_otf_sc = na final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc barsback = input(11, title='Bars back to check for a swing') // showsig = input(false, title='Show Signal Markers') swing_detection(index)=> swing_high = false swing_low = false start = (index*2) - 1 // -1 so we have an even number of swing_point_high = final_otf_so[index] swing_point_low = final_otf_sc[index] //Swing Highs for i = 0 to start swing_high := true if i < index if final_otf_so[i] > swing_point_high swing_high := false break // Have to do checks before pivot and after seperately because we can get // two highs of the same value in a row. Notice the > and >= difference if i > index if final_otf_so[i] >= swing_point_high swing_high := false break //Swing lows for i = 0 to start swing_low := true if i < index if final_otf_sc[i] < swing_point_low swing_low := false break // Have to do checks before pivot and after seperately because we can get // two lows of the same value in a row. Notice the > and >= difference if i > index if final_otf_sc[i] <= swing_point_low swing_low := false break [swing_high, swing_low] // Check for a swing [swing_high, swing_low] = swing_detection(barsback) long = final_otf_so > final_otf_sc short = final_otf_so < final_otf_sc if swing_low and long strategy.entry("My Long Entry Id", strategy.long) if swing_high and short strategy.entry("My Short Entry Id", strategy.short)