Multi-frame timeframe Bollinger Bands Strategi Crypto

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

img

Gambaran umum

Strategi ini menggunakan indikator Bollinger Bands dalam jangka waktu 1 menit, 3 menit, 5 menit dan 15 menit untuk menganalisis pergerakan harga mata uang kripto, untuk mengidentifikasi peluang pembelian dan penjualan. Strategi ini menggunakan harga 5 menit Bitcoin sebagai patokan untuk sentimen pasar cryptocurrency secara keseluruhan. Ketika harga Bitcoin menembus band atas, pasar dianggap bullish. Ketika harga menembus band bawah, pasar dianggap bearish. Strategi ini mencari perputaran band atas atau bawah di berbagai crypto dan jangka waktu. Pola perputaran ini biasanya menandakan pergeseran sentimen pasar dan tren, sehingga memberikan sinyal masuk dan keluar.

Logika Strategi

Strategi ini menghitung Bollinger Bands secara bersamaan pada kerangka waktu 1 menit, 3 menit, 5 menit dan 15 menit. Bollinger Bands terdiri dari rata-rata bergerak n hari (default 20 hari) dan sejumlah standar deviasi (default 1.5x) di atas dan di bawahnya. Rata-rata bergerak mewakili harga rata-rata kripto selama periode waktu dan standar deviasi mengukur volatilitas. Ketika harga mendekati atau melanggar band atas, itu menunjukkan pasar terlalu meluas dan volatilitas berkembang, menandakan potensi pembalikan ke bawah. Ketika harga mendekati atau melanggar band bawah, itu menandakan pasar sedang oversold dengan meningkatnya volatilitas dan potensi pembalikan ke atas.

Dengan memanfaatkan fitur Bollinger Bands ini, strategi ini menilai perkembangan pasar terbaru di horizon waktu yang berbeda - 1 menit, 3 menit, 5 menit dan 15 menit. Ketika ada terobosan band atas atau bawah dalam kerangka waktu 3 menit atau 5 menit, ditambah tanda konfirmasi dalam kerangka waktu 1 menit dan 15 menit, strategi menentukan sinyal beli atau jual terbaru dipicu. Selain itu, strategi ini juga mengacu pada harga 5 menit Bitcoin untuk mengukur tren pasar keseluruhan dan sentimen (bias bullish / bearish) di seluruh pasar crypto. Berdasarkan faktor-faktor ini, strategi memutuskan apakah akan pergi panjang atau pendek.

Setelah memasuki perdagangan, strategi juga menetapkan kondisi profit taking dan stop loss. Jika harga masuk naik atau turun sebesar 25%, take profit akan dipicu. Jika harga bergerak lebih dari 25% melawan arah masuk, stop loss akan dipicu.

Keuntungan

  1. Strategi ini menggabungkan pandangan pasar jangka pendek dan jangka menengah - 1 menit dan 5 menit untuk pembaruan terbaru, 15 menit untuk tren jangka menengah, menghindari tertipu oleh fluktuasi pasar sementara.

  2. Strategi ini memantau keluar dari band tengah, band atas dan band bawah, meminimalkan kesempatan yang hilang.

  3. Bitcoin berfungsi sebagai patokan dan barometer untuk kondisi pasar dan sentimen secara keseluruhan, meningkatkan akurasi keputusan.

  4. Mekanisme mengambil keuntungan dan menghentikan kerugian secara efektif mengendalikan risiko.

Risiko

  1. Breakout Bollinger Band memiliki beberapa atribut yang tertinggal dan mungkin melewatkan waktu masuk terbaik.

  2. Strategi ini rentan terhadap risiko sistemik di seluruh pasar seperti kata sandi Black Swan Event.

  3. Meskipun mengambil keuntungan dan stop loss di tempat, kerugian masih dapat melebihi margin stop loss di bawah peristiwa ekstrem.

  4. Pengaturan parameter yang tidak tepat seperti periode waktu, pengganda deviasi standar dapat menyebabkan kualitas sinyal yang buruk.

Solusi yang sesuai:

  1. Masukkan lebih banyak indikator untuk menentukan waktu masuk yang optimal.

  2. Meningkatkan penilaian risiko sistemik di tingkat pasar.

  3. Mengurangi ukuran posisi dan margin stop loss untuk setiap perdagangan.

  4. Mengoptimalkan pengaturan parameter melalui backtesting.

Peluang Peningkatan

  1. Tambahkan lebih banyak kerangka waktu seperti 30 menit atau 60 menit Bollinger Bands.

  2. Pilih parameter Bollinger Bands yang lebih sesuai dengan karakteristik masing-masing crypto.

  3. Masukkan volume perdagangan untuk verifikasi hasil, karena volume perdagangan memvalidasi keandalan pergerakan harga.

  4. Menggabungkan indikator lain seperti Stoch RSI, MACD untuk meningkatkan akurasi keputusan. indikator ini dapat secara signifikan meningkatkan menilai pergerakan pasar yang sebenarnya.

  5. Bandingkan pergerakan harga dan korelasi antara kripto dan pilih yang memiliki ruang paling banyak untuk bermanuver.

  6. Mengoptimalkan mekanisme mengambil keuntungan dan menghentikan kerugian dengan analisis statistik kinerja historis untuk menentukan pengaturan yang optimal.

Kesimpulan

Ini adalah strategi perdagangan cryptocurrency Bollinger Bands multi-frame. Strategi ini berfokus pada perkembangan harga di jangka pendek dan jangka menengah, memanfaatkan Bollinger Bands untuk mengukur status bullish / bearish MULTI pasar. Sementara itu, menggunakan tingkat harga Bitcoin sebagai patokan dan referensi untuk membantu menentukan tren keseluruhan di pasar cryptocurrency yang lebih luas. Dengan fleksibilitasnya dalam menggabungkan beberapa jangka waktu, ditambah mekanisme pengambilan keuntungan dan stop loss yang kuat, strategi ini dapat secara efektif memanfaatkan peluang dan mengendalikan risiko.


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