Strategi pergerakan rata-rata jalur ganda bull-bear


Tanggal Pembuatan: 2023-11-06 16:25:01 Akhirnya memodifikasi: 2023-11-06 16:25:01
menyalin: 1 Jumlah klik: 646
1
fokus pada
1617
Pengikut

Strategi pergerakan rata-rata jalur ganda bull-bear

Ringkasan

Strategi ini menggunakan rata-rata bergerak batuan sebagai indikator teknis utama, yang dikombinasikan dengan dua jalur Bollinger Bands, strategi breaker untuk mengidentifikasi tren pasar. Lihatlah ke bawah ketika harga menembus jalur Bollinger Bands, dan lihatlah lebih banyak ketika harga menembus jalur Bollinger Bands.

Prinsip Strategi

  1. Menghitung Moving Average (CBMA): Menggunakan EMA Smooth Moving Average (SMA) yang beradaptasi, dapat secara efektif melacak perubahan harga.

  2. Setting Brin Belt Parameter: Pilih moving averages untuk medium track, up and down track menggunakan standar deviasi stomach multiplier setting, dapat disesuaikan dengan pasar.

  3. Penembusan perdagangan: harga naik lebih tinggi saat menembus tren naik, lebih tinggi saat menembus tren turun, menggunakan strategi pemecah tren.

  4. Menggunakan modus cancel order, hanya melakukan transaksi satu arah pada satu waktu.

  5. Setel jumlah transaksi tetap, dapat disesuaikan dengan dana.

Analisis Keunggulan

  1. Rata-rata bergerak batuan parut memiliki kelenturan yang baik, sehingga dapat secara efektif melacak harga.

  2. Adaptasi algoritma EMA mengoptimalkan real-time moving average.

  3. Brin membawa sinyal ke arah yang jelas untuk menerobos.

  4. Menggunakan mode trend tracking untuk menghindari whipsaw.

  5. Volume transaksi tetap dapat mengontrol kerugian satu kali.

Analisis risiko

  1. Pengaturan parameter pita Brin perlu dioptimalkan, dan terlalu besar atau terlalu kecil adalah masalah.

  2. Sinyal penembusan mungkin terjadi.

  3. Stop loss harus diatur untuk mengendalikan kerugian.

  4. Volume transaksi tetap tidak dapat disesuaikan dengan posisi pasar.

  5. Tidak ada keuntungan yang lebih besar dari hanya melakukan transaksi satu arah.

Arah optimasi

  1. Optimalkan parameter Binance secara dinamis agar Binance lebih sesuai dengan situasi pasar.

  2. “Selain itu, kita juga harus mempertimbangkan bagaimana kita bisa memaksimalkan potensi kita”, ujar dia.

  3. Tambahkan Tracking Stop Loss untuk mengunci keuntungan.

  4. Perdagangan lindung nilai, dengan melakukan lebih banyak shorting untuk mendapatkan keuntungan yang lebih besar.

  5. Bergabung dengan sistem manajemen posisi.

Meringkaskan

Strategi ini digunakan sebagai strategi pelacakan tren breaker, menggunakan indikator teknologi rata-rata bergerak yang beradaptasi sendiri, dengan kombinasi dua jalur Brin. Strategi ini sederhana dan mudah dioperasikan, volume perdagangan tetap dapat mengendalikan risiko, dengan nilai realistis tertentu. Namun, ada juga beberapa masalah, seperti false breakout dan optimasi parameter, yang perlu dioptimalkan dengan menambahkan lebih banyak indikator teknis, sambil mengendalikan risiko, dan meningkatkan efektivitas strategi secara realistis.

Kode 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")