Saluran Peratusan EMA dengan Strategi Dagangan Julat Bollinger Band

Penulis:ChaoZhang, Tarikh: 2023-11-13 17:38:01
Tag:

img

Ringkasan

Strategi ini berdasarkan pilihan pengguna EMA dan saluran peratusan yang ditentukan. Ia pergi lama apabila harga berada di bawah jalur atas dan pergi pendek apabila harga berada di atas jalur bawah. Jika harga mula trend dan bergerak di luar saluran, semua kedudukan ditutup untuk mengelakkan kerugian.

Untuk pasaran trend, EMA Peratusan Saluran kakak dengan Bollinger Band Trend Trading Strategy harus digunakan sebaliknya.

Prinsip-prinsip

  1. Mengira EMA 200 tempoh sebagai EMA asas.

  2. Mengira jalur atas dan bawah berdasarkan peratusan yang ditakrifkan oleh pengguna: Band Atas = EMA * (1 + Peratusan) Bahagian bawah = EMA * (1 - Peratusan)

  3. Mengira Bollinger Bands 20 tempoh untuk menggambarkan julat saluran.

  4. Pergi panjang apabila harga penutupan melintasi di atas Bollinger Band bawah dari bawah. Pergi pendek apabila harga penutupan melintasi di bawah Bollinger Band atas dari atas.

  5. Gunakan ATR untuk mengira stop loss untuk mengelakkan kerugian yang berlebihan.

  6. Jika harga bergerak di luar julat saluran peratusan yang ditetapkan, tutup semua kedudukan untuk mengelakkan kerugian lanjut.

Kelebihan

  1. Garis asas EMA membantu menangkap titik pembalikan trend dengan lebih baik.

  2. Saluran peratusan menetapkan julat perdagangan yang munasabah untuk mengelakkan perdagangan berlebihan.

  3. Bollinger Bands menyediakan tahap sokongan dan rintangan untuk membantu masa kemasukan.

  4. Stop trailing ATR secara dinamik menetapkan stop loss untuk mengawal risiko perdagangan secara berkesan.

  5. Menutup semua kedudukan apabila harga melanggar saluran dengan cepat mengawal kerugian.

  6. Parameter yang boleh disesuaikan fleksibel untuk keadaan pasaran yang berbeza.

Risiko

  1. Julat saluran yang terlalu luas mungkin terlepas trend atau melambatkan penghentian kerugian.

  2. Julat saluran yang terlalu sempit boleh menyebabkan perdagangan berlebihan dan meningkatkan kos transaksi.

  3. Tetapan parameter Bollinger Bands yang buruk boleh menyebabkan peluang perdagangan yang hilang.

  4. Sempadan stop loss yang ditetapkan terlalu longgar boleh membawa kepada kerugian berlebihan setiap perdagangan.

  5. Parameter perlu dioptimumkan untuk mencari julat perdagangan yang optimum.

Arahan pengoptimuman

  1. Uji tempoh EMA yang berbeza untuk mencari purata bergerak yang paling sesuai.

  2. Mengoptimumkan parameter saluran peratusan untuk menentukan julat saluran yang optimum.

  3. Sesuaikan tempoh Bollinger Bands untuk menangkap turun naik dengan lebih baik.

  4. Sesuaikan tempoh ATR dan pengganda untuk menyempurnakan lagi strategi stop loss.

  5. Uji long-only di atas EMA atau short-only di bawah syarat EMA dan lihat sama ada ia meningkatkan kadar kemenangan.

  6. Sertakan penunjuk trend untuk menentukan sama ada perlu keluar lebih awal.

Kesimpulan

Strategi ini menggabungkan kekuatan purata bergerak, saluran, turun naik dan banyak lagi untuk mewujudkan sistem perdagangan julat yang agak stabil. Kuncinya adalah mencari tetapan parameter yang paling sesuai untuk setiap pasaran tertentu untuk mengimbangi risiko dan ganjaran. Penambahbaikan masa depan boleh terus mengoptimumkan peraturan dan parameter, atau menggabungkan dengan strategi trend.


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

//@version=4
strategy(title="[mdeacey] EMA% Channel + BB Range Strategy", shorttitle="[mdeacey] EMA% Channel + BB Range Strategy", overlay=true)

//EMA 200

len = input(title="EMA Length", type=input.integer, defval=200)
srce = input(title="EMA Source", type=input.source, defval=close)

ema1= ema(srce,len)

percent = input(title="Channel Percentage (%)", type=input.float, defval= 1) 
valuee = (percent*ema1)/100
upperbande = ema1 + valuee
lowerbande = ema1 - valuee


plot(ema1, title='EMA200', color=color.gray, linewidth=1, style=plot.style_line )
plot(upperbande, title='EMA Upper Band', color=color.gray, linewidth=1, style=plot.style_line )
plot(lowerbande, title='EMA Lower Band', color=color.gray, linewidth=1, style=plot.style_line )

length = input(20, minval=2)
src = input(close, title="Close price")
mult = input(2.0, minval=0.001, maxval=50)

MA2 = sma(src, length)
dev = mult * stdev(src, length)
upper = MA2 + dev
lower = MA2 - dev

signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white

barcolor(color=signalColor)


upperBand = plot(upper, color=color.gray, linewidth=1)
lowerBand = plot(lower, color=color.gray, linewidth=1)
fill(upperBand, lowerBand,color=color.gray)
strategy.entry("Long",true,when = crossover(close,lower)  and close <upperbande and close>lowerbande)
strategy.close("Long",when = crossunder(close,lowerbande))
strategy.entry("Short",false,when = crossunder(close,upper)  and close <upperbande and close>lowerbande)
strategy.close("Short",when = crossover(close,upperbande))

//Inputs
atrPeriod = input(defval=14, title="ATR Period",group='ATR Settings', type=input.integer) // Adjust this to change the ATR calculation length
multiplierPeriod = input(defval=1.75, title="ATR Multiplier Period",group='ATR Settings',  type=input.float)// Adjust this to change the distance between your candles and the line

//ATR Calculation
pine_rma(x, y) =>
    alpha = y
    sum = 0.0
    sum := (x + (alpha - 1) * nz(sum[1])) / alpha

true_range() =>
    max(high - low, max(abs(high - close[1]), abs(low - close[1])))

//Long SL
plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1)
// Short SL
plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1)
strategy.exit("Exit Long","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("eExit Short","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )


Lebih lanjut