Strategi ini menggabungkan metrik VFI dan Moving Averages yang mengikuti tren dengan indikator pembalikan Bollinger Bands untuk menangkap tren dan pembalikan di pasar secara adaptif.
Komponen utama dari strategi ini adalah:
Indikator VFI untuk menentukan tren. Ini menggunakan tingkat perubahan logaritma harga dan volume perdagangan khas untuk menyesuaikan harga dan volume secara wajar.
Indikator perbedaan EMA untuk menentukan tren. Ini menghitung persentase perbedaan antara EMA 20 hari dan EMA 50 hari untuk menilai arah tren jangka menengah dan panjang.
Bollinger Bands untuk mendeteksi pembalikan. Band tengah adalah SMA 20 hari, dan lebar band adalah 1.5 standar deviasi dari band tengah. sinyal perdagangan dihasilkan ketika harga melanggar band atas atau bawah.
Amplitudo VFI untuk mendeteksi kelelahan. Ketika VFI mendekati batasnya (0, 20), kemungkinan pembalikan tren dianggap lebih tinggi.
Ketika harga pecah di atas Bollinger Band atas dan perbedaan VFI dan EMA menunjukkan tren naik, pergi panjang.
Penetapan VFI membuat hubungan harga-volume lebih wajar dan menghindari mengikuti harga secara membabi buta.
Kombinasi perbedaan EMA dan VFI membuat penentuan tren lebih dapat diandalkan.
Kombinasi Bollinger Bands dan VFI membuat strategi lebih mudah beradaptasi dengan fluktuasi dua arah di pasar.
Indikator harga volume tidak dapat sepenuhnya menghindari risiko pecah palsu.
Perbedaan EMA memiliki beberapa keterlambatan dan tidak dapat bereaksi tepat waktu pada pergeseran jangka pendek.
Parameter Bollinger Band yang tidak tepat dapat menyebabkan overtrading atau menangkap pasar.
Solusi:
Gabungkan beberapa indikator untuk menentukan tren untuk menghindari mengandalkan satu.
Sesuaikan parameter EMA dengan nilai yang tepat.
Uji dampak parameter Bollinger pada strategi dalam kondisi pasar yang berbeda.
Lanjutkan mengoptimalkan parameter VFI untuk membuatnya lebih sensitif.
Tambahkan penilaian penembusan berdasarkan saluran harga atau indikator Envelope.
Uji pengenalan lebih banyak indikator harga volume seperti OBV, PVT dll.
Memperkenalkan teknik pembelajaran mesin dan AI untuk mewujudkan optimasi parameter dinamis.
Strategi ini secara komprehensif mempertimbangkan trend berikut dan deteksi pembalikan dengan VFI, perbedaan EMA dan Bollinger Bands untuk menangkap fluktuasi pasar dua arah. Langkah selanjutnya adalah untuk terus mengoptimalkan parameter, memperkaya metrik penilaian, memperluas penerapan, dan meningkatkan profitabilitas.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © beststockalert //@version=4 strategy(title="Super Bollinger Band Breakout", shorttitle = "Super BB-BO", overlay=true) source = close length = input(130, title="VFI length") coef = input(0.2) vcoef = input(2.5, title="Max. vol. cutoff") signalLength=input(5) // session pre = input( type=input.session, defval="0400-0935") trade_session = input( type=input.session, defval="0945-1700") use_trade_session = true isinsession = use_trade_session ? not na(time('1', trade_session)) : true is_newbar(sess) => t = time("D", sess) not na(t) and (na(t[1]) or t > t[1]) is_session(sess) => not na(time(timeframe.period, sess)) preNew = is_newbar(pre) preSession = is_session(pre) float preLow = na preLow := preSession ? preNew ? low : min(preLow[1], low) : preLow[1] float preHigh = na preHigh := preSession ? preNew ? high : max(preHigh[1], high) : preHigh[1] // vfi 9lazybear ma(x,y) => 0 ? sma(x,y) : x typical=hlc3 inter = log( typical ) - log( typical[1] ) vinter = stdev(inter, 30 ) cutoff = coef * vinter * close vave = sma( volume, length )[1] vmax = vave * vcoef vc = iff(volume < vmax, volume, vmax) //min( volume, vmax ) mf = typical - typical[1] vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) ) vfi = ma(sum( vcp , length )/vave, 3) vfima=ema( vfi, signalLength ) //ema diff ema20 = ema(close,20) ema50 = ema(close,50) diff = (ema20-ema50)*100/ema20 ediff = ema(diff,20) // basis = sma(source, 20) dev = 1.5 * stdev(source, 20) upper = basis + dev lower = basis - dev ema9 = ema(source, 9) if ( ((crossover(source, upper) and diff>ediff and diff>0) or (close>upper and (vfi >0 or vfima>0 or ediff>0.05) and (vfi<14 or vfima<14)) )) strategy.entry("Long", strategy.long) if (crossunder(source, lower) or vfi>19 or vfima>19 or diff<(ediff+0.01) ) strategy.close("Long")