Jalur Sisihan VWAP dan Strategi Dagangan Penapis Volatiliti

VWAP ATR 偏差带 波动性过滤
Tarikh penciptaan: 2025-04-07 11:57:02 Akhirnya diubah suai: 2025-04-07 11:57:10
Salin: 0 Bilangan klik: 510
2
fokus pada
319
Pengikut

Jalur Sisihan VWAP dan Strategi Dagangan Penapis Volatiliti Jalur Sisihan VWAP dan Strategi Dagangan Penapis Volatiliti

Gambaran keseluruhan

Strategi perdagangan VWAP bias band dengan penapis turun naik adalah sistem perdagangan dalam hari yang berdasarkan purata bertimbangan jumlah transaksi (VWAP) dan saluran perbezaan piawai. Strategi ini menggunakan VWAP sebagai titik rujukan pusat untuk harga, menggabungkan H1 / H2 dan L1 / L2 reversal Al Brooks, dan menyaring persekitaran turun naik yang rendah melalui penapis turun naik ATR, membentuk kerangka keputusan perdagangan yang berstruktur.

Prinsip Strategi

Prinsip-prinsip utama strategi ini dibina di atas beberapa komponen utama:

  1. Pengiraan VWAP untuk setiap hari dagangan: Mengubah semula pengiraan VWAP pada permulaan setiap hari perdagangan untuk memastikan titik rujukan harga berkaitan dengan aktiviti perdagangan hari itu. Strategi menggunakan standard spread untuk membuat band turun naik di atas dan di bawah VWAP, dengan seting default 2 kali standard spread.

  2. Isyarat pemicu masuk

    • Masuk berbilang kepala ((H1/H2): apabila harga dibuka di bawah 2 kali lebih rendah daripada standard deviasi band, tetapi ditutup di atas band ini, dan mempunyai kekuatan berbilang kepala yang mencukupi ((dihitung melalui kedudukan penutupan dalam bar).
    • Masuk kosong ((L1/L2)): apabila harga bukaan lebih tinggi daripada 2 kali band defisiensi standard di atas, tetapi tutup di bawah band defisiensi ini, sambil mempunyai kekuatan kosong yang mencukupi.
  3. Penapis berfluktuasi

    • Menggunakan ATR ((14) untuk mengukur turun naik pasaran
    • Melangkau isyarat perdagangan apabila selisih piawaian terlalu kecil (< 3 kali ATR) untuk mengelakkan salah masuk dalam persekitaran turun naik rendah
  4. Tetapan Stop Loss

    • Multicore: titik rendah tiang isyarat dikurangkan dari kawasan penampan
    • Kepala kosong: Puncak tiang isyarat ditambah kawasan pelindung
  5. Strategi untuk menang

    • Logik keluar yang berbeza boleh dikonfigurasikan secara bebas untuk arah multi ruang
    • Pilihan termasuk: Kembali ke VWAP, capaian sasaran bias tertentu, atau matikan keuntungan automatik
  6. Mekanisme Keluar Aman

    • Mencetuskan keluar selamat apabila jumlah berturut-turut yang telah ditetapkan reverse columns
    • Multicore: X tiang yang berturut-turut
    • Kepala kosong: X tiang matahari berturut-turut

Strategi ini mewujudkan satu set lengkap mekanisme pengiraan kekuatan isyarat, menilai kualiti setiap isyarat dengan mengira kedudukan relatif harga penutupan dalam julat tinggi dan rendah. Isyarat masuk hanya akan dianggap sah apabila kekuatan isyarat mencapai had minimum (default 0.7).

Kelebihan Strategik

Setelah menganalisis kod secara mendalam, strategi ini mempunyai kelebihan yang ketara:

  1. Kemasukan berdasarkan struktur pasaranStrategi ini tidak hanya menjejaki pergerakan harga, tetapi mencari bentuk pembalikan harga tertentu berhampiran zon bias, yang bermaksud bahawa perdagangan dilakukan mengikut kelebihan statistik nilai rata-rata yang kembali.

  2. Mekanisme penapisan berbilangFilter Volatility, Keperluan Kekuatan Isyarat dan Bentuk Harga Khusus, Menapis Isyarat Perdagangan Berlapisan, Mengurangkan Isyarat Kesesatan

  3. Pengurusan risiko yang fleksibelStrategi ini menyediakan pelbagai alat kawalan risiko, termasuk hentian ketat berdasarkan tiang isyarat, sasaran keuntungan yang boleh disesuaikan dan mekanisme keluar selamat, yang membolehkan peniaga menyesuaikan parameter risiko mengikut keadaan pasaran yang berbeza.

  4. Pelbagai konfigurasi bebasStrategi ini membolehkan peniaga untuk mengkonfigurasi secara bebas syarat masuk dan keluar untuk perdagangan multihead dan kosong, yang sangat berharga untuk mengoptimumkan prestasi dalam pasaran yang mempunyai keutamaan arah.

  5. Bantuan visualStrategi ini merangkumi banyak pilihan visual seperti VWAP, paparan band deflection dan pencahayaan kawasan turun naik yang rendah untuk membantu peniaga memahami keadaan pasaran dan isyarat yang berpotensi dengan lebih intuitif.

  6. Sesi ditetapkan VWAPVWAP dikira semula setiap hari perdagangan untuk memastikan titik rujukan harga sentiasa berkaitan dengan aktiviti pasaran semasa, dan mengelakkan masalah penggunaan titik rujukan yang ketinggalan zaman.

  7. Menekankan kualiti isyaratStrategi ini memberi tumpuan kepada isyarat reversal berkualiti tinggi, bukan hanya perpaduan mekanikal antara harga dan jalur penyimpangan.

Risiko Strategik

Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:

  1. Risiko Pembalasan di Pasaran TrenSebagai strategi yang berasaskan kemerosotan rata-rata, ia mungkin sering mencetuskan isyarat berlawanan arah dalam pasaran yang sedang tren yang kuat, yang menyebabkan hentian berturut-turut. Penyelesaian: Dalam persekitaran yang sedang tren yang kuat, ia boleh melumpuhkan perdagangan berlawanan arah atau menambah syarat penapis.

  2. Kepekaan ParameterPrestasi strategi sangat bergantung kepada beberapa parameter utama, seperti kelipatan perbezaan piawai, saiz hentian dan nilai terhad kekuatan isyarat. Penyelesaian: melakukan pengoptimuman parameter yang komprehensif dan analisis sensitiviti untuk mencari set parameter yang mantap dalam keadaan pasaran yang berbeza.

  3. Kekurangan penapisan masaStrategi tidak mengambil kira ciri-ciri masa perdagangan, yang mungkin menghasilkan isyarat yang salah pada masa-masa yang sangat bergolak seperti pasaran terbuka atau ditutup. Penyelesaian: Tambah penapis masa untuk mengelakkan perdagangan pada masa pasaran tertentu.

  4. Risiko Hentian TetapPenyelesaian: Pertimbangkan untuk menggunakan Hentian Dinamik berdasarkan ATR untuk menyesuaikan Hentian dengan turun naik pasaran semasa.

  5. Kekurangan penapis jumlah transaksiStrategi: Walaupun menggunakan VWAP, tidak ada penapisan langsung terhadap persekitaran jumlah transaksi yang rendah, yang boleh menyebabkan isyarat yang tidak boleh dipercayai apabila kurangnya kecairan. Penyelesaian: Tambah syarat penurunan nilai transaksi, memastikan perdagangan hanya dalam persekitaran yang cukup cair.

  6. Masa untuk keluar dengan selamatPenyelesaian: Pertimbangkan mekanisme keluar selamat yang dinamik yang digabungkan dengan amplitudo turun naik harga dan bilangan tiang.

Arah pengoptimuman strategi

Berdasarkan analisis kod, berikut adalah arah pengoptimuman yang mungkin:

  1. Perkalian bias dinamikStrategi semasa menggunakan perbezaan piawai 2 kali ganda yang tetap sebagai syarat pencetus. Anda boleh mempertimbangkan untuk menyesuaikan perkalian ini mengikut dinamik turun naik pasaran, menggunakan perkalian yang lebih besar di pasaran turun naik yang tinggi, dan menggunakan perkalian yang lebih kecil di pasaran turun naik yang rendah, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  2. Menambah penapis masaMeneroka tempoh masa tertentu untuk penapisan dagangan, mengelakkan pergerakan yang tidak menentu seperti waktu buka, tutup dan waktu makan tengah hari, atau fokus pada masa dagangan yang berkesan.

  3. Analisis struktur pasaran bersepaduAnalisis trend pada bingkai masa yang lebih tinggi, hanya berdagang di arah yang selaras dengan trend yang lebih besar, atau menggunakan syarat penapisan yang lebih ketat pada isyarat anti-trend.

  4. Memperbaiki mekanisme keluar selamat: Keluar keselamatan semasa berdasarkan jumlah tetap bentuk tiang terbalik. Keluar boleh dipertimbangkan dalam kombinasi dengan amplitudo pergerakan harga, seperti apabila harga menarik balik melebihi peratusan tertentu pergerakan paling menguntungkan selepas masuk.

  5. Memastikan jumlah transaksi: Apabila isyarat masuk terbentuk, tambah syarat pengesahan jumlah urus niaga, memastikan isyarat disertai dengan penyertaan pasaran yang mencukupi, meningkatkan kebolehpercayaan isyarat.

  6. Menerapkan pengurusan hentian kerugian dinamik: menggantikan stop loss dengan stop loss dinamik berasaskan ATR, atau mewujudkan fungsi stop loss bergerak untuk melindungi keuntungan yang telah diperoleh.

  7. Menambah penapis keuntungan berbanding kerugianSebelum masuk, kiralah nisbah sasaran dan hentian yang berpotensi, dan lakukan hanya dagangan yang mempunyai nisbah keuntungan dan kerugian yang mencukupi.

  8. Penyatuan kesan musim dan kalendar: menganalisis dan memanfaatkan corak musim dan kesan kalendar di pasaran tertentu untuk meningkatkan dagangan pada masa yang lebih baik secara statistik, atau mengurangkan dagangan pada masa yang kurang baik.

Pengoptimuman ini dapat meningkatkan kestabilan dan keuntungan strategi, terutamanya kesesuaian dalam keadaan pasaran yang berbeza.

ringkaskan

Strategi perdagangan VWAP dengan penapisan bias dan turun naik adalah sistem perdagangan dalam hari yang direka dengan baik yang menggabungkan beberapa konsep penting dalam analisis teknikal. Ia menggunakan VWAP sebagai titik rujukan pusat harga, mengira band bias melalui perbezaan piawai, dan menangkap peluang perdagangan apabila harga bangkit dari kawasan ini.

Walaupun terdapat beberapa risiko yang berpotensi, seperti risiko pembalikan dan kepekaan parameter dalam pasaran yang kuat, ini dapat dikurangkan dengan pengoptimuman lebih lanjut. Arah pengoptimuman termasuk penggandaan band bias yang disesuaikan secara dinamik, penapis masa tambahan, analisis bingkai masa yang lebih tinggi dan pengurusan hentian yang lebih baik.

Secara keseluruhannya, ini adalah satu kerangka strategi asas yang kukuh yang sesuai untuk peniaga yang berpengalaman untuk disesuaikan dan diperbaiki lagi. Dengan pengoptimuman untuk pasaran dan gaya perdagangan tertentu, ia mempunyai potensi untuk menjadi alat perdagangan harian yang boleh dipercayai, terutamanya dalam persekitaran pasaran yang tidak menentu dan mempunyai trend pulangan nilai.

Kod sumber strategi
/*backtest
start: 2025-03-30 00:00:00
end: 2025-03-31 20:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("VWAP Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=2000)

// === Inputs ===
src = input.source(hlc3, "Source")
stopPoints = input.float(20.0, "Stop Buffer (Points from Signal Bar High/Low)", step=0.25)

exitModeLong = input.string("VWAP", "Long Exit Rule", options=["VWAP", "Deviation Band", "None"])
exitModeShort = input.string("VWAP", "Short Exit Rule", options=["VWAP", "Deviation Band", "None"])
targetLongDeviation = input.float(2.0, "Long Target Deviation", step=0.1)
targetShortDeviation = input.float(2.0, "Short Target Deviation", step=0.1)

enableSafetyExit = input.bool(true, "Enable Safety Exit")
numOpposingBars = input.int(3, "Opposing Bars for Safety Exit", minval=1)

allowLongs = input.bool(true, "Allow Long Trades")
allowShorts = input.bool(true, "Allow Short Trades")

minStrength = input.float(0.7, "Minimum Signal Strength (0-1)", step=0.05)

showVWAP = input.bool(true, "Show VWAP")
showBands = input.bool(true, "Show Entry Bands")
showLowVolZones = input.bool(true, "Highlight Low Vol Zones")

// === VWAP Session Logic ===
var float sumSrc = na
var float sumVol = na
var float sumSrcSqVol = na

newSession = ta.change(time("D"))
if newSession or na(sumSrc)
    sumSrc := 0.0
    sumVol := 0.0
    sumSrcSqVol := 0.0

sumSrc += src * volume
sumVol += volume
sumSrcSqVol += math.pow(src, 2) * volume

vwap = sumSrc / sumVol
variance = (sumSrcSqVol / sumVol) - math.pow(vwap, 2)
stdev = math.sqrt(variance)

// === Deviation Bands ===
bandEntryMult = 2.0
entryUpper = vwap + stdev * bandEntryMult
entryLower = vwap - stdev * bandEntryMult

targetUpperLong = vwap + stdev * targetLongDeviation
targetLowerShort = vwap - stdev * targetShortDeviation

// === ATR-Based Volatility Filter ===
atrVal = ta.atr(14)
isVolTooLow = stdev * 2 < atrVal * 3
bgcolor(showLowVolZones and isVolTooLow ? color.new(color.orange, 85) : na, title="Low Volatility Zone")

// === Signal Strength Calculations ===
barRange = high - low
bullStrength = barRange > 0 ? (close - low) / barRange : 0
bearStrength = barRange > 0 ? (high - close) / barRange : 0

// === Entry Triggers with Strength Filter ===
isH1H2 = open < entryLower and close > entryLower and bullStrength >= minStrength
isL1L2 = open > entryUpper and close < entryUpper and bearStrength >= minStrength

plotshape(isH1H2, title="H1/H2", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.tiny)
plotshape(isL1L2, title="L1/L2", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)

// === Signal Bar Stop Tracking ===
var float signalLow = na
var float signalHigh = na

// === Entry Logic ===
longCondition = allowLongs and isH1H2 and strategy.position_size == 0 and not isVolTooLow
shortCondition = allowShorts and isL1L2 and strategy.position_size == 0 and not isVolTooLow

if longCondition
    strategy.entry("Long", strategy.long)
    signalLow := low

if shortCondition
    strategy.entry("Short", strategy.short)
    signalHigh := high

// === Reset Signal Bar Info
if strategy.position_size == 0
    signalLow := na
    signalHigh := na

// === Apply Signal-Bar-Based Stop
if strategy.opentrades > 0
    if strategy.position_size > 0 and not na(signalLow)
        strategy.exit("Long SL", from_entry="Long", stop=signalLow - stopPoints)
    if strategy.position_size < 0 and not na(signalHigh)
        strategy.exit("Short SL", from_entry="Short", stop=signalHigh + stopPoints)

// === Target Exits (Independent per side)
exitLongVWAP = strategy.position_size > 0 and exitModeLong == "VWAP" and high >= vwap
exitLongDev  = strategy.position_size > 0 and exitModeLong == "Deviation Band" and high >= targetUpperLong
exitShortVWAP = strategy.position_size < 0 and exitModeShort == "VWAP" and low <= vwap
exitShortDev  = strategy.position_size < 0 and exitModeShort == "Deviation Band" and low <= targetLowerShort

if exitModeLong != "None" and (exitLongVWAP or exitLongDev)
    strategy.close("Long", comment="Target Exit")

if exitModeShort != "None" and (exitShortVWAP or exitShortDev)
    strategy.close("Short", comment="Target Exit")

// === Safety Exit
bullishBar(i) => close[i] > open[i]
bearishBar(i) => close[i] < open[i]

bullCount = 0
bearCount = 0
for i = 0 to numOpposingBars - 1
    bullCount += bullishBar(i) ? 1 : 0
    bearCount += bearishBar(i) ? 1 : 0

exitSafetyLong = enableSafetyExit and strategy.position_size > 0 and bearCount == numOpposingBars
exitSafetyShort = enableSafetyExit and strategy.position_size < 0 and bullCount == numOpposingBars

if exitSafetyLong
    strategy.close("Long", comment="Safety Exit")

if exitSafetyShort
    strategy.close("Short", comment="Safety Exit")

// === Plotting ===
plot(showVWAP ? vwap : na, color=color.blue, title="VWAP")
pUpper = plot(showBands ? entryUpper : na, color=color.green, title="Upper Entry Band")
pLower = plot(showBands ? entryLower : na, color=color.red, title="Lower Entry Band")
fill(pUpper, pLower, color=color.new(color.gray, 85))