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,
Mengira EMA 200 tempoh sebagai EMA asas.
Mengira jalur atas dan bawah berdasarkan peratusan yang ditakrifkan oleh pengguna: Band Atas = EMA * (1 + Peratusan) Bahagian bawah = EMA * (1 - Peratusan)
Mengira Bollinger Bands 20 tempoh untuk menggambarkan julat saluran.
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.
Gunakan ATR untuk mengira stop loss untuk mengelakkan kerugian yang berlebihan.
Jika harga bergerak di luar julat saluran peratusan yang ditetapkan, tutup semua kedudukan untuk mengelakkan kerugian lanjut.
Garis asas EMA membantu menangkap titik pembalikan trend dengan lebih baik.
Saluran peratusan menetapkan julat perdagangan yang munasabah untuk mengelakkan perdagangan berlebihan.
Bollinger Bands menyediakan tahap sokongan dan rintangan untuk membantu masa kemasukan.
Stop trailing ATR secara dinamik menetapkan stop loss untuk mengawal risiko perdagangan secara berkesan.
Menutup semua kedudukan apabila harga melanggar saluran dengan cepat mengawal kerugian.
Parameter yang boleh disesuaikan fleksibel untuk keadaan pasaran yang berbeza.
Julat saluran yang terlalu luas mungkin terlepas trend atau melambatkan penghentian kerugian.
Julat saluran yang terlalu sempit boleh menyebabkan perdagangan berlebihan dan meningkatkan kos transaksi.
Tetapan parameter Bollinger Bands yang buruk boleh menyebabkan peluang perdagangan yang hilang.
Sempadan stop loss yang ditetapkan terlalu longgar boleh membawa kepada kerugian berlebihan setiap perdagangan.
Parameter perlu dioptimumkan untuk mencari julat perdagangan yang optimum.
Uji tempoh EMA yang berbeza untuk mencari purata bergerak yang paling sesuai.
Mengoptimumkan parameter saluran peratusan untuk menentukan julat saluran yang optimum.
Sesuaikan tempoh Bollinger Bands untuk menangkap turun naik dengan lebih baik.
Sesuaikan tempoh ATR dan pengganda untuk menyempurnakan lagi strategi stop loss.
Uji long-only di atas EMA atau short-only di bawah syarat EMA dan lihat sama ada ia meningkatkan kadar kemenangan.
Sertakan penunjuk trend untuk menentukan sama ada perlu keluar lebih awal.
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) )