Strategi ini menggunakan Bollinger Bands digabungkan dengan petunjuk ATR dan garis EMA untuk menentukan isyarat. Ia menghasilkan isyarat beli apabila harga memecahkan jalur atas Bollinger dan melintasi garis EMA dengan cepat. Ia menghasilkan isyarat jual apabila harga memecahkan jalur bawah Bollinger dan melintasi di bawah garis EMA dengan cepat. Indikator ATR digunakan untuk menetapkan stop loss.
Hitung Bollinger midline, band atas dan band bawah.Penyimpangan piawai n-periode, jalur bawah adalah garis tengah - mPenyimpangan standard n-periode.
Mengira penunjuk ATR untuk mengesan stop loss.
Mengira garis EMA 1 tempoh dan n tempoh untuk menentukan momentum harga.
Apabila harga melintasi band atas Bollinger dan garis EMA dengan cepat, isyarat beli dihasilkan.
Apabila harga melintasi bawah Bollinger band bawah dan garis EMA dengan cepat, isyarat jual dihasilkan.
Indikator ATR menetapkan titik stop loss, mengesan arah harga untuk mengelakkan terperangkap.
Bollinger Bands digabungkan dengan ATR stop loss dapat mengawal risiko dengan berkesan.
Garis EMA cepat dan perlahan menentukan arah momentum, mengelakkan pecah palsu.
Parameter yang boleh diselaraskan sesuai dengan persekitaran pasaran yang berbeza.
Isyarat beli / jual yang jelas dengan kekerapan perdagangan yang tinggi, sesuai untuk perdagangan jangka pendek.
Indikator ATR menjejaki stop loss dengan tepat pada masanya.
Julat Bollinger Bands yang sempit boleh menyebabkan perdagangan yang lebih bising.
Parameter ATR yang ditetapkan terlalu kecil boleh menyebabkan kehilangan berhenti terlalu dekat yang mengakibatkan terperangkap.
Parameter EMA perlu diselaraskan untuk kesan kitaran yang berbeza.
Pasaran berayun boleh menghasilkan lebih banyak perdagangan, perlu berhati-hati.
Pengesanan stop loss kadang-kadang boleh terlalu agresif, menyebabkan pengembangan kerugian.
Gabungkan dengan penunjuk lain untuk menapis isyarat dagangan, contohnya RSI untuk overbought/oversold, KDJ untuk divergensi dll.
Pertimbangkan penyesuaian dinamik parameter Bollinger berdasarkan ATR untuk menyesuaikan dengan turun naik harga.
Uji parameter kitaran EMA yang berbeza untuk kombinasi parameter terbaik.
Sesuaikan parameter ATR dengan bijak berdasarkan turun naik untuk mengelakkan kerugian berhenti yang agresif.
Pertimbangkan untuk menggabungkan model pembelajaran mendalam untuk membantu masa keputusan beli / jual.
Strategi ini mempunyai logik yang jelas menggunakan Bollinger Bands untuk menangkap harga pecah, ATR untuk menetapkan julat stop loss, EMA untuk menentukan arah momentum untuk penghakiman komprehensif mengenai pecah momentum, yang dapat menangkap trend harga jangka pendek dengan berkesan. Menggabungkan beberapa penunjuk untuk penghakiman komprehensif dapat meningkatkan kualiti isyarat. Masih ada ruang untuk pengoptimuman melalui penyesuaian parameter, kombinasi penunjuk dan lain-lain untuk memperbaiki lagi strategi ini untuk lebih banyak kestabilan dan keanjalan.
/*backtest start: 2022-11-07 00:00:00 end: 2023-11-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay = true) //CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. // Inputs a = input(1, title = "Key Vaule. 'This changes the sensitivity'") c = input(10, title = "ATR Period") h = input(false, title = "Signals from Heikin Ashi Candles") src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close length = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev bbr = (src - lower)/(upper - lower) // plot(bbr, "Bollinger Bands %B", color=#26A69A) // band1 = hline(1, "Overbought", color=#787B86, linestyle=hline.style_dashed) // hline(0.5, "Middle Band", color=color.new(#787B86, 50)) // band0 = hline(0, "Oversold", color=#787B86, linestyle=hline.style_dashed) // fill(band1, band0, color=color.rgb(38, 166, 154, 90), title="Background") xATR = atr(c) nLoss = a * xATR xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema = ema(src,1) emaFast = ema(src,144) emaSlow = ema(src,576) sma = sma(src, c) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) smaabove = crossover(src, sma) smabelow = crossover(sma, src) buy = src > xATRTrailingStop and above and (bbr>20 or bbr<80) sell = src < xATRTrailingStop and below and (bbr>20 or bbr<80) // buy = src > xATRTrailingStop // sell = src < xATRTrailingStop barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop // plot(emaFast , color = color.rgb(243, 206, 127), title="emaFast") plot(xATRTrailingStop, color = color.rgb(233, 233, 232), title="xATRTrailingStop") plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) // plotshape(buy, title = "Sell", text = 'Sell', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) // plotshape(sell, title = "buy", text = 'buy', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) // strategy.entry("short", false, when = buy) // strategy.entry("long ", true, when = sell) strategy.entry("long", true, when = buy) strategy.entry("short ", false, when = sell)