Purata pergerakan dua track strategi bull-bear


Tarikh penciptaan: 2023-11-06 16:25:01 Akhirnya diubah suai: 2023-11-06 16:25:01
Salin: 1 Bilangan klik: 646
1
fokus pada
1617
Pengikut

Purata pergerakan dua track strategi bull-bear

Gambaran keseluruhan

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.

Prinsip Strategi

  1. Hitung purata bergerak serpihan ((CBMA): Menggunakan purata bergerak serpihan halus EMA yang beradaptasi untuk mengesan perubahan harga secara berkesan.

  2. 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.

  3. Perdagangan terobosan: harga naik lebih tinggi apabila ia menembus tren tinggi, lebih tinggi apabila ia menembus tren rendah, menggunakan strategi pemecah trend.

  4. Menggunakan mod pesanan cancel lightning, hanya melakukan transaksi satu arah pada satu masa.

  5. Tetapkan jumlah dagangan tetap yang boleh disesuaikan dengan dana.

Analisis kelebihan

  1. Rata-rata bergerak batu kapur sangat lancar dan dapat mengesan harga dengan berkesan.

  2. Algoritma EMA beradaptasi untuk mengoptimumkan masa nyata purata bergerak.

  3. Brin membawa isyarat arah untuk menembusi.

  4. Menggunakan trend tracker untuk mengelakkan whipsaw.

  5. Jumlah dagangan tetap boleh mengawal kerugian satu kali.

Analisis risiko

  1. Pengaturan parameter Brin perlu dioptimumkan, kerana ia terlalu besar dan terlalu kecil.

  2. Isyarat penembusan mungkin berlaku.

  3. Ia perlu diletakkan untuk mengawal kerugian.

  4. Jumlah dagangan tetap tidak boleh disesuaikan dengan pasaran.

  5. Tidak ada keuntungan yang lebih besar daripada hanya berdagang satu arah.

Arah pengoptimuman

  1. Secara dinamik mengoptimumkan parameter Brin Belt, menjadikan Brin Belt lebih sesuai dengan keadaan pasaran.

  2. Tambah lebih banyak penunjuk untuk penapisan gelombang dan mengelakkan penembusan palsu.

  3. Tambah Tracking Stop Loss untuk mengunci keuntungan.

  4. Berdagang lindung nilai, tetapi lebih banyak melakukan shorting untuk mendapatkan keuntungan yang lebih besar.

  5. Bergabung dengan sistem pengurusan kedudukan.

ringkaskan

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.

Kod sumber 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")