
Strategi ini menggunakan area penawaran dan permintaan, indeks moving averages (EMA) dan average real range (ATR) untuk menilai sinyal perdagangan. Pengguna dapat menyesuaikan pengaturan parameter EMA dan visibilitas sinyal jual beli. Strategi ini menandai area penawaran seperti lebih tinggi lebih tinggi (HH), lebih rendah lebih rendah (LL), lebih rendah lebih tinggi (LH) dan lebih tinggi lebih rendah (HL).
Indeks EMA Moving Average:
Rata-rata nilai riil ATR:
Perhitungan ini digunakan untuk menilai penilaian tren EMA dan pengaturan ATR bergerak stop loss berdasarkan fluktuasi pasar. Strategi ini bertujuan untuk memberikan sinyal beli dan jual berdasarkan hubungan antara harga penutupan, EMA dan nilai ATR.
Strategi ini menggunakan istilah-istilah seperti HH (lebih tinggi lebih tinggi), LL (lebih rendah lebih rendah), HL (lebih tinggi lebih rendah), dan LH (lebih rendah lebih tinggi) untuk mengidentifikasi pola perilaku harga yang berbeda, yang sering digunakan dalam analisis tren:
Lebih tinggi lebih tinggi (HH)Harga saat ini berada di titik tertinggi yang lebih tinggi dari harga sebelumnya, menunjukkan potensi kenaikan.
Lebih rendah lebih rendahHarga saat ini berada di bawah titik terendah sebelumnya, menunjukkan potensi penurunan.
Lebih Tinggi Lebih Rendah (HL)Harga saat ini berada di titik terendah yang lebih tinggi dari titik terendah sebelumnya, menunjukkan bahwa potensi kenaikan terus berlanjut.
Lebih rendah lebih tinggiHarga minyak mentah AS naik lebih tinggi dari harga minyak mentah AS sebelumnya, menunjukkan bahwa tren penurunan potensial akan berlanjut.
Pola-pola ini dapat digunakan dalam kombinasi dengan indikator teknis lainnya untuk menentukan pembalikan atau kelanjutan dari tren potensial. Strategi ini menggunakan pola-pola ini untuk mengidentifikasi saat masuk atau keluar.
Sinyal masuk: K-Line ketiga menghasilkan sinyal beli/jual saat harga tutup lebih tinggi/rendah dari harga tertinggi/rendah hari sebelumnya.
Cara menghentikan kerugian: Menggunakan beberapa kali lipat dari nilai ATR (default 2x) sebagai titik tolak mundur.
Strategi ini mengintegrasikan penggunaan berbagai indikator teknis dan penilaian pola harga seperti tren, reversal, volatilitas, dan lain-lain. Strategi ini bekerja dengan baik dalam pengamatan ulang. Namun, kompleksitas real-time masih diperlukan untuk memfilter sinyal masuk yang kompleks, optimal, dan tepat.
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)
showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")
emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")
// Function to identify supply and demand zones
getZones(src, len, mult) =>
base = request.security(syminfo.tickerid, "D", close)
upper = request.security(syminfo.tickerid, "D", high)
lower = request.security(syminfo.tickerid, "D", low)
multiplier = request.security(syminfo.tickerid, "D", mult)
zonetype = base + multiplier * len
zone = src >= zonetype
[zone, upper, lower]
// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)
// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)
// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)
// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)
// Plot EMA
plot(ema, color=emaColor, title="EMA")
// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and bar_index >= 2
shortCondition = ta.crossunder(close, low[1]) and bar_index >= 2
// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue
// Strategy Entry and Exit
if (longCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)
if (shortCondition)
strategy.entry("Sell", strategy.short)
strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)
// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)
// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")
// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)