Strategi Perdagangan Grid Bollinger Adaptive

BB SMA GRID stdev
Tarikh penciptaan: 2025-02-21 11:52:10 Akhirnya diubah suai: 2025-02-27 17:04:20
Salin: 3 Bilangan klik: 691
2
fokus pada
319
Pengikut

Strategi Perdagangan Grid Bollinger Adaptive Strategi Perdagangan Grid Bollinger Adaptive

Gambaran keseluruhan

Ini adalah strategi perdagangan grid tinggi berdasarkan indikator Brin Belt. Strategi ini menentukan kedudukan grid melalui pergerakan atas, bawah dan tengah jalur Brin Belt, dan menyesuaikan jarak grid secara automatik mengikut turun naik pasaran. Sistem melakukan perdagangan multi-lapangan yang sesuai apabila harga menembusi garisan grid, mewujudkan perdagangan grid sepenuhnya automatik.

Prinsip Strategi

Strategi menggunakan purata bergerak 20 kitaran sebagai garisan tengah garisan, dan dua kali perbezaan standard sebagai lebar lebar. Berdasarkan garisan, strategi ini menetapkan 4 peringkat grid antara garisan atas dan bawah, dengan jarak grid 1%. Apabila harga menembusi garisan grid ke atas, sistem melakukan banyak operasi; apabila harga menembusi garisan grid ke bawah, sistem melakukan operasi kosong. Reka bentuk ini membolehkan strategi untuk terus mendapat keuntungan di pasaran yang bergolak.

Kelebihan Strategik

  1. Penyesuaian dinamik - kedudukan grid akan bergerak mengikut jalur Brin, membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza
  2. Risiko terkawal - Hadkan ruang dagangan melalui Brin Belt untuk mengelakkan terlalu banyak kedudukan dalam keadaan yang melampau
  3. Automasi yang tinggi - sistem menjalankan urus niaga secara automatik tanpa campur tangan manusia
  4. Perdagangan dua hala - boleh mendapat keuntungan dalam keadaan naik dan turun
  5. Parameter boleh disesuaikan - Jarak grid dan bilangan peringkat boleh disesuaikan dengan keperluan yang fleksibel

Risiko Strategik

  1. Risiko pasaran tren - kemungkinan pengunduran yang lebih besar dalam tren unilateral
  2. Risiko pengurusan wang - pelbagai grid yang diaktifkan secara serentak boleh menyebabkan terlalu banyak kedudukan
  3. Risiko titik tergelincir - pasaran yang bergelincir mungkin menyebabkan harga transaksi menyimpang daripada harga grid
  4. Risiko teknikal - Brin Belt mungkin menunjukkan isyarat pecah palsu

Penyelesaian:

  • Tetapkan had pegangan keseluruhan
  • Memperkenalkan penapis trend
  • Optimumkan mekanisme pelaksanaan pesanan
  • Menambah penapis isyarat pengesahan

Arah pengoptimuman strategi

  1. Jarak grid adaptif - menyesuaikan jarak grid secara dinamik mengikut kadar lonjakan
  2. Memperkenalkan hubungan kuantiti-harga - masa untuk mengoptimumkan kemasukan dengan menggabungkan penunjuk kuantiti
  3. Mengoptimumkan mekanisme penangguhan kerugian - merancang pelan penangguhan kerugian yang lebih fleksibel
  4. Pengoptimuman pengurusan wang - Mencapai pengurusan kedudukan berasaskan risiko
  5. Sinergi kitaran masa berbilang - memperkenalkan mekanisme pengesahan isyarat berbilang kitaran

ringkaskan

Strategi ini mewujudkan sistem perdagangan automatik yang fleksibel dan stabil melalui gabungan perdagangan Brinbelt dan Grid. Kelebihan utama strategi ini adalah keupayaan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza, sambil mengawal risiko melalui penyesuaian parameter. Walaupun terdapat beberapa risiko yang wujud, sistem perdagangan yang lebih stabil dapat dibina melalui pengoptimuman dan penyempurnaan berterusan.

Kod sumber strategi
/*backtest
start: 2024-12-19 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Grid Bot based on Bollinger Bands with Adjustable Levels", overlay=true)

// Settings
source = close
length = input.int(20, minval=1, title="Bollinger Bands Length")
mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands Multiplier")
gridDistancePercent = input.float(1.0, title="Distance Between Levels (%)") / 100 // Distance between grid levels in percentage
gridSize = input.int(4, title="Number of Grid Levels") // Number of grid levels

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

// Middle line between the upper and lower Bollinger Bands
middle = (upper + lower) / 2

// Levels for long and short positions
var float[] longLevels = array.new_float(gridSize)
var float[] shortLevels = array.new_float(gridSize)

// Filling levels for long and short positions
for i = 0 to gridSize - 1
    array.set(longLevels, i, lower * (1 + gridDistancePercent * (i + 1))) // For longs, increase the lower band
    array.set(shortLevels, i, upper * (1 - gridDistancePercent * (i + 1))) // For shorts, decrease the upper band

// Logic for entering a long position (buy) at the first level crossover
longCondition = ta.crossover(source, array.get(longLevels, 0)) // Condition for buying — crossover with the first long level
if longCondition
    strategy.entry("GridLong", strategy.long, comment="GridLong")

// Logic for entering a short position (sell) at the first level crossunder
shortCondition = ta.crossunder(source, array.get(shortLevels, 0)) // Condition for selling — crossunder with the first short level
if shortCondition
    strategy.entry("GridShort", strategy.short, comment="GridShort")

// Logic for additional buys/sells when reaching subsequent levels
// For longs:
for i = 1 to gridSize - 1
    if ta.crossover(source, array.get(longLevels, i))
        strategy.entry("GridLong" + str.tostring(i), strategy.long, comment="GridLong")

// For shorts:
for i = 1 to gridSize - 1
    if ta.crossunder(source, array.get(shortLevels, i))
        strategy.entry("GridShort" + str.tostring(i), strategy.short, comment="GridShort")

// Visualization of the levels
plot(upper, color=color.red, linewidth=2, title="Upper Bollinger Band")
plot(lower, color=color.green, linewidth=2, title="Lower Bollinger Band")
plot(middle, color=color.blue, linewidth=2, title="Middle Line")

// Display additional grid levels (fixed titles)
plot(array.get(longLevels, 0), color=color.green, linewidth=1, title="Long Level 1") // For the 1st long level
plot(array.get(longLevels, 1), color=color.green, linewidth=1, title="Long Level 2") // For the 2nd long level
plot(array.get(longLevels, 2), color=color.green, linewidth=1, title="Long Level 3") // For the 3rd long level
plot(array.get(longLevels, 3), color=color.green, linewidth=1, title="Long Level 4") // For the 4th long level

plot(array.get(shortLevels, 0), color=color.red, linewidth=1, title="Short Level 1") // For the 1st short level
plot(array.get(shortLevels, 1), color=color.red, linewidth=1, title="Short Level 2") // For the 2nd short level
plot(array.get(shortLevels, 2), color=color.red, linewidth=1, title="Short Level 3") // For the 3rd short level
plot(array.get(shortLevels, 3), color=color.red, linewidth=1, title="Short Level 4") // For the 4th short level