
Chiến lược này là một chiến lược theo dõi xu hướng để định lượng giao dịch mua và bán vàng bằng cách tính toán các chỉ số khối lượng ròng tùy chỉnh.
Lập luận cốt lõi của chiến lược là tính toán số lượng ròng tùy chỉnh (NV) của chỉ số. Chỉ số NV được sử dụng để đánh giá xu hướng thay đổi của giá, lấy số lượng giao dịch trong ngày nếu tích cực, lấy số lượng giao dịch trong ngày nếu âm và lấy 0 nếu không có thay đổi.
Sau đó, chiến lược tính toán trung bình di chuyển đơn giản 3 ngày của chỉ số NV, tương ứng với đường giao thoa vàng và đường giao thoa chết. Khi chỉ số NV vượt qua đường giao thoa vàng từ dưới lên, làm thêm; Khi NV vượt qua đường giao thoa chết từ trên xuống, làm trống.
Ngoài ra, chiến lược cũng đặt thời gian bắt đầu tham số để kiểm soát thời gian giao dịch.
Lợi thế lớn nhất của chiến lược này là chiến lược đơn giản, rõ ràng, dễ hiểu, cài đặt tham số linh hoạt, có thể tùy chỉnh các loại giao dịch, thời gian giao dịch, v.v. Ngoài ra, chiến lược này thuộc loại chiến lược theo xu hướng, có thể nắm bắt xu hướng giá một cách hiệu quả, giảm tần suất giao dịch và có được tỷ lệ lợi nhuận cao hơn.
Chiến lược này có những rủi ro:
Theo dõi chiến lược, không thể phản ứng kịp thời với xu hướng thay đổi giá. Có thể bỏ lỡ một số cơ hội giao dịch hoặc không thể dừng lỗ kịp thời.
Các giao dịch vàng định lượng tự nó có một sự chậm trễ, có thể gây ra sự chậm trễ và mở rộng tổn thất.
Không có khả năng lọc tiếng ồn thị trường một cách hiệu quả, dễ bị lừa.
Có thể sử dụng trung bình di chuyển động để lọc các chỉ số khác để giảm nguy cơ.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tăng chiến lược dừng lỗ, kiểm soát tổn thất đơn lẻ bằng cách sử dụng dừng di chuyển, dừng lỗ qua đêm.
Thêm các chỉ số lọc, sử dụng các chỉ số khác như MACD, KDJ để lọc các tín hiệu báo cáo sai lệch, cải thiện sự ổn định của chiến lược.
Tối ưu hóa tham số, tìm kiếm sự kết hợp tham số tối ưu nhất thông qua thuật toán di truyền, chuỗi Markov và các phương pháp lặp.
Các chiến lược kết hợp với các chiến lược khác có thể làm phân tán rủi ro hơn nữa và cải thiện lợi nhuận tổng thể.
Chiến lược này thực hiện theo dõi xu hướng đơn giản và hiệu quả bằng cách định lượng vàng chéo, mặc dù có một mức độ chậm trễ, nhưng thiết lập tham số linh hoạt, dễ hiểu, là một chiến lược phù hợp cho người mới bắt đầu thực hành. Bằng cách tối ưu hóa liên tục, có thể tăng hiệu quả chiến lược và giảm rủi ro.
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 03:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="@DankCoins - Customized Net Volume")
src = input(defval = close, title = "VA Source")
nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume
// Inputs //
VHigh = input(defval = 50, title = "VHigh Amount")
VLow = input(defval = -50, title = "VLow Amount")
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2012)
MAV1 = sma(volume, 3)
MAV2 = -sma(volume, 3)
enterShort = crossunder(nv, MAV1)
exitShort = crossunder(nv, MAV2)
enterLong = crossover(nv, MAV2)
exitLong = crossover(nv, MAV1)
// Time Function
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=enterShort and window())
strategy.exit("Exit Long", from_entry = "Long Entry", when=exitLong and window())
strategy.exit("Exit Short", from_entry = "Short Entry", when=exitShort and window())
// Plot
plot(nv, color=blue, title="NV")
plot(VHigh, color=red)
plot(VLow, color=red)
plot(MAV1, color=green)
plot(MAV2, color=green)