
Ini adalah strategi perdagangan yang menyesuaikan diri berdasarkan harga purata bertimbangan kuantiti bertukar ((VWAP) dan kadar turun naik Garman-Klass ((GKV)). Strategi ini menyesuaikan gelombang standard deviasi VWAP secara dinamik dengan kadar turun naik, untuk mengesan trend pasaran secara pintar. Apabila harga membuka lebih banyak kedudukan apabila ia melintasi lintasan, dan meletakkan lebih banyak kedudukan apabila ia melintasi lintasan, semakin tinggi kadar turun naiknya dan semakin rendah kadar turun naiknya.
Strategi ini berpusat pada menggabungkan VWAP dengan kadar GKV. Pertama, VWAP dikira sebagai pusat harga, dan kemudian menggunakan perbezaan piawai harga penutupan untuk membina segmen. Kuncinya adalah menggunakan formula GKV untuk mengira kadar lonjakan, yang mempertimbangkan empat harga pembukaan dan penutupan, lebih tepat daripada kadar lonjakan tradisional.
Strategi ini mewujudkan pelacakan dinamik pasaran dengan menggabungkan inovasi kadar turun naik VWAP dan GKV. Ciri-ciri penyesuaiannya membolehkan ia mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran. Walaupun terdapat beberapa risiko yang berpotensi, dengan kawalan risiko yang munasabah dan pengoptimuman berterusan, strategi ini mempunyai prospek aplikasi yang baik.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Adaptive VWAP Bands with Garman Klass Volatility", overlay=true)
// Inputs
length = input.int(25, title="Volatility Length")
vwapLength = input.int(14, title="VWAP Length")
vol_multiplier = input.float(1,title="Volatility Multiplier")
// Function to calculate Garman-Klass Volatility
var float sum_gkv = na
if na(sum_gkv)
sum_gkv := 0.0
sum_gkv := 0.0
for i = 0 to length - 1
sum_gkv := sum_gkv + 0.5 * math.pow(math.log(high[i]/low[i]), 2) - (2*math.log(2)-1) * math.pow(math.log(close[i]/open[i]), 2)
gcv = math.sqrt(sum_gkv / length)
// VWAP calculation
vwap = ta.vwma(close, vwapLength)
// Standard deviation for VWAP bands
vwapStdDev = ta.stdev(close, vwapLength)
// Adaptive multiplier based on GCV
multiplier = (gcv / ta.sma(gcv, length)) * vol_multiplier
// Upper and lower bands
upperBand = vwap + (vwapStdDev * multiplier)
lowerBand = vwap - (vwapStdDev * multiplier)
// Plotting VWAP and bands
plot(vwap, title="VWAP", color=color.blue, linewidth=2)
plot(upperBand, title="Upper Band", color=color.green, linewidth=1)
plot(lowerBand, title="Lower Band", color=color.red, linewidth=1)
var barColor = color.black
// Strategy: Enter long above upper band, go to cash below lower band
if (close > upperBand)
barColor := color.green
strategy.entry("Long", strategy.long)
else if (close < lowerBand)
barColor := color.fuchsia
strategy.close("Long")
barcolor(barColor)