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

img

Ringkasan

Strategi ini menggabungkan metrik trend-mengikut VFI dan Moving Averages dengan penunjuk pembalikan Bollinger Bands untuk menangkap trend dan pembalikan dalam pasaran secara adaptif.

Logika Strategi

Komponen utama strategi ini ialah:

  1. Penunjuk perbezaan EMA untuk menentukan trend. Ia mengira perbezaan peratusan antara EMA 20 hari dan EMA 50 hari untuk menilai arah trend jangka menengah dan panjang.

  2. Bollinger Band untuk mengesan pembalikan. Band tengah adalah SMA 20 hari, dan lebar band adalah 1.5 penyimpangan standard dari band tengah. Isyarat perdagangan dihasilkan apabila harga memecahkan band atas atau bawah.

  3. Amplitud VFI untuk mengesan keletihan. Apabila VFI mendekati hadnya (0, 20), kebarangkalian pembalikan trend dianggap lebih tinggi.

Apabila harga pecah di atas Bollinger Band atas dan perbezaan VFI dan EMA menunjukkan trend menaik, pergi panjang. Apabila harga pecah di bawah band bawah atau VFI mencapai ambang, tutup kedudukan.

Kelebihan

  1. Pengenalan VFI menjadikan hubungan harga-volume lebih munasabah dan mengelakkan mengikuti harga secara buta.

  2. Gabungan perbezaan EMA dan VFI menjadikan penentuan trend lebih dipercayai.

  3. Gabungan Bollinger Bands dan VFI menjadikan strategi lebih mudah disesuaikan dengan turun naik dua hala di pasaran.

Risiko

  1. Penunjuk harga jumlah tidak dapat sepenuhnya mengelakkan risiko pecah palsu.

  2. Parameter Bollinger Bands yang tidak betul boleh membawa kepada perdagangan berlebihan atau menangkap pasaran.

Penyelesaian:

  1. Gabungkan lebih banyak penunjuk untuk menentukan trend untuk mengelakkan bergantung pada satu sahaja.

  2. Sesuaikan parameter EMA kepada nilai yang betul.

  3. Uji kesan parameter Bollinger pada strategi dalam keadaan pasaran yang berbeza.

Arahan pengoptimuman

  1. Teruskan mengoptimumkan parameter VFI untuk menjadikannya lebih sensitif.

  2. Tambah pertimbangan pecah berdasarkan saluran harga atau Envelope penunjuk.

  3. Uji pengenalan lebih banyak penunjuk harga jumlah seperti OBV, PVT dll.

  4. Memperkenalkan teknik pembelajaran mesin dan AI untuk merealisasikan pengoptimuman parameter dinamik.

Kesimpulan

Strategi ini secara komprehensif mempertimbangkan trend berikut dan pengesanan pembalikan dengan VFI, perbezaan EMA dan Bollinger Bands untuk menangkap turun naik pasaran dua hala. Langkah seterusnya adalah untuk terus mengoptimumkan parameter, memperkaya metrik penilaian, memperluaskan penerapan, dan meningkatkan keuntungan.


/*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 lanjut