Strategi Crypto Bollinger Bands pelbagai jangka masa

Penulis:ChaoZhang, Tarikh: 2024-02-27 14:13:39
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk Bollinger Bands merentasi jangka masa 1 minit, 3 minit, 5 minit dan 15 minit untuk menganalisis pergerakan harga mata wang kripto, untuk mengenal pasti peluang membeli dan menjual. Ia menggunakan harga Bitcoin 5 minit sebagai penanda aras untuk sentimen pasaran cryptocurrency secara keseluruhan. Apabila harga Bitcoin memecahkan di atas jalur atas, pasaran dianggap bullish. Apabila harga memecahkan di bawah jalur bawah, pasaran dianggap bearish.

Logika Strategi

Strategi ini mengira Bollinger Bands secara serentak pada jangka masa 1 minit, 3 minit, 5 minit dan 15 minit. Bollinger Bands terdiri daripada purata bergerak n hari (default 20 hari) dan beberapa penyimpangan standard (default 1.5x) di atas dan di bawahnya. Purata bergerak mewakili harga purata kripto dalam tempoh masa dan penyimpangan standard mengukur volatiliti. Apabila harga mendekati atau memecahkan band atas, ia menunjukkan pasaran terlalu meluas dan volatiliti berkembang, menandakan potensi pembalikan ke bawah. Apabila harga mendekati atau memecahkan band bawah, ia menandakan pasaran sedang berkembang dengan peningkatan volatiliti dan potensi pembalikan ke atas.

Mengambil kesempatan daripada ciri Bollinger Bands ini, strategi ini menilai perkembangan pasaran terkini merentasi jangka masa yang berbeza - 1 minit, 3 minit, 5 minit dan 15 minit. Apabila terdapat penembusan jalur atas atau bawah dalam jangka masa 3 minit atau 5 minit, ditambah tanda pengesahan dalam jangka masa 1 minit dan 15 minit, strategi menentukan isyarat beli atau jual terkini dipicu. Di samping itu, strategi ini juga merujuk kepada harga Bitcoin 5 minit untuk mengukur trend pasaran keseluruhan dan sentimen (bias bullish / bearish) di seluruh pasaran crypto. Berdasarkan faktor-faktor ini, strategi memutuskan sama ada untuk pergi panjang atau pendek.

Selepas memasuki perdagangan, strategi ini juga menetapkan mengambil keuntungan dan syarat berhenti kerugian. Jika harga kemasukan meningkat atau jatuh sebanyak 25%, mengambil keuntungan akan dicetuskan. Jika harga bergerak lebih daripada 25% terhadap arah kemasukan, stop loss akan dicetuskan.

Kelebihan

  1. Strategi ini menggabungkan kedua-dua pandangan pasaran jangka pendek dan jangka menengah - 1 minit dan 5 minit untuk kemas kini terkini, 15 minit untuk trend jangka menengah, mengelakkan ditipu oleh turun naik pasaran sementara.

  2. Strategi ini memantau kemerosotan kumpulan tengah, kumpulan atas dan kumpulan bawah, meminimumkan peluang yang hilang.

  3. Bitcoin berfungsi sebagai penanda aras dan barometer untuk keadaan dan sentimen pasaran secara keseluruhan, meningkatkan ketepatan keputusan.

  4. Mekanisme mengambil keuntungan dan menghentikan kerugian mengawal risiko dengan berkesan.

Risiko

  1. Penembusan Bollinger Band mempunyai beberapa sifat yang tertinggal dan mungkin terlepas masa kemasukan terbaik.

  2. Strategi ini mudah terdedah kepada risiko sistemik di seluruh pasaran seperti kata laluan peristiwa black swan.

  3. Walaupun mengambil keuntungan dan menghentikan kerugian di tempat, kerugian masih boleh melebihi margin berhenti kerugian di bawah peristiwa melampau.

  4. Tetapan parameter yang tidak sesuai seperti tempoh masa, pengganda penyimpangan standard boleh menyebabkan kualiti isyarat yang buruk.

Penyelesaian yang sepadan:

  1. Masukkan lebih banyak penunjuk untuk menentukan masa kemasukan yang optimum.

  2. Meningkatkan penilaian risiko sistemik di peringkat pasaran.

  3. Mengurangkan saiz kedudukan dan margin stop loss untuk setiap perdagangan.

  4. Mengoptimumkan tetapan parameter melalui backtesting.

Peluang Peningkatan

  1. Tambah lebih banyak jangka masa seperti 30 minit atau 60 minit Bollinger Bands.

  2. Pilih parameter Bollinger Bands yang lebih sesuai dengan ciri-ciri setiap crypto.

  3. Masukkan jumlah dagangan untuk pengesahan hasil, kerana jumlah dagangan mengesahkan kebolehpercayaan pergerakan harga.

  4. Menggabungkan penunjuk lain seperti Stoch RSI, MACD untuk meningkatkan ketepatan keputusan.

  5. Bandingkan pergerakan harga dan korelasi antara kripto dan pilih yang mempunyai ruang paling banyak untuk bergerak.

  6. Mengoptimumkan mekanisme mengambil keuntungan dan menghentikan kerugian dengan analisis statistik prestasi sejarah untuk menentukan tetapan optimum.

Kesimpulan

