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

Tác giả:ChaoZhang, Ngày: 2024-02-19 14:25:18
Tags:

img

Tổng quan

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

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

Chiến lược này tính toán giá giao dịch trung bình hiện tại thông qua chỉ số VWAP. VWAP đại diện cho giá trung bình và là tỷ lệ doanh thu so với 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 này sử dụng đường trung bình động của chỉ số VWAP và các đường kênh Offset của nó. Tỷ lệ của các đường kênh Offset được thiết lập thông qua các tham số longlevel1shortlevel1. Khi giá vượt qua đường kênh Offset trên, mở các vị trí dài theo tỷ lệ phần trăm các vị trí được thiết lập bởi tham số lotsizelong; khi giá vượt qua đường kênh Offset dưới, mở các vị trí ngắn theo tỷ lệ phần trăm các vị trí được thiết lập bởi tham số lotsizeshort. Sau khi mở các vị trí, chọn đóng các vị trí khi giá quay lại xung quanh đường trung bình VWAP.

Các thiết lập tham số của chiến lược này hoàn toàn phản ánh ý tưởng 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 các vị trí như một tỷ lệ phần trăm tổng tài sản theo sở thích của riêng họ, do đó nhận ra mức độ khác nhau của tần suất giao dịch.

Phân tích lợi thế

Chiến lược giao dịch này có những lợi thế sau:

  1. Sử dụng các chỉ số VWAP để xác định điểm trung bình giá trị có thể nắm bắt hướng thị trường chính
  2. Giao dịch trong phạm vi kênh tránh nhiễu nhiễu cho hoạt động rõ ràng hơn
  3. Kết hợp các kênh ở các cấp độ khác nhau, triển khai theo lô làm giảm rủi ro
  4. Lợi nhuận kịp thời bằng cách hồi quy tránh tổn thất do đảo ngược nhanh chóng

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

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 và không thể phản ánh sự bất thường về giá cực đoan
  2. Cài đặt thông số chiều rộng kênh không chính xác có thể dẫn đến giao dịch quá hung hăng
  3. Nếu phạm vi các hoạt động hồi quy để đóng các vị trí quá rộng, nó có thể gây ra tổn thất bị mắc kẹt

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

Các biện pháp đối phó là đánh giá hợp lý các thiết lập tham số và điều chỉnh các tham số kênh một cách thích hợp; trong khi kết hợp các chỉ số khác để đánh giá sự bất thường về giá và tránh các tín hiệu mù quáng; cuối cùng đánh giá tối ưu hóa tham số của các kênh ở các cấp độ và phạm vi hồi quy khác nhau để đạt được hiệu ứng thu lợi nhuận tốt hơn.

Hướng dẫn 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 mức kênh và tối ưu hóa các kết hợp tham số
  2. Kết hợp các chỉ số khối lượng giao dịch để xác định tính hợp lệ của các bước đột phá
  3. Thêm các chiến lược dừng lỗ và thiết lập tỷ lệ dừng lỗ theo tỷ lệ rút vốn

Ngoài ra, các quy tắc đánh giá khối lượng giao dịch có thể được thêm vào để tránh các khoảng cách giá không hợp lệ gây ra lỗ giao dịch. Cuối cùng, các quy tắc dừng lỗ cũng có thể được thiết lập để khi lỗ vị trí đạt một tỷ lệ phần trăm nhất định, dừng lỗ để thoát khỏi các vị trí, kiểm soát hiệu quả rủi ro.

Tóm lại

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


/*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")

Thêm nữa