CBMA Bollinger Bands Breaker Strategi

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

img

Gambaran umum

Strategi ini menggunakan CBMA sebagai indikator teknis utama dikombinasikan dengan Bollinger Bands untuk mengidentifikasi tren pasar dan menerapkan strategi breaker.

Logika Strategi

  1. Menghitung CBMA: Gunakan EMA adaptif untuk meratakan CBMA yang dapat melacak perubahan harga secara efektif.

  2. Atur parameter Bollinger Bands: Gunakan CBMA sebagai band tengah, dan atur band atas/bawah menggunakan pengganda standar deviasi, yang dapat disesuaikan berdasarkan pasar.

  3. Perdagangan Breakout: Jual saat harga menembus band atas, beli saat harga menembus band bawah, menggunakan strategi trend following breaker.

  4. Gunakan pembatalan pesanan flash, hanya perdagangan satu arah pada suatu waktu.

  5. Tetapkan ukuran pesanan tetap, dapat disesuaikan berdasarkan modal.

Analisis Keuntungan

  1. CBMA memiliki kelancaran yang baik dan dapat melacak harga secara efektif.

  2. Adaptive EMA mengoptimalkan respons rata-rata bergerak.

  3. Band atas/bawah memberikan sinyal arah yang jelas ketika terjadi pecah.

  4. Model mengikuti tren menghindari perdagangan whipsaw.

  5. Ukuran pesanan tetap mengendalikan risiko perdagangan tunggal.

Analisis Risiko

  1. Parameter Bollinger Bands perlu dioptimalkan, terlalu lebar atau terlalu sempit dapat menyebabkan masalah.

  2. Sinyal breakout mungkin memiliki breakout palsu.

  3. Butuh stop loss untuk mengendalikan kerugian.

  4. Ukuran pesanan tetap tidak dapat menyesuaikan posisi berdasarkan pasar.

  5. Hanya perdagangan satu arah, tidak bisa keuntungan lebih.

Arahan Optimasi

  1. Dinamis mengoptimalkan Bollinger Bands parameter untuk menyesuaikan pasar lebih baik.

  2. Tambahkan lebih banyak indikator untuk penyaringan, menghindari kebocoran palsu.

  3. Tambahkan stop loss untuk mengunci keuntungan.

  4. Perdagangan lindung nilai, pergi baik panjang dan pendek untuk keuntungan yang lebih besar.

  5. Tambahkan sistem ukuran posisi.

Kesimpulan

Strategi ini adalah sistem trend breaker yang menggunakan teknologi rata-rata bergerak adaptif dikombinasikan dengan Bollinger Bands untuk sinyal breakout yang jelas. Ini memiliki logika sederhana dan ukuran pesanan tetap mengendalikan risiko, memiliki beberapa nilai praktis. Tetapi masalah seperti breakout palsu dan optimasi parameter tetap ada, yang membutuhkan lebih banyak indikator untuk meningkatkan dan meningkatkan kinerja perdagangan nyata sambil mengendalikan risiko. Secara keseluruhan ini adalah sistem breakout starter yang layak dengan banyak ruang untuk perbaikan.


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