Đây là một chiến lược giao dịch thích nghi dựa trên giá trung bình cân nhắc khối lượng (VWAP) và biến động lớp Garman (GKV). Chiến lược điều chỉnh năng động các băng tần độ lệch chuẩn của VWAP thông qua biến động để đạt được theo dõi xu hướng thị trường thông minh. Nó mở các vị trí dài khi giá vượt qua dải trên và đóng các vị trí khi vượt qua dải dưới, với biến động cao hơn dẫn đến ngưỡng thoát cao hơn và biến động thấp hơn dẫn đến ngưỡng thấp hơn.
Cốt lõi của chiến lược kết hợp VWAP với biến động GKV. Đầu tiên nó tính toán VWAP là trục giá, sau đó xây dựng các dải bằng cách sử dụng độ lệch chuẩn của giá đóng. Chìa khóa là sử dụng công thức GKV để tính toán biến động, xem xét bốn điểm giá (mở, cao, thấp, đóng) và chính xác hơn các biện pháp biến động truyền thống.
Chiến lược đạt được theo dõi thị trường năng động thông qua sự kết hợp sáng tạo của biến động VWAP và GKV. Bản chất thích nghi của nó cho phép hiệu suất ổn định trong các môi trường thị trường khác nhau. Mặc dù có một số rủi ro tiềm ẩn, chiến lược cho thấy triển vọng ứng dụng tốt thông qua kiểm soát rủi ro thích hợp và tối ưu hóa liên tục.
/*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)