Strategi ini menggabungkan penunjuk momentum dan purata bergerak untuk mengenal pasti trend pasaran dan titik pembalikan untuk berdagang apabila arah trend berubah. Ia tergolong dalam strategi perdagangan trend berikut dan kontra-trend. Komponen utama termasuk zon bekalan dan permintaan, EMA, pelbagai zon panjang dan pendek HH, LL, LH, HL, ATR trailing stop loss dan lain-lain.
Membezakan hubungan bekalan dan permintaan berdasarkan julat tinggi dan rendah Kline. Kawasan merah menunjukkan bekalan melebihi zon bekalan permintaan. Kawasan hijau menunjukkan permintaan melebihi zon bekalan permintaan.
Menggambar EMA tempoh 200 dan menentukan aliran naik dan turun dengan membandingkan harga dengan EMA. Harga di atas EMA dianggap sebagai aliran naik, manakala harga di bawah EMA dianggap sebagai aliran turun.
Tentukan zon pembalikan berdasarkan dua titik tertinggi dan terendah candle
Mengira nilai ATR tempoh 14 yang akan didarabkan dengan faktor 2 untuk mendapatkan tahap stop loss.
Memantau hubungan harga dengan titik tinggi/rendah lilin sebelumnya. Isyarat panjang diaktifkan apabila harga memecahkan di atas paras tertinggi sebelumnya. Isyarat pendek diaktifkan apabila harga memecahkan di bawah paras rendah sebelumnya. Menunda pengesahan isyarat kemasukan sehingga lilin ke-3 untuk mengelakkan isyarat palsu. Keluar dengan stop loss apabila harga menarik kembali melebihi tahap stop loss ATR.
Penyelesaian Risiko:
Strategi ini menggabungkan analisis bekalan / permintaan, penentuan trend, pengenalan pembalikan dan modul pengurusan risiko dengan berkesan untuk melihat peluang pembalikan pasaran di kawasan utama.
/*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)