Ini adalah strategi perdagangan mata wang kripto Bollinger Bands berbilang jangka masa. Ia memberi tumpuan kepada perkembangan harga sepanjang jangka pendek dan jangka menengah, memanfaatkan Bollinger Bands untuk mengukur status MULTI bullish / bearish pasaran. Sementara itu, ia menggunakan tahap harga Bitcoin sebagai penanda aras dan rujukan untuk membantu menentukan trend keseluruhan di pasaran cryptocurrency yang lebih luas. Dengan fleksibiliti dalam menggabungkan pelbagai jangka masa, ditambah mekanisme mengambil keuntungan dan menghentikan kerugian yang kukuh, strategi ini dapat memanfaatkan peluang dan mengawal risiko dengan berkesan.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="Crypto BB", title="Multi-Interval Bollinger Band Crypto Strategy", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.5, minval=0.001, maxval=50, title="StdDev")

interval1m = request.security(syminfo.tickerid, '1', src)
interval3m = request.security(syminfo.tickerid, '3', src)
interval5m = request.security(syminfo.tickerid, '5', src)
interval15m = request.security(syminfo.tickerid, '5', src)
btcinterval5m = request.security("BTC_USDT:swap", "5", src)
bitcoinSignal = 'flat'

var entryPrice = 0.000

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

bitcoinBasis = ma(btcinterval5m, length, maType)
bitcoinDev = ta.stdev(btcinterval5m, length)
bitcoinUpper = bitcoinBasis + bitcoinDev
bitcoinLower = bitcoinBasis - bitcoinDev

basis1m = ma(interval1m, length, maType)
basis3m = ma(interval3m, length, maType)
basis5m = ma(interval5m, length, maType)
basis15m = ma(interval5m, length, maType)
dev1m = mult * ta.stdev(interval1m, length)
dev3m = mult * ta.stdev(interval3m, length)
dev5m = mult * ta.stdev(interval5m, length)
upper1m = basis1m + dev1m
lower1m = basis1m - dev1m
upper3m = basis3m + dev3m
lower3m = basis3m - dev3m
upper5m = basis5m + dev5m
lower5m = basis5m - dev5m
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis3m, "Basis 3 minute", color=#2962FF, offset = offset)
p3upper = plot(upper3m, "Upper", color=#2962FF, offset = offset)
p3lower = plot(lower3m, "Lower", color=#2962FF, offset = offset)

//Exit protocols
if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Buy'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((interval1m - entryPrice)/entryPrice) * 30 > .25
        strategy.close('Buy', comment='Take Profit on Buy')
    if ((interval1m - entryPrice)/entryPrice) * 30 < -.25
        strategy.close('Buy', comment='Stop Loss on Buy')

if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Sell'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((entryPrice - interval1m)/entryPrice) * 30 > .25
        strategy.close('Sell', comment='Take Profit on Sell')
    if ((entryPrice - interval1m)/entryPrice) * 30 < -.25
        strategy.close('Sell', comment='Stop Loss on Sell')

//Bitcoin Analysis
if (btcinterval5m < bitcoinUpper and btcinterval5m[1] > bitcoinUpper[1] and btcinterval5m[2] < bitcoinUpper[2] and btcinterval5m[3] < bitcoinUpper[3])
    bitcoinSignal := 'Bear'
if (btcinterval5m > bitcoinUpper and btcinterval5m[1] < bitcoinUpper[1] and btcinterval5m[2] > bitcoinUpper[2] and btcinterval5m[3] > bitcoinUpper[3])
    bitcoinSignal := 'Bull'

//Short protocols
if (interval3m < basis3m and interval3m[1] > basis3m[1] and interval3m[2] < basis3m[2] and interval3m[3] < basis3m[3]) or 
 (interval5m < basis5m and interval5m[1] > basis5m[1] and interval5m[2] < basis5m[2] and interval5m[3] < basis5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell'
   and src < basis1m and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Basis Band Bearish Reversal')
    //strategy.order('Sell', strategy.short, comment = 'Basis band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m < upper3m and interval3m[1] > upper3m[1] and interval3m[2] < upper3m[2] and interval3m[3] < upper3m[3]) or 
 (interval5m < upper5m and interval5m[1] > upper5m[1] and interval5m[2] < upper5m[2] and interval5m[3] < upper5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell' and bitcoinSignal == 'Bear' and src < upper1m  and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Bearish Trend Reversal')
    strategy.order('Sell', strategy.short, comment = 'Upper band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m > basis3m and interval3m[1] < basis3m[1] and interval3m[2] > basis3m[2] and interval3m[3] > basis3m[3]) or 
 (interval5m > basis5m and interval5m[1] < basis5m[1] and interval5m[2] > basis5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > basis1m  and src > basis15m
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Basis Band Bullish Reversal')
    //strategy.order('Buy', strategy.long, comment = 'Basis band fractal rejection', stop = (lower1m + basis1m)/2)

if (interval3m > lower3m and interval3m[1] < lower3m[1] and interval3m[2] > lower3m[2] and interval3m[3] > lower3m[3]) or 
 (interval5m > lower5m and interval5m[1] < lower5m[1] and interval5m[2] > lower5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > lower1m  and src > basis15m and bitcoinSignal == 'Bull' 
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Bullish Trend Reversal')
    strategy.order('Buy', strategy.long, comment = 'Lower band fractal rejection', stop = (lower1m + basis1m)/2)

Lebih lanjut