Strategi Perdagangan VWAP Deviation Bands dan Volatility Filter

VWAP ATR 偏差带 波动性过滤
Tanggal Pembuatan: 2025-04-07 11:57:02 Akhirnya memodifikasi: 2025-04-07 11:57:10
menyalin: 0 Jumlah klik: 510
2
fokus pada
319
Pengikut

Strategi Perdagangan VWAP Deviation Bands dan Volatility Filter Strategi Perdagangan VWAP Deviation Bands dan Volatility Filter

Ringkasan

Strategi perdagangan VWAP bias band dengan filter volatilitas adalah sistem perdagangan intraday yang didasarkan pada rata-rata bobot volume transaksi (VWAP) dan saluran defisit standar. Strategi ini menggunakan VWAP sebagai titik acuan pusat untuk harga, menggabungkan H1/H2 dan L1/L2 reversal Al Brooks, dan memfilterkan lingkungan yang kurang volatile melalui filter volatilitas ATR untuk membentuk kerangka keputusan perdagangan yang terstruktur. Strategi ini masuk ke dalam waktu kembali setelah harga melewati saluran defisit standar, sambil mengatur stop loss dan beberapa cara keuntungan yang fleksibel berdasarkan pola sinyal, termasuk VWAP reversal dan bias band target.

Prinsip Strategi

