Strategi ini menggabungkan Bollinger Bands, penunjuk RSI dan analisis pelbagai jangka masa untuk menangkap arah trend jangka menengah hingga panjang. Ia mengenal pasti titik pembalikan trend melalui pecah Bollinger Bands digabungkan dengan isyarat overbought / oversold RSI untuk kemasukan berisiko rendah. Sementara itu, jangka masa yang lebih tinggi digunakan untuk menapis pasaran yang berbeza dan mengelakkan terperangkap.
Band Bollinger digunakan untuk menentukan harga. Band tengah adalah Purata Bergerak harga penutupan selama N hari. Band atas dan bawah diletakkan pada jarak satu penyimpangan standard di kedua-dua sisi band tengah. Menjatuhkan di atas band atas menandakan bullishness manakala memecahkan di bawah band bawah menandakan bearishness.
Menggabungkan penunjuk RSI untuk mengenal pasti tahap overbought / oversold. RSI di atas 70 menunjukkan keadaan overbought manakala di bawah 30 menunjukkan keadaan oversold. Penembusan RSI ke atas 70 mengesahkan kelemahan momentum menaik. Penembusan RSI ke bawah 30 mengesahkan kelemahan momentum menurun.
Menggunakan jangka masa yang lebih tinggi untuk menapis penyebaran palsu. Apabila isyarat penyebaran muncul pada jangka masa harian, ia memerlukan pengesahan tambahan dari jangka masa 4 jam atau lebih tinggi untuk mengelakkan terperangkap.
Integrasi pelbagai penunjuk meningkatkan kestabilan strategi dan keuntungan.
RSI termasuk mengurangkan kerugian daripada pecah palsu.
Analisis pelbagai jangka masa dengan berkesan menapis pasaran yang berbeza dan mengelakkan terperangkap.
Penentuan isyarat penembusan yang dioptimumkan (penembusan lebih daripada 3 bar berturut-turut) memastikan kematangan trend yang mencukupi sebelum kemasukan.
Indikator Vortex menentukan arah trend yang baru bermula pada peringkat awal.
Parameter Bollinger Bands yang tidak mencukupi membawa kepada isyarat overbought / oversold yang salah.
Nilai parameter RSI yang munasabah mesti ditentukan secara berasingan untuk produk yang berbeza.
Isyarat pecah mungkin menjadi pecah palsu. Pertimbangkan untuk meluaskan stop loss.
Mengekalkan margin stop loss yang mencukupi, contohnya 3 kali ATR.
Menggunakan algoritma pembelajaran mesin untuk menyesuaikan parameter automatik untuk Bollinger Bands dan RSI.
Mengoptimumkan tahap stop loss berdasarkan metrik turun naik.
Memasukkan modul ukuran kedudukan untuk mengkalibrasi pendedahan berdasarkan keadaan pasaran yang berubah.
Mengehadkan kerugian maksimum setiap perdagangan berdasarkan prinsip pengurusan wang.
Mengkaji kestabilan isyarat merentasi sesi dagangan yang berbeza.
Strategi ini mengkaji secara komprehensif penentuan trend, keadaan overbought / oversold dan pelbagai jangka masa untuk mengawal risiko sambil mencari masa kemasukan yang optimum untuk menangkap trend jangka menengah hingga panjang yang berkualiti tinggi untuk profil ganjaran risiko yang menarik. Penambahbaikan lanjut boleh diterokai melalui pengoptimuman parameter, mekanisme berhenti kerugian dll untuk mencapai prestasi pelaburan yang lebih baik.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Noway0utstorm //@version=5 strategy(title='Vortex0.71.3 + bb 3bar breakout + rsi - close hit upper or lower', shorttitle='truongphuthinh', format=format.price, precision=4,overlay = true) length = input(20, title="Length") mult = input(2.0, title="Multiplier") source = close basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upperBand = basis + dev lowerBand = basis - dev isClosedBar = ta.change(time("15")) var bool closeAboveUpperBand = false var bool closeBelowLowerBand = false // Vortex Indicator Settings period_ = input.int(14, title='Period', minval=2) VMP = math.sum(math.abs(high - low[1]), period_) VMM = math.sum(math.abs(low - high[1]), period_) STR = math.sum(ta.atr(1), period_) VIP = VMP / STR VIM = VMM / STR // lengthrsi = input(14, title="RSI Length") overboughtLevel = input(70, title="Overbought Level") oversoldLevel = input(30, title="Oversold Level") sourcersi = close rsiValue = ta.rsi(sourcersi, lengthrsi) shouldShort = rsiValue > overboughtLevel shouldLong = rsiValue < oversoldLevel if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3]) if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel strategy.entry("Short", strategy.short) closeAboveUpperBand := false // Reset the condition when entering a new Short position if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel strategy.entry("Long", strategy.long) closeBelowLowerBand := false // Reset the condition when entering a new Long position if strategy.position_size > 0 // Check if there is an open Long position closeAboveUpperBand := close > upperBand // Update the condition based on close price if closeAboveUpperBand strategy.close("Long",disable_alert=true) // Close the Long position if close price is above upper band if strategy.position_size < 0 // Check if there is an open Short position closeBelowLowerBand := close < lowerBand // Update the condition based on close price if closeBelowLowerBand strategy.close("Short",disable_alert=true) // Close the Short position if close price is below lower band // Plots plot(basis, color=color.orange, title="Basis") p1 = plot(upperBand, color=color.blue, title="Upper Band") p2 = plot(lowerBand, color=color.blue, title="Lower Band") fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))