Chiến lược dừng lỗ và lấy lợi nhuận năng động dựa trên VWAP và tín hiệu khung thời gian chéo

Tác giả:ChaoZhang, Ngày: 2024-03-08 17:37:21
Tags:

img

Tổng quan

Chiến lược này sử dụng VWAP (Volume Weighted Average Price) từ khung thời gian hàng ngày như một tín hiệu để vào và ra khỏi giao dịch. Khi giá đóng vượt trên VWAP, nó kích hoạt một bước vào dài với mức dừng lỗ được đặt ở mức thấp nhất của nến trước đó nếu nó nằm dưới VWAP, và giá mục tiêu được đặt 3 điểm trên giá nhập. Ngược lại, khi giá đóng vượt dưới VWAP, nó kích hoạt một bước vào ngắn với mức dừng lỗ được đặt ở mức cao nhất của nến trước đó nếu nó nằm trên VWAP, và giá mục tiêu được đặt 3 điểm dưới giá nhập. Chiến lược này không bao gồm điều kiện thoát, vì vậy các giao dịch vẫn mở cho đến khi tín hiệu đối lập xảy ra.

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

  1. Nhận dữ liệu VWAP từ khung thời gian hàng ngày, phục vụ như là cơ sở để xác định xu hướng và tín hiệu giao dịch.
  2. Xác định xem giá đóng cửa hiện tại có vượt trên/dưới VWAP không, hoạt động như là kích hoạt cho các mục dài và ngắn, tương ứng.
  3. Đối với các mục nhập dài, nếu mức thấp của nến trước đó thấp hơn VWAP, nó được sử dụng làm điểm dừng lỗ; nếu không, chính VWAP được sử dụng.
  4. Sau khi nhập vào một vị trí, thiết lập một mức lợi nhuận cố định 3 điểm.
  5. Chiến lược tiếp tục chạy cho đến khi một tín hiệu ngược kích hoạt vị trí để đóng và mở một vị trí mới.

Bằng cách sử dụng dữ liệu VWAP xuyên khung thời gian để xác định xu hướng và tận dụng các lỗ dừng động và lợi nhuận lấy điểm cố định, chiến lược có thể nắm bắt hiệu quả thị trường xu hướng, kiểm soát rủi ro rút tiền và khóa lợi nhuận kịp thời.

Phân tích lợi thế

  1. Tính đơn giản và hiệu quả: Logic chiến lược rõ ràng, chỉ sử dụng chỉ số VWAP để xác định xu hướng và kích hoạt tín hiệu, làm cho nó đơn giản để thực hiện và tối ưu hóa.
  2. Động thái dừng lỗ: Bằng cách đặt dừng lỗ dựa trên giá cao hoặc thấp của nến trước đó, chiến lược thích nghi tốt hơn với biến động thị trường và giảm rủi ro.
  3. Lợi nhuận cố định: Đặt giá mục tiêu với một số điểm cố định giúp khóa lợi nhuận ngay lập tức và tránh xói mòn lợi nhuận.
  4. Dừng lỗ kịp thời và lấy lợi nhuận: Chiến lược ngay lập tức đóng vị trí khi một tín hiệu ngược được kích hoạt, ngăn ngừa tổn thất bổ sung trên lợi nhuận hiện có. Nó cũng mở một vị trí mới để nắm bắt các động thái xu hướng mới.

Phân tích rủi ro

  1. Tối ưu hóa tham số: Chiến lược sử dụng 3 điểm cố định để kiếm lợi nhuận, có thể yêu cầu tối ưu hóa dựa trên các công cụ và đặc điểm thị trường khác nhau để chọn các tham số tối ưu cho giao dịch thực tế.
  2. Thị trường hỗn loạn: Trong điều kiện thị trường hỗn loạn, việc gia nhập và thoát thường xuyên có thể dẫn đến chi phí giao dịch cao hơn, ảnh hưởng đến lợi nhuận.
  3. Tính bền vững của xu hướng: Chiến lược dựa trên thị trường xu hướng. Nếu thị trường bị giới hạn trong phạm vi hoặc thiếu tính bền vững của xu hướng, có thể có nhiều tín hiệu giao dịch hơn được tạo ra, giới thiệu rủi ro nhiều hơn.

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

  1. Quét xu hướng: Kết hợp các chỉ số xu hướng khác như đường trung bình động, MACD, v.v., để xác nhận xu hướng và cải thiện độ tin cậy tín hiệu.
  2. Lợi nhuận năng động: Điều chỉnh các điểm lợi nhuận năng động dựa trên biến động thị trường, ATR hoặc các chỉ số khác để thích nghi tốt hơn với điều kiện thị trường.
  3. Kích thước vị trí: Điều chỉnh động kích thước vị trí cho mỗi giao dịch dựa trên kích thước tài khoản, dung nạp rủi ro và các yếu tố khác.
  4. Lựa chọn phiên giao dịch: Chọn các phiên giao dịch tối ưu dựa trên các đặc điểm và tính thanh khoản của công cụ để cải thiện hiệu quả chiến lược.

Tóm lại

Chiến lược này sử dụng dữ liệu VWAP xuyên khung thời gian để xác định xu hướng và kích hoạt tín hiệu trong khi sử dụng các lỗ dừng động và lấy lợi nhuận tại điểm cố định để kiểm soát rủi ro và khóa lợi nhuận. Đây là một chiến lược giao dịch định lượng đơn giản và hiệu quả. Thông qua tối ưu hóa lọc xu hướng, lấy lợi nhuận động, kích thước vị trí và lựa chọn phiên giao dịch, tính mạnh mẽ và tiềm năng lợi nhuận của chiến lược có thể được nâng cao hơn nữa. Tuy nhiên, khi áp dụng chiến lược trong thực tế, nên chú ý đến đặc điểm thị trường, chi phí giao dịch và tối ưu hóa tham số để đạt được chiến lược hiệu suất tốt hơn.


/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))

Thêm nữa