
Strategi ini menggunakan kombinasi indikator momentum dan garis rata, mengenal pasti trend pasaran dan titik balik, berdagang ketika trend bertukar, termasuk dalam strategi mengikuti trend dan perdagangan berlawanan. Ia terdiri daripada modul seperti zon permintaan dan bekalan, garis rata EMA, pelbagai tanda HH, LL, LH, HL, dan tanda kawasan kosong, ATR berhenti.
Berdasarkan garis K, kawasan merah adalah kawasan bekalan yang berlebihan, dan kawasan hijau adalah kawasan permintaan yang melebihi bekalan.
Garis purata EMA dengan panjang 200 dikira dan digambar, dengan hubungan harga dengan saiz EMA untuk menilai trend kosong, harga di atas EMA dianggap sebagai trend naik, harga di bawah EMA dianggap sebagai trend menurun.
Kawasan berpatah balik berdasarkan dua titik tertinggi dan terendah garis K:
Hitung nilai ATR untuk 14 kitaran, kalikan dengan faktor 2 untuk menjadi stop loss untuk strategi ini.
Mantau harga berkaitan dengan titik rendah dan tinggi Kline hari sebelumnya. Apabila harga lebih tinggi daripada titik tinggi hari sebelumnya, ia menghasilkan isyarat multihead; Apabila harga lebih rendah daripada titik rendah hari sebelumnya, ia menghasilkan isyarat kosong. Isyarat masuk ditangguhkan ke garis K 3 untuk mengesahkan, untuk mengelakkan isyarat salah yang disebabkan oleh gelombang kejutan.
Penyelesaian risiko:
Strategi ini menggunakan analisis permintaan dan bekalan, penilaian trend, pengenalan reverse dan modul pengurusan kerugian untuk mengenal pasti peluang untuk membalikkan pasaran di kawasan utama. Strategi ini merupakan strategi yang berkesan untuk mengesan trend dan perdagangan berlawanan. Ia juga memerlukan ujian dan pengoptimuman yang berterusan, ditambah dengan penilaian pengalaman buatan, untuk mendapatkan keuntungan yang stabil dalam jangka panjang.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
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)