
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-prinsip utama strategi ini dibina di atas beberapa komponen utama:
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.
Isyarat pemicu masuk:
Penapis berfluktuasi:
Tetapan Stop Loss:
Strategi untuk menang:
Mekanisme Keluar Aman:
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).
Setelah menganalisis kod secara mendalam, strategi ini mempunyai kelebihan yang ketara:
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.
Mekanisme penapisan berbilangFilter Volatility, Keperluan Kekuatan Isyarat dan Bentuk Harga Khusus, Menapis Isyarat Perdagangan Berlapisan, Mengurangkan Isyarat Kesesatan
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.
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.
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.
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.
Menekankan kualiti isyaratStrategi ini memberi tumpuan kepada isyarat reversal berkualiti tinggi, bukan hanya perpaduan mekanikal antara harga dan jalur penyimpangan.
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
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.
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.
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.
Risiko Hentian TetapPenyelesaian: Pertimbangkan untuk menggunakan Hentian Dinamik berdasarkan ATR untuk menyesuaikan Hentian dengan turun naik pasaran semasa.
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.
Masa untuk keluar dengan selamatPenyelesaian: Pertimbangkan mekanisme keluar selamat yang dinamik yang digabungkan dengan amplitudo turun naik harga dan bilangan tiang.
Berdasarkan analisis kod, berikut adalah arah pengoptimuman yang mungkin:
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.
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.
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.
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.
Memastikan jumlah transaksi: Apabila isyarat masuk terbentuk, tambah syarat pengesahan jumlah urus niaga, memastikan isyarat disertai dengan penyertaan pasaran yang mencukupi, meningkatkan kebolehpercayaan isyarat.
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.
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.
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.
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.
/*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))