Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch đột phá VWAP

Tác giả:ChaoZhang, Ngày: 2025-01-06 16:31:36
Tags:VWAPSDVOLHL2

img

Tổng quan

Chiến lược này là một hệ thống đột phá xu hướng dựa trên VWAP (Giá trung bình cân nhắc khối lượng) và các kênh sai lệch tiêu chuẩn. Nó xây dựng một phạm vi giá năng động bằng cách tính toán VWAP và dải sai lệch tiêu chuẩn để nắm bắt các cơ hội đột phá tăng. Chiến lược chủ yếu dựa trên các tín hiệu đột phá dải sai lệch tiêu chuẩn để giao dịch, với mục tiêu lợi nhuận và khoảng thời gian đặt hàng để kiểm soát rủi ro.

Nguyên tắc chiến lược

  1. Tính toán chỉ số cốt lõi:
  • Tính toán VWAP bằng cách sử dụng giá và khối lượng HL2 trong ngày
  • Tính toán độ lệch chuẩn dựa trên biến động giá
  • Đặt 1,28 lần độ lệch chuẩn trên và dưới các dải
  1. Logic giao dịch:
  • Điều kiện nhập cảnh: giá vượt dưới dải dưới và sau đó tăng trên nó
  • Điều kiện thoát: đạt được mục tiêu lợi nhuận được đặt trước
  • Khoảng thời gian giao dịch tối thiểu để tránh giao dịch thường xuyên

Ưu điểm chiến lược

  1. Cơ sở thống kê
  • Đề xuất trung tâm giá dựa trên VWAP
  • Đo độ biến động bằng cách sử dụng độ lệch chuẩn
  • Điều chỉnh phạm vi giao dịch năng động
  1. Kiểm soát rủi ro
  • Đặt mục tiêu lợi nhuận cố định
  • Kiểm soát tần số giao dịch
  • Chiến lược chỉ dài hạn làm giảm rủi ro

Rủi ro chiến lược

  1. Rủi ro thị trường
  • Các vụ phá vỡ giả trong thời điểm biến động cao
  • Khó khăn trong thời gian chính xác đảo ngược xu hướng
  • Tăng lỗ trên thị trường xu hướng giảm
  1. Rủi ro tham số
  • Độ nhạy với các thiết lập nhân độ lệch chuẩn
  • Cần tối ưu hóa mục tiêu lợi nhuận
  • Khoảng thời gian giao dịch ảnh hưởng đến hiệu suất

Hướng dẫn tối ưu hóa

  1. Tối ưu hóa tín hiệu
  • Thêm bộ lọc xu hướng
  • Bao gồm xác nhận thay đổi khối lượng
  • Bao gồm các chỉ số kỹ thuật bổ sung
  1. Tối ưu hóa quản lý rủi ro
  • Đặt lệnh dừng lỗ động
  • Định giá vị trí dựa trên sự biến động
  • Hệ thống quản lý đơn đặt hàng nâng cao

Tóm lại

Đây là một chiến lược giao dịch định lượng kết hợp các nguyên tắc thống kê và phân tích kỹ thuật. Thông qua sự kết hợp của VWAP và băng tần lệ lệch chuẩn, nó xây dựng một hệ thống giao dịch tương đối đáng tin cậy.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("VWAP Stdev Bands Strategy (Long Only)", overlay=true)

// Standard Deviation Inputs
devUp1 = input.float(1.28, title="Stdev above (1)")
devDn1 = input.float(1.28, title="Stdev below (1)")

// Show Options
showPrevVWAP = input(false, title="Show previous VWAP close?")
profitTarget = input.float(2, title="Profit Target ($)", minval=0) // Profit target for closing orders
gapMinutes = input.int(15, title="Gap before new order (minutes)", minval=0) // Gap for placing new orders

// VWAP Calculation
var float vwapsum = na
var float volumesum = na
var float v2sum = na
var float prevwap = na // Track the previous VWAP
var float lastEntryPrice = na // Track the last entry price
var int lastEntryTime = na // Track the time of the last entry

start = request.security(syminfo.tickerid, "D", time)
newSession = ta.change(start)

vwapsum := newSession ? hl2 * volume : vwapsum[1] + hl2 * volume
volumesum := newSession ? volume : volumesum[1] + volume
v2sum := newSession ? volume * hl2 * hl2 : v2sum[1] + volume * hl2 * hl2

myvwap = vwapsum / volumesum
dev = math.sqrt(math.max(v2sum / volumesum - myvwap * myvwap, 0))

// Calculate Upper and Lower Bands
lowerBand1 = myvwap - devDn1 * dev
upperBand1 = myvwap + devUp1 * dev

// Plot VWAP and Bands with specified colors
plot(myvwap, style=plot.style_line, title="VWAP", color=color.green, linewidth=1)
plot(upperBand1, style=plot.style_line, title="VWAP Upper (1)", color=color.blue, linewidth=1)
plot(lowerBand1, style=plot.style_line, title="VWAP Lower (1)", color=color.red, linewidth=1)

// Trading Logic (Long Only)
longCondition = close < lowerBand1 and close[1] >= lowerBand1 // Price crosses below the lower band

// Get the current time in minutes
currentTime = timestamp("GMT-0", year(timenow), month(timenow), dayofmonth(timenow), hour(timenow), minute(timenow))

// Check if it's time to place a new order based on gap
canPlaceNewOrder = na(lastEntryTime) or (currentTime - lastEntryTime) >= gapMinutes * 60 * 1000

// Close condition based on profit target
if (strategy.position_size > 0)
    if (close - lastEntryPrice >= profitTarget)
        strategy.close("B")
        lastEntryTime := na // Reset last entry time after closing

// Execute Long Entry
if (longCondition and canPlaceNewOrder)
    strategy.entry("B", strategy.long)
    lastEntryPrice := close // Store the entry price
    lastEntryTime := currentTime // Update the last entry time

    // Add label for the entry
    label.new(bar_index, close, "B", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

// Optional: Plot previous VWAP for reference
prevwap := newSession ? myvwap[1] : prevwap[1]
plot(showPrevVWAP ? prevwap : na, style=plot.style_circles, color=close > prevwap ? color.green : color.red)

Có liên quan

Thêm nữa