
Strategi ini menggunakan purata bergerak batuan sebagai penunjuk teknikal utama, digabungkan dengan Bollinger Bands Dual, strategi pemecah untuk mengenal pasti trend pasaran. Apabila harga menembusi Bollinger Bands di atas landasan, melihat lebih banyak apabila harga menembusi Bollinger Bands di bawah landasan, adalah sistem penembusan dua jalur yang popular.
Hitung purata bergerak serpihan ((CBMA): Menggunakan purata bergerak serpihan halus EMA yang beradaptasi untuk mengesan perubahan harga secara berkesan.
Tetapan parameter Brin Belt: Pilih purata bergerak batuan serpihan sebagai rel tengah, dan rel atas dan bawah menggunakan perkalian stomach yang standard, boleh disesuaikan mengikut pasaran.
Perdagangan terobosan: harga naik lebih tinggi apabila ia menembus tren tinggi, lebih tinggi apabila ia menembus tren rendah, menggunakan strategi pemecah trend.
Menggunakan mod pesanan cancel lightning, hanya melakukan transaksi satu arah pada satu masa.
Tetapkan jumlah dagangan tetap yang boleh disesuaikan dengan dana.
Rata-rata bergerak batu kapur sangat lancar dan dapat mengesan harga dengan berkesan.
Algoritma EMA beradaptasi untuk mengoptimumkan masa nyata purata bergerak.
Brin membawa isyarat arah untuk menembusi.
Menggunakan trend tracker untuk mengelakkan whipsaw.
Jumlah dagangan tetap boleh mengawal kerugian satu kali.
Pengaturan parameter Brin perlu dioptimumkan, kerana ia terlalu besar dan terlalu kecil.
Isyarat penembusan mungkin berlaku.
Ia perlu diletakkan untuk mengawal kerugian.
Jumlah dagangan tetap tidak boleh disesuaikan dengan pasaran.
Tidak ada keuntungan yang lebih besar daripada hanya berdagang satu arah.
Secara dinamik mengoptimumkan parameter Brin Belt, menjadikan Brin Belt lebih sesuai dengan keadaan pasaran.
Tambah lebih banyak penunjuk untuk penapisan gelombang dan mengelakkan penembusan palsu.
Tambah Tracking Stop Loss untuk mengunci keuntungan.
Berdagang lindung nilai, tetapi lebih banyak melakukan shorting untuk mendapatkan keuntungan yang lebih besar.
Bergabung dengan sistem pengurusan kedudukan.
Strategi ini digunakan sebagai strategi pemantauan trend pemutus, menggunakan penunjuk teknologi purata bergerak yang beradaptasi sendiri, digabungkan dengan dua jalur Brin. Strategi ini mudah dan mudah dikendalikan, jumlah perdagangan tetap dapat mengawal risiko, mempunyai nilai sebenar. Tetapi ada juga beberapa masalah, seperti penembusan palsu dan pengoptimuman parameter, yang memerlukan pengoptimuman dengan menambahkan lebih banyak penunjuk teknikal, sambil mengawal risiko, meningkatkan lagi keberkesanan strategi.
/*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")