Strategi Perdagangan Frekuensi Tinggi Menggabungkan Bollinger Bands dan DCA

Penulis:ChaoZhang, Tarikh: 2024-03-29 16:20:13
Tag:

img

Ringkasan

Strategi yang dinamakan DCA Booster (1 minit) adalah strategi perdagangan frekuensi tinggi yang beroperasi pada jangka masa satu minit. Strategi ini menggabungkan teknik Bollinger Bands dan Dollar-Cost Averaging (DCA) untuk memanfaatkan turun naik pasaran dengan membuat beberapa pembelian dan penjualan, bertujuan untuk menjana keuntungan. Idea utama strategi adalah: apabila harga jatuh di bawah Bollinger Band bawah untuk dua tempoh berturut-turut, ia mula membina kedudukan menggunakan DCA; apabila harga naik di atas Bollinger Band atas, ia menutup semua kedudukan.

Prinsip Strategi

  1. Mengira Bollinger Bands: Gunakan purata bergerak mudah dan penyimpangan standard untuk mengira band atas dan bawah Bollinger Bands.
  2. Tetapkan parameter DCA: Bahagikan jumlah wang tetap kepada beberapa bahagian, masing-masing berfungsi sebagai modal untuk setiap kedudukan.
  3. Syarat kemasukan: Apabila harga penutupan berada di bawah Bollinger Band bawah selama dua tempoh berturut-turut, mulakan membina kedudukan.
  4. Syarat keluar: Apabila harga melintasi Band Bollinger atas, tutup semua kedudukan.
  5. Piramida: Jika harga terus jatuh, strategi akan terus menambah kedudukan, sehingga maksimum 5 kedudukan.
  6. Pengurusan kedudukan: Strategi merakam status kemasukan setiap kedudukan dan menutup kedudukan yang sepadan apabila syarat keluar dipenuhi.

Kelebihan Strategi

  1. Dengan menggabungkan teknik Bollinger Bands dan DCA, strategi ini dapat menangkap turun naik pasaran dengan berkesan dan mengurangkan kos purata pembelian.
  2. Membolehkan piramida membolehkan strategi untuk terus membina kedudukan apabila harga terus jatuh, meningkatkan peluang keuntungan.
  3. Syarat keluar adalah mudah dan mudah, yang membolehkan keuntungan cepat.
  4. Sesuai untuk digunakan pada jangka masa pendek seperti 1 minit, membolehkan perdagangan frekuensi tinggi.

Risiko Strategi

  1. Jika pasaran turun naik secara drastik dan harga dengan cepat menembusi Bollinger Band atas, strategi mungkin tidak dapat menutup kedudukan tepat pada masanya, mengakibatkan kerugian.
  2. Pyramiding boleh membawa kepada pendedahan berlebihan apabila harga terus jatuh, meningkatkan risiko.
  3. Strategi ini mungkin tidak berfungsi dengan baik di pasaran yang bergolak, kerana pembelian dan penjualan yang kerap dapat menghasilkan kos perdagangan yang tinggi.

Arahan Pengoptimuman Strategi

  1. Pertimbangkan untuk menambah stop-loss dalam keadaan keluar untuk mengawal kerugian maksimum setiap perdagangan.
  2. Mengoptimumkan logik piramid, seperti menyesuaikan saiz kedudukan berdasarkan besar penurunan harga, untuk mengelakkan pendedahan berlebihan.
  3. Menggabungkan penunjuk lain, seperti RSI dan MACD, untuk meningkatkan ketepatan entri dan keluar.
  4. Mengoptimumkan parameter, seperti tempoh dan pengganda deviasi standard Bollinger Bands, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

Ringkasan

DCA Booster (1 minit) adalah strategi perdagangan frekuensi tinggi yang menggabungkan Bollinger Bands dan DCA. Ia bertujuan untuk menangkap turun naik pasaran dan menjana keuntungan dengan membina kedudukan apabila harga berada di bawah Bollinger Band bawah dan menutup kedudukan apabila harga melintasi di atas Bollinger Band atas. Strategi ini membolehkan piramid tetapi juga menghadapi risiko seperti turun naik pasaran yang drastik dan keterlibatan berlebihan. Dengan memperkenalkan stop-loss, mengoptimumkan logik piramid, menggabungkan penunjuk lain, dan mengoptimumkan parameter, prestasi strategi ini dapat ditingkatkan lagi.


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



Lebih lanjut