Chiến lược giao dịch VWAP dựa trên kênh giá


Ngày tạo: 2024-02-19 14:25:18 sửa đổi lần cuối: 2024-02-19 14:25:18
sao chép: 0 Số nhấp chuột: 782
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch VWAP dựa trên kênh giá

Tổng quan

Chiến lược này được gọi là Chiến lược giao dịch VWAP kênh giá, nó là một chiến lược dựa trên kênh giá để thực hiện giao dịch VWAP. Ý tưởng chính của chiến lược này là: trong kênh giá, sử dụng đường trung bình của chỉ số VWAP và đường trung bình di chuyển lên xuống để đánh giá điểm mua và bán, mở vị trí theo tỷ lệ phần trăm tổng tài sản của vị trí cố định khi phá vỡ đường kênh và đóng cửa khi quay trở lại đường trung bình VWAP.

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

Chiến lược này tính giá giao dịch trung bình với giá hiện tại thông qua chỉ số VWAP. VWAP đại diện cho giá trung bình, là tỷ lệ giữa giá giao dịch và khối lượng giao dịch. Chỉ số VWAP phản ánh mức độ lệch giữa giá hiện tại và giá giao dịch trung bình trong lịch sử.

Chiến lược sử dụng đường trung bình của chỉ số VWAP và đường dẫn lệch của nó. Tỷ lệ đường dẫn lệch được thiết lập thông qua các tham số longlevel1 và shortlevel1. Khi giá phá vỡ đường dẫn lệch trên, mở nhiều lệnh theo tỷ lệ vị trí của tham số lotsizelong; Khi giá phá vỡ đường dẫn lệch dưới, mở nhiều lệnh theo tỷ lệ vị trí của tham số lotsizeshort.

Cài đặt tham số của chiến lược này phản ánh đầy đủ ý tưởng về giao dịch kênh. Người dùng có thể điều chỉnh chiều rộng kênh và kích thước tỷ lệ vị trí tùy theo sở thích của mình, để đạt được mức độ giao dịch khác nhau.

Phân tích lợi thế

Chiến lược giao dịch này có một số ưu điểm:

  1. Sử dụng chỉ số VWAP để đánh giá trung tâm giá trị, có thể nắm bắt được xu hướng của thị trường
  2. Giao dịch trong phạm vi đường dẫn, tránh nhiễu tiếng ồn, làm cho hoạt động rõ ràng hơn
  3. Hoạt động kết hợp các kênh ở nhiều cấp độ, triển khai từng bước theo từng đợt, giảm rủi ro
  4. Hoạt động quay trở lại dừng lại kịp thời, tránh thiệt hại do quay trở lại nhanh

Vì chỉ số VWAP có thể phản ánh tốt mức trung bình của giá, giao dịch dựa trên đường dẫn của nó, có thể khóa trung tâm giá trị một cách hiệu quả và tránh bị lệch bởi vùng dao động ngắn hạn. Đồng thời, sử dụng các kênh tham số khác nhau để kết hợp, xây dựng kho hàng loạt, có thể kiểm soát rủi ro một cách hiệu quả và ngăn chặn rủi ro đơn phương tập trung vào vị trí bùng nổ. Cuối cùng, bằng cách dừng lại kịp thời để trở lại vị trí yên bình gần đường trung bình VWAP, bạn có thể giảm thiểu thiệt hại do giá đảo ngược.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro cần lưu ý:

  1. Chỉ số VWAP không nhạy cảm với giao dịch tần số cao, không thể phản ánh bất thường giá cực đoan
  2. Cài đặt tham số chiều rộng kênh không đúng có thể dẫn đến giao dịch quá mạnh
  3. Quay trở lại phạm vi lỗ hổng nếu quá rộng

Chỉ số VWAP không nhạy cảm với biến động giao dịch tần số cao, nếu gặp phải giá nhảy vọt cực đoan hoặc bất thường trong thời gian ngắn, nó vẫn sẽ gây ra tín hiệu giao dịch và tổn thất không cần thiết. Ngoài ra, nếu tham số kênh được đặt quá thoải mái, nó có thể dễ dàng tạo ra tín hiệu không hiệu quả. Cuối cùng, nếu thiết lập quá rộng, bạn có thể bỏ lỡ thời gian dừng tối ưu và gây thiệt hại.

Phản ứng là thiết lập tham số đánh giá hợp lý, điều chỉnh tham số kênh một cách thích hợp; đồng thời kết hợp với các chỉ số khác để đánh giá giá bất thường, tránh theo dõi mù quáng; cuối cùng đánh giá tối ưu hóa tham số của các cấp kênh khác nhau và phạm vi trở lại, để đạt được hiệu quả ngăn chặn tốt hơn.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tăng tầng của kênh, tối ưu hóa các tham số
  2. Tính hiệu quả của đột phá kết hợp với số lượng giao dịch
  3. Tăng chiến lược dừng lỗ, thiết lập tỷ lệ rút lỗ

Bạn có thể thêm nhiều lớp đường dẫn và tối ưu hóa các tham số kết hợp để đạt được hiệu quả giao dịch ổn định hơn. Ngoài ra, bạn có thể thêm quy tắc phán đoán khối lượng giao dịch để tránh giá nhảy vọt không hiệu quả gây ra tổn thất giao dịch. Cuối cùng, bạn cũng có thể thiết lập quy tắc dừng lỗ, dừng lỗ khi lỗ giữ vị trí đạt đến một tỷ lệ nhất định, kiểm soát rủi ro hiệu quả.

Tóm tắt

Chiến lược này kết hợp chỉ số VWAP với kênh giá, để thực hiện một chiến lược giao dịch tương đối ổn định. Các tham số của chiến lược được thiết lập linh hoạt, người dùng có thể điều chỉnh theo sở thích của riêng mình. Chiến lược này có thể xác định hiệu quả hướng trung tâm của giá trị, thông qua các tham số kết hợp và xây dựng kho hàng loạt, để đạt được hiệu quả lợi nhuận ổn định. Mặc dù chiến lược cũng có một số không gian cải tiến, nhưng nói chung là một chiến lược giao dịch định lượng mạnh mẽ.

Mã nguồn chiến lược
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %")
lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
shortlevel1 = input(1.0, title = "Short line 1")
longlevel1 = input(-1.0, title = "Long line 1")
needoffset = input(true, title = "Offset")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
truetime = true

//VWAP
ma = vwap(hlc3)

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close


//Lines
colorlong1 = long1 ? color.lime : na
colorshort1 = short1 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")


//Trading
lotlong = 0.0
lotshort = 0.0
lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1]
lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1]


if ma > 0
    if lotlong > 0
        lotslong = 0.0
        lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0
        strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime))
    if lotshort > 0
        lotsshort = 0.0
        lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0
        strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime))
if strategy.position_size > 0
    strategy.exit("TPL", "L1", limit = ma)
if strategy.position_size < 0
    strategy.exit("TPS", "S1", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("S1")
    strategy.cancel("TPL")
    strategy.cancel("TPS")