Strategi perdagangan frekuensi tinggi yang menggabungkan Bollinger Bands dan DCA


Tanggal Pembuatan: 2024-03-29 16:20:13 Akhirnya memodifikasi: 2024-03-29 16:20:13
menyalin: 5 Jumlah klik: 828
1
fokus pada
1617
Pengikut

Strategi perdagangan frekuensi tinggi yang menggabungkan Bollinger Bands dan DCA

Ringkasan

Strategi ini disebut “DCA Booster (1 menit) ” dan merupakan strategi perdagangan frekuensi tinggi yang berjalan pada kerangka waktu 1 menit. Strategi ini menggabungkan teknik Brin-band dan DCA (Dollar-Cost Averaging, rata-rata biaya dolar) untuk memanfaatkan pergerakan pasar untuk melakukan pembelian dan penjualan berulang dan mencoba mendapatkan keuntungan.

Prinsip Strategi

  1. Perhitungan Brin Belt: Perhitungan atas dan bawah Brin Belt menggunakan rata-rata bergerak sederhana dan standar deviasi.
  2. Tetapkan parameter DCA: untuk membagi jumlah tetap menjadi beberapa bagian, sebagai jumlah dana untuk setiap gudang yang dibangun.
  3. Kondisi untuk membangun posisi: Bila harga penutupan dua periode berturut-turut di bawah tren bawah Bollinger Bands, mulailah membangun posisi. Tergantung pada apakah harga terus di bawah tren bawah, strategi dapat membangun maksimal 5 posisi.
  4. Kondisi posisi: Keluar semua posisi saat harga naik melalui Bollinger Bands
  5. Peningkatan posisi piramida: Jika harga terus turun, strategi ini akan terus meningkat hingga 5 posisi.
  6. Manajemen Posisi: Strategi mencatat posisi yang dibuat untuk setiap posisi dan melunasi posisi yang sesuai jika kondisi posisi kosong terpenuhi.

Keunggulan Strategis

  1. Kombinasi teknologi Brin Belt dan DCA dapat secara efektif menangkap fluktuasi pasar dan mengurangi biaya pembelian.
  2. Hal ini memungkinkan piramida untuk terus berposisi jika harga terus turun, meningkatkan peluang untuk mendapatkan keuntungan.
  3. Kondisi posisi terdepan sederhana dan jelas, dapat mengunci keuntungan dengan cepat.
  4. Cocok untuk digunakan pada jangka waktu singkat seperti 1 menit, dapat melakukan perdagangan frekuensi tinggi.

Risiko Strategis

  1. Jika pasar bergejolak dan harga cepat menembus Bollinger Bands, maka strategi tersebut bisa saja gagal untuk meluruskan posisi dan mengakibatkan kerugian.
  2. Investasi dalam piramida dapat menyebabkan eksposur yang berlebihan dan meningkatkan risiko jika harga terus turun.
  3. Strategi ini mungkin tidak bekerja dengan baik di pasar yang bergejolak, karena pembelian dan penjualan yang sering dapat menghasilkan biaya transaksi yang lebih tinggi.

Arah optimasi strategi

  1. Stop loss dapat dipertimbangkan untuk ditambahkan dalam kondisi posisi kosong untuk mengontrol kerugian maksimum dalam satu transaksi.
  2. Logika penambahan posisi piramida dapat dioptimalkan, misalnya dengan menyesuaikan jumlah penambahan sesuai dengan tingkat penurunan harga, untuk menghindari eksposur berlebihan.
  3. Dapat dikombinasikan dengan indikator lain, seperti RSI, MACD, dan lain-lain, untuk meningkatkan akurasi masuk dan keluar.
  4. Parameter dapat dioptimalkan, seperti periode Brin dan perkalian diferensial standar, untuk menyesuaikan dengan kondisi pasar yang berbeda.

Meringkaskan

“DCA Booster (1 minute) ” adalah strategi perdagangan frekuensi tinggi yang menggabungkan Bollinger Bands dan DCA untuk menangkap pergerakan pasar dan mencoba untuk mendapatkan keuntungan dengan membangun posisi secara bertahap saat harga berada di bawah Bollinger Bands dan membuka posisi saat harga berada di Bollinger Bands. Strategi ini memungkinkan kenaikan posisi piramida, tetapi juga menghadapi risiko pasar yang sangat berfluktuasi dan terlalu terbuka.

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

//@version=5
strategy("DCA Booster (1 minute)",
  overlay=true )

// Parameters for Bollinger Bands
length = input.int(50, title="BB Length")
mult = input.float(3.0, title="BB Mult")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// Variables for DCA
cantidad_dolares = 50000
orden1 = cantidad_dolares / close
orden2 = orden1 * 1.2
orden3 = orden2 * 1.3
orden4 = orden3 * 1.5
orden5 = orden4 * 1.5

// Variables for tracking purchases
var comprado1 = false
var comprado2 = false
var comprado3 = false
var comprado4 = false
var comprado5 = false

// Buy conditions
condicion_compra1 = close < lower and close[1] < lower[1] and not comprado1
condicion_compra2 = close < lower and close[1] < lower[1] and comprado1 and not comprado2
condicion_compra3 = close < lower and close[1] < lower[1] and comprado2 and not comprado3
condicion_compra4 = close < lower and close[1] < lower[1] and comprado3 and not comprado4
condicion_compra5 = close < lower and close[1] < lower[1] and comprado4 and not comprado5
// Variables de control
var int consecutive_closes_below_lower = 0
var int consecutive_closes_above_upper = 0

// Entry logic
if condicion_compra1 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra1", strategy.long, qty=orden1)
        comprado1 := true
        consecutive_closes_below_lower := 0

if condicion_compra2 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra2", strategy.long, qty=orden2)
        comprado2 := true
        consecutive_closes_below_lower := 0

if condicion_compra3 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra3", strategy.long, qty=orden3)
        comprado3 := true
        consecutive_closes_below_lower := 0

if condicion_compra4 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra4", strategy.long, qty=orden4)
        comprado4 := true
        consecutive_closes_below_lower := 0

if condicion_compra5 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra5", strategy.long, qty=orden5)
        comprado5 := true
        consecutive_closes_below_lower := 0


// Sell conditions
if close > upper  and comprado1 and barstate.isconfirmed
    strategy.close("Compra1")
    comprado1 := false

if close > upper  and comprado2 and barstate.isconfirmed
    strategy.close("Compra2")
    comprado2 := false

if close > upper  and comprado3 and barstate.isconfirmed
    strategy.close("Compra3")
    comprado3 := false

if close > upper and comprado4 and barstate.isconfirmed
    strategy.close("Compra4")
    comprado4 := false

if close > upper and comprado5 and barstate.isconfirmed
    strategy.close("Compra5")
    comprado5 := false