
Strategi pelacakan tren ganda adalah strategi gabungan indikator tren super, rata-rata bergerak dua indeks (DEMA) dan pita Brin. Ini bertujuan untuk memanfaatkan keunggulan dari berbagai indikator teknis untuk menangkap sinyal beli dan jual tepat waktu ketika tren berbalik.
Strategi ini terdiri dari tiga bagian utama:
Indikator supertrend: menghitung garis putus ke atas dan garis putus ke bawah untuk menentukan arah tren saat ini. Menghasilkan sinyal beli ketika harga melewati garis supertrend dari bawah ke atas; menghasilkan sinyal jual ketika harga melewati garis supertrend dari atas ke bawah.
DEMA: Indikator pelacakan tren yang menggabungkan karakteristik rata-rata bergerak sederhana dan rata-rata bergerak indeks untuk merespons perubahan harga lebih cepat. DEMA 200 hari diatur dalam strategi untuk menentukan arah tren jangka panjang.
Bering: menunjukkan kisaran fluktuasi harga. Ketika Bering melakukan kontraksi atau ekspansi yang tidak biasa, ini menandakan kemungkinan pembalikan tren.
Ketika indikator supertrend dan DEMA mengirim sinyal beli/jual, maka masuklah ke posisi yang sesuai. Selain itu, Brin band anomali juga dapat digunakan sebagai sinyal penilaian tambahan.
Kombinasi multi-indikator strategi pelacakan tren ganda, memanfaatkan keunggulan supertrend, DEMA dan tiga Brin Belt secara komprehensif, meningkatkan kualitas sinyal sambil menangkap tren, dan diharapkan mendapatkan efek strategi yang lebih baik melalui pengoptimalan parameter. Penambahan mekanisme stop loss juga merupakan fokus pengoptimalan di masa depan.
/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2)
// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)
// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)
// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2
// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")
// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)
// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)
// Add push notification on mobile if buy and sell occurred
if (buySignal)
strategy.entry("Buy", strategy.long)
strategy.exit("Sell")
alert("Buy Signal - Supertrend")
if (sellSignal)
strategy.entry("Sell", strategy.short)
strategy.exit("Cover")
alert("Sell Signal - Supertrend")