Penulis:ChaoZhang, Tarikh: 2024-01-22 17:34:05
Tag:

img

Ringkasan

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.

Logika Strategi

1. Pengesahan Bekalan dan Permintaan

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.

2. Penghakiman Tren EMA

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.

3. Tanda Zon Panjang dan Pendek

Tentukan zon pembalikan berdasarkan dua titik tertinggi dan terendah candles baru-baru ini:

  • Zon HH (Kawasan Tinggi Tinggi) - 2 puncak lilin berturut-turut menjadikan tinggi tinggi
  • LL Zon (Lower Low Zone) - 2 candles low berturut-turut menjadikan bawah rendah
  • Zon LH (Lower High Zone) - Kembali ke tahap tertinggi yang lebih tinggi ke tahap tertinggi yang lebih rendah
  • Zon HL (Zon rendah yang lebih tinggi) - Kembalikan rendah bawah baru-baru ini ke rendah tinggi

4. ATR Trailing Stop Loss

Mengira nilai ATR tempoh 14 yang akan didarabkan dengan faktor 2 untuk mendapatkan tahap stop loss.

5. Masuk dan Stop Loss Exit

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.

Analisis Kelebihan

  1. Menggunakan pelbagai penunjuk untuk mengenal pasti trend dan kawasan pembalikan utama untuk meningkatkan kadar keuntungan.
  2. ATR stop loss boleh mengehadkan risiko kerugian setiap perdagangan.
  3. Pengesahan pengesahan isyarat masuk meminimumkan perdagangan palsu.

Analisis Risiko

  1. Bergantung hanya pada penunjuk teknikal tanpa mempertimbangkan maklumat asas boleh menyebabkan kegagalan perdagangan kerana kehilangan data utama.
  2. ATR stop loss boleh mendapat run-over semasa turun naik yang besar mengakibatkan kerugian.
  3. Isyarat pembalikan EMA yang kerap semasa pasaran berkisar boleh membawa kepada perdagangan berlebihan.

Penyelesaian Risiko:

  1. Menambah data ekonomi dan penilaian dasar.
  2. Mengizinkan penyangga yang lebih luas untuk pekali ATR.
  3. Sesuaikan parameter tempoh ATR untuk mengelakkan sensitiviti semasa julat.

Peluang Peningkatan

  1. Menambah dengan penunjuk teknikal seperti MACD, RSI dan lain-lain untuk meningkatkan masa.
  2. Uji semula kombinasi parameter tempoh dan pengganda yang berbeza untuk pengoptimuman.
  3. Pertimbangkan untuk menambah penapis untuk mengelakkan signal.
  4. Menggunakan pembelajaran mesin dan lain-lain untuk mengoptimumkan parameter secara dinamik.

Kesimpulan

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)


Lebih lanjut