Prinsip-prinsip inti dari strategi ini didasarkan pada beberapa komponen utama:

  1. Penghitungan VWAP untuk setiap hari transaksi: Mengatur ulang perhitungan VWAP pada awal setiap hari perdagangan, memastikan titik acuan harga terkait erat dengan aktivitas perdagangan hari itu. Strategi menggunakan standar spread untuk membuat band volatilitas di atas dan di bawah VWAP, dengan default 2 kali standar spread.

  2. Menyalakan sinyal masuk

    • Multicore entry ((H1/H2): Ketika harga buka di bawah 2 kali defisiensi standar, tetapi ditutup di atas defisiensi ini, dengan intensitas yang cukup ((dihitung oleh posisi tutup dalam bar).
    • Masuk kosong ((L1/L2): ketika harga buka lebih tinggi dari 2 kali band defisiensi standar di atas, tetapi tutup di bawah band defisiensi ini, sekaligus memiliki kekuatan kosong yang cukup.
  3. Filter fluktuasi

    • Mengukur volatilitas pasar dengan ATR 14
    • Melewatkan sinyal perdagangan saat standar deviasi terlalu kecil (< 3x ATR) untuk menghindari kesalahan masuk dalam lingkungan yang rendah
  4. Pengaturan Stop Loss

    • Multihead: titik rendah tiang sinyal dikurangi zona penangguhan
    • Kepala kosong: titik tinggi tiang sinyal ditambah zona penyangga
  5. Strategi untuk memenangkan pertandingan

    • Logika yang berbeda dapat dikonfigurasi secara independen untuk arah multi ruang
    • Opsi termasuk: kembali ke VWAP, mencapai target band deviasi tertentu, atau menonaktifkan keuntungan otomatis
  6. Mekanisme Keluar Aman

    • Mencetak aman keluar ketika jumlah yang ditentukan dari reverse column muncul secara berurutan
    • Multicap: X batang vagina berturut-turut
    • Kepala kosong: X tiang matahari berturut-turut

Strategi ini mengimplementasikan satu set lengkap mekanisme komputasi intensitas sinyal untuk menilai kualitas setiap sinyal dengan menghitung posisi relatif dari harga penutupan dalam kisaran tinggi dan rendah. Sinyal masuk hanya akan dianggap valid jika intensitas sinyal mencapai batas minimum (default 0.7).

Keunggulan Strategis

Strategi ini memiliki keuntungan yang signifikan sebagai berikut:

  1. Masuk berdasarkan struktur pasarStrategi ini tidak hanya menelusuri pergerakan harga, tetapi juga mencari bentuk-bentuk reversal tertentu di sekitar zona deviasi, yang berarti bahwa perdagangan dilakukan sesuai dengan keunggulan statistik dari nilai rata-rata yang kembali.

  2. Mekanisme multi-filterDengan filter volatilitas, persyaratan intensitas sinyal, dan pola harga tertentu, sinyal perdagangan yang disaring secara bertingkat, mengurangi sinyal yang menyesatkan secara signifikan.

  3. Manajemen risiko yang fleksibelStrategi ini menyediakan berbagai alat pengendalian risiko, termasuk stop loss yang ketat berdasarkan sinyal pilar, target keuntungan yang dapat disesuaikan, dan mekanisme keluar yang aman, yang memungkinkan pedagang untuk menyesuaikan parameter risiko sesuai dengan kondisi pasar yang berbeda.

  4. Konfigurasi multi-ruang independenStrategi ini memungkinkan trader untuk mengkonfigurasi secara independen kondisi masuk dan keluar dari perdagangan multihead dan headless, yang sangat berharga untuk mengoptimalkan kinerja di pasar yang memiliki preferensi arah.

  5. Bantuan visualStrategi ini mencakup banyak pilihan visualisasi seperti VWAP, bias band display dan low volatility area highlight, untuk membantu trader memahami kondisi pasar dan sinyal potensial dengan lebih intuitif.

  6. Sesi dijadwalkan VWAPVWAP dihitung kembali setiap hari perdagangan untuk memastikan bahwa titik acuan harga selalu relevan dengan aktivitas pasar saat ini, dan menghindari masalah dengan titik acuan usang.

  7. Menekankan kualitas sinyalStrategi berfokus pada sinyal reversal berkualitas tinggi, bukan hanya pada persilangan mekanik antara harga dan band defisit.

Risiko Strategis

Meskipun strategi ini dirancang dengan baik, ada beberapa risiko potensial:

  1. Risiko Kebalikan di PasarSebagai strategi yang didasarkan pada kemunduran rata-rata, mungkin sering memicu sinyal berlawanan di pasar tren yang kuat, yang menyebabkan stop loss berturut-turut. Solusi: Dalam lingkungan tren yang kuat, Anda dapat menonaktifkan perdagangan berlawanan arah atau menambahkan kondisi penyaringan.

  2. Parameter SensitivitasPerforma strategi sangat bergantung pada beberapa parameter kunci, seperti kelipatan standar, ukuran stop loss, dan sinyal intensitas. Solusi: melakukan optimasi parameter yang komprehensif dan analisis sensitivitas untuk menemukan set parameter yang kuat dalam berbagai kondisi pasar.

  3. Kurangnya Filter WaktuStrategi ini tidak mempertimbangkan karakteristik jam perdagangan, yang dapat menghasilkan sinyal yang menyesatkan pada saat volatilitas pasar yang sangat tinggi seperti buka atau tutup pasar. Solusi: Tambahkan filter waktu untuk menghindari perdagangan pada jam pasar tertentu.

  4. Stop loss tetapSolusi: Pertimbangkan untuk menggunakan stop loss dinamis berbasis ATR, sehingga stop loss sesuai dengan volatilitas pasar saat ini.

  5. Kurangnya filter volume transaksiStrategi: Meskipun menggunakan VWAP, tidak ada penyaringan langsung untuk lingkungan volume transaksi yang rendah, yang dapat menyebabkan sinyal yang tidak dapat diandalkan jika tidak ada likuiditas yang cukup. Solusi: Tambahkan kondisi penurunan volume transaksi untuk memastikan bahwa Anda hanya berdagang di lingkungan yang cukup likuid.

  6. Waktu untuk Keluar AmanSolusi: Pertimbangkan mekanisme penarikan diri yang dinamis yang menggabungkan amplitudo fluktuasi harga dengan jumlah pilar.

Arah optimasi strategi

Berdasarkan analisis kode, berikut adalah beberapa kemungkinan optimasi:

  1. Perkalian dengan defisiensi dinamis: Strategi saat ini menggunakan standar standar standar 2 kali lipat yang tetap sebagai kondisi pemicu masuk. Anda dapat mempertimbangkan untuk menyesuaikan kelipatan ini sesuai dengan dinamika volatilitas pasar, menggunakan kelipatan yang lebih besar di pasar yang berfluktuasi tinggi, menggunakan kelipatan yang lebih kecil di pasar yang berfluktuasi rendah, untuk menyesuaikan diri dengan lingkungan pasar yang berbeda.

  2. Menambahkan filter waktuFilter perdagangan untuk periode waktu tertentu, menghindari periode ketidakstabilan pasar seperti pembukaan, penutupan, dan jam makan siang, atau fokus pada periode perdagangan yang efisien.

  3. Analisis struktur pasar yang terintegrasiAnalisis tren pada kerangka waktu yang lebih tinggi: hanya berdagang di arah yang konsisten dengan tren yang lebih besar, atau menggunakan kondisi penyaringan yang lebih ketat pada sinyal kontra-trend.

  4. Optimalkan mekanisme keluar aman: Keluar aman saat ini didasarkan pada jumlah tetap dari pilar terbalik. Keluar dapat dipertimbangkan dalam kombinasi dengan amplitudo pergerakan harga, seperti ketika harga mundur melebihi persentase tertentu dari pergerakan paling menguntungkan setelah masuk.

  5. Menambahkan konfirmasi volume transaksi: Pada saat sinyal masuk terbentuk, tambahkan kondisi konfirmasi volume transaksi, memastikan sinyal disertai dengan keterlibatan pasar yang cukup, meningkatkan keandalan sinyal.

  6. Mengimplementasikan Manajemen Stop Loss Dinamis: Mengganti stop loss dengan stop loss dinamis berbasis ATR, atau mengimplementasikan stop loss mobile untuk melindungi keuntungan yang telah diperoleh.

  7. Tambahkan Filter Keuntungan-KehilanganPerhitungan rasio potensi target dan stop loss sebelum masuk, hanya melakukan perdagangan yang memiliki rasio untung / rugi yang cukup.

  8. Integrasi efek musiman dan kalenderAnalisis dan memanfaatkan pola musiman dan efek kalender dari pasar tertentu untuk meningkatkan perdagangan pada periode yang lebih menguntungkan secara statistik atau mengurangi perdagangan pada periode yang tidak menguntungkan.

Pengoptimalan ini dapat meningkatkan keandalan dan profitabilitas strategi, terutama adaptasi dalam berbagai kondisi pasar.

Meringkaskan

Strategi perdagangan VWAP dengan band defisit dan filter volatilitas adalah sistem perdagangan intraday yang dirancang dengan baik yang menggabungkan beberapa konsep kunci dalam analisis teknis. Ini menggunakan VWAP sebagai titik referensi pusat harga, menghitung band defisit melalui standar deviasi, dan menangkap peluang perdagangan ketika harga melesat dari zona band ini.

Meskipun ada beberapa risiko potensial, seperti risiko reversal dan sensitivitas parameter di pasar tren yang kuat, ini dapat diatasi dengan optimasi lebih lanjut. Arah optimasi meliputi penyesuaian dinamika deviasi ganda, penambahan filter waktu, integrasi analisis kerangka waktu yang lebih tinggi, dan pengelolaan stop loss yang lebih baik.

Secara keseluruhan, ini adalah kerangka strategi dasar yang solid yang cocok untuk penyesuaian dan perbaikan lebih lanjut oleh pedagang berpengalaman. Dengan pengoptimalan untuk pasar dan gaya perdagangan tertentu, ini memiliki potensi untuk menjadi alat perdagangan intraday yang andal, terutama dalam lingkungan pasar yang berfluktuasi dan dengan tren mundur rata-rata.

Kode 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))