Momentum Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-14 11:19:05
Tag:

img

Gambaran umum

Strategi ini menggunakan Bollinger Bands dikombinasikan dengan indikator ATR dan garis EMA untuk menentukan sinyal. Ini menghasilkan sinyal beli ketika harga menembus band atas Bollinger dan melintasi garis EMA dengan cepat. Ini menghasilkan sinyal jual ketika harga menembus band bawah Bollinger dan melintasi di bawah garis EMA dengan cepat. Indikator ATR digunakan untuk mengatur stop loss.

Logika Strategi

  1. Hitung Bollinger midline, band atas dan band bawah.Penyimpangan standar periode n, pita bawah adalah garis tengah - mdeviasi standar periode n.

  2. Menghitung indikator ATR untuk melacak stop loss.

  3. Menghitung garis EMA 1 periode dan n periode untuk menentukan momentum harga.

  4. Ketika harga melintasi band atas Bollinger dan garis EMA dengan cepat, sinyal beli dihasilkan.

  5. Ketika harga melintasi band bawah Bollinger dan garis EMA dengan cepat, sinyal jual dihasilkan.

  6. Indikator ATR menetapkan titik stop loss, melacak arah harga untuk menghindari terjebak.

Analisis Keuntungan

  1. Bollinger Bands dikombinasikan dengan ATR stop loss dapat secara efektif mengendalikan risiko.

  2. EMA garis cepat dan lambat menentukan arah momentum, menghindari pecah palsu.

  3. Parameter yang dapat disesuaikan sesuai dengan lingkungan pasar yang berbeda.

  4. Sinyal beli/jual yang jelas dengan frekuensi perdagangan yang tinggi, cocok untuk perdagangan jangka pendek.

  5. Indikator ATR melacak stop loss secara tepat waktu.

Analisis Risiko

  1. Jangkauan Bollinger Bands yang sempit dapat menyebabkan perdagangan yang lebih bising.

  2. Parameter ATR yang diatur terlalu kecil dapat menyebabkan stop loss terlalu dekat sehingga terjebak.

  3. Parameter EMA perlu disesuaikan untuk efek siklus yang berbeda.

  4. Pasar berosilasi dapat menghasilkan lebih banyak perdagangan, perlu hati-hati.

  5. Pelacakan stop loss kadang-kadang bisa terlalu agresif, menyebabkan ekspansi kerugian.

Optimalisasi

  1. Gabungkan dengan indikator lain untuk menyaring sinyal perdagangan, misalnya RSI untuk overbought/oversold, KDJ untuk divergensi dll.

  2. Pertimbangkan untuk menyesuaikan parameter Bollinger secara dinamis berdasarkan ATR agar sesuai dengan fluktuasi harga.

  3. Uji parameter siklus EMA yang berbeda untuk kombinasi parameter terbaik.

  4. Dengan cerdas menyesuaikan parameter ATR berdasarkan volatilitas untuk menghindari stop loss yang agresif.

  5. Pertimbangkan untuk memasukkan model pembelajaran mendalam untuk membantu waktu keputusan beli / jual.

Ringkasan

Strategi ini memiliki logika yang jelas menggunakan Bollinger Bands untuk menangkap price breakout, ATR untuk mengatur stop loss range, EMA untuk menentukan arah momentum untuk penilaian komprehensif momentum breakout, yang dapat secara efektif menangkap tren harga jangka pendek. Menggabungkan beberapa indikator untuk penilaian komprehensif dapat meningkatkan kualitas sinyal. Masih ada ruang untuk optimasi melalui penyetelan parameter, kombinasi indikator dll untuk lebih memperbaiki strategi ini untuk stabilitas dan elastisitas yang lebih besar.


/*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)

Lebih banyak