CBMA Bollinger Bands Breaker Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-06 16:25:01
Tag:

img

Ringkasan

Strategi ini menggunakan CBMA sebagai penunjuk teknikal utama yang digabungkan dengan Bollinger Bands untuk mengenal pasti trend pasaran dan melaksanakan strategi pemecah.

Logika Strategi

  1. Mengira CBMA: Gunakan EMA adaptif untuk meluruskan CBMA yang boleh mengesan perubahan harga dengan berkesan.

  2. Tetapkan parameter Bollinger Bands: Gunakan CBMA sebagai band tengah, dan tetapkan band atas/bawah menggunakan pengganda penyimpangan standard, yang boleh diselaraskan berdasarkan pasaran.

  3. Perdagangan pecah: Jual apabila harga pecah di atas jalur atas, beli apabila harga pecah di bawah jalur bawah, menggunakan trend mengikuti strategi pemecah.

  4. Gunakan pembatalan pesanan kilat, hanya berdagang satu arah pada satu masa.

  5. Tetapkan saiz pesanan tetap, boleh diselaraskan berdasarkan modal.

Analisis Kelebihan

  1. CBMA mempunyai kelancaran yang baik dan boleh mengesan harga dengan berkesan.

  2. EMA adaptif mengoptimumkan tindak balas purata bergerak.

  3. Band atas/bawah memberikan isyarat arah yang jelas apabila pecah berlaku.

  4. Model mengikut trend mengelakkan perdagangan whipsaw.

  5. Saiz pesanan tetap mengawal risiko perdagangan tunggal.

Analisis Risiko

  1. Parameter Bollinger Bands perlu dioptimumkan, terlalu lebar atau terlalu sempit boleh menyebabkan masalah.

  2. Sinyal terputus mungkin mempunyai terputus palsu.

  3. Perlu stop loss untuk mengawal kerugian.

  4. Saiz pesanan tetap tidak boleh menyesuaikan kedudukan berdasarkan pasaran.

  5. Hanya berdagang satu arah, tidak boleh mendapat keuntungan lebih.

Arahan pengoptimuman

  1. Mengoptimumkan parameter Bollinger Bands secara dinamik untuk menyesuaikan pasaran dengan lebih baik.

  2. Tambah lebih banyak penunjuk untuk penapisan, mengelakkan pecah palsu.

  3. Tambah stop loss untuk mengunci keuntungan.

  4. Perdagangan lindung nilai, pergi kedua-dua panjang dan pendek untuk keuntungan yang lebih besar.

  5. Tambah sistem pengukuran kedudukan.

Kesimpulan

Strategi ini adalah sistem trend breaker yang menggunakan teknologi purata bergerak adaptif yang digabungkan dengan Bollinger Bands untuk isyarat breakout yang jelas. Ia mempunyai logika yang mudah dan kawalan saiz pesanan tetap risiko, mempunyai beberapa nilai praktikal. Tetapi isu-isu seperti breakout palsu dan pengoptimuman parameter kekal, yang memerlukan lebih banyak penunjuk untuk meningkatkan dan meningkatkan prestasi perdagangan sebenar sambil mengawal risiko. Secara keseluruhan ia adalah sistem breakout permulaan yang baik dengan banyak ruang untuk peningkatan.


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="CBMA Bollinger Bands Strategy directed [ChuckBanger]", shorttitle="CBMA BB CB", 
   overlay=true )


length = input(title="Length", type=input.integer, defval=12, minval=1)
regular = input(title="Regular BB Or CBMA?", type=input.bool, defval=false)
src = input(title="Source", type=input.source, defval=close)
mult = input(title="Multipler", type=input.float, defval=2.3, minval=.001, maxval=50, step=.1)
emaLen = input(title="EMA Length", type=input.integer, defval=11, minval=1)
emaGL = input(title="EMA Gain Limit", type=input.integer, defval=50, minval=1)
highlight = input(title="Highlight On/Off", type=input.bool, defval=true)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//strategy.risk.max_drawdown(50, strategy.percent_of_equity)

calc_hma(src, length) =>
    hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
    hullma

calc_cbma(price, length, emaLength, emaGainLimit) =>
    alpha = 2 / (emaLength + 1)
    ema = ema(price, emaLength)
    int leastError = 1000000
    
    float ec = 0
    float bestGain = 0
    
    for i = emaGainLimit to emaGainLimit
        gain = i / 10
        ec := alpha * ( ema + gain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
        error = price - ec
        if (abs(error) < leastError)
            leastError = abs(error)
            bestGain = gain
    
    ec := alpha * ( ema + bestGain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
    hull = calc_hma(price, length)
    
    cbma = (ec + hull) / 2
    cbma

cbma = calc_cbma(src, length, emaLen, emaGL)
basis = regular ? sma(src, length) : cbma
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
cbmaColor = fixnan(highlight and not regular ? cbma > high ? color.purple : cbma < low ? color.aqua : na : color.red)
plot(basis, color=cbmaColor)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

if (crossover(src, lower))
    strategy.entry("CBMA_BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="CBMA_BBandLE")
else
    strategy.cancel(id="CBMA_BBandLE")

if (crossunder(src, upper))
    strategy.entry("CBMA_BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="CBMA_BBandSE")
else
    strategy.cancel(id="CBMA_BBandSE")


Lebih lanjut