Penulis:ChaoZhang, Tanggal: 2024-01-25 12:43:43
Tag:

img

Gambaran umum

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.

Logika Strategi

Komponen utama dari strategi ini adalah:

  1. Indikator VFI untuk menentukan tren. Ini menggunakan tingkat perubahan logaritma harga dan volume perdagangan khas untuk menyesuaikan harga dan volume secara wajar.

  2. 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.

  3. 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.

  4. 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.

Keuntungan

  1. Penetapan VFI membuat hubungan harga-volume lebih wajar dan menghindari mengikuti harga secara membabi buta.

  2. Kombinasi perbedaan EMA dan VFI membuat penentuan tren lebih dapat diandalkan.

  3. Kombinasi Bollinger Bands dan VFI membuat strategi lebih mudah beradaptasi dengan fluktuasi dua arah di pasar.

Risiko

  1. Indikator harga volume tidak dapat sepenuhnya menghindari risiko pecah palsu.

  2. Perbedaan EMA memiliki beberapa keterlambatan dan tidak dapat bereaksi tepat waktu pada pergeseran jangka pendek.

  3. Parameter Bollinger Band yang tidak tepat dapat menyebabkan overtrading atau menangkap pasar.

Solusi:

  1. Gabungkan beberapa indikator untuk menentukan tren untuk menghindari mengandalkan satu.

  2. Sesuaikan parameter EMA dengan nilai yang tepat.

  3. Uji dampak parameter Bollinger pada strategi dalam kondisi pasar yang berbeda.

Arahan Optimasi

  1. Lanjutkan mengoptimalkan parameter VFI untuk membuatnya lebih sensitif.

  2. Tambahkan penilaian penembusan berdasarkan saluran harga atau indikator Envelope.

  3. Uji pengenalan lebih banyak indikator harga volume seperti OBV, PVT dll.

  4. Memperkenalkan teknik pembelajaran mesin dan AI untuk mewujudkan optimasi parameter dinamis.

Kesimpulan

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")



Lebih banyak