Chiến lược Chữ thập vàng định lượng

Tác giả:ChaoZhang, Ngày: 2023-11-22 14:39:33
Tags:

img

Tổng quan

Chiến lược này tính toán một chỉ số khối lượng ròng tùy chỉnh để thực hiện một chiến lược giao dịch mua trên đường chéo vàng và bán trên đường chéo chết.

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

Lý thuyết cốt lõi của chiến lược là tính toán chỉ số khối lượng ròng (NV) tùy chỉnh. Chỉ số NV đánh giá hướng thay đổi giá. Nếu dương, nó lấy khối lượng hàng ngày. Nếu âm, nó lấy giá trị âm của khối lượng hàng ngày. Nếu không thay đổi, nó lấy 0.

Sau đó, chiến lược tính toán đường trung bình động đơn giản 3 ngày của chỉ số NV, tương ứng là đường chéo vàng và đường chéo chết. Khi chỉ số NV vượt qua đường chéo vàng từ dưới lên trên, đi dài. Khi NV vượt qua đường chéo chết từ trên xuống dưới, đi ngắn.

Ngoài ra, chiến lược cũng thiết lập thời gian bắt đầu và kết thúc được tham số hóa để kiểm soát giờ giao dịch.

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

Ưu điểm lớn nhất của chiến lược này là chiến lược đơn giản và rõ ràng, dễ hiểu, cài đặt tham số linh hoạt, tùy chỉnh các loại giao dịch, giờ giao dịch, v.v. Ngoài ra, chiến lược này thuộc về một chiến lược theo xu hướng có thể nắm bắt hiệu quả xu hướng giá, giảm tần suất giao dịch và đạt được lợi nhuận cao hơn.

Rủi ro của chiến lược

Những rủi ro chính của chiến lược này là:

  1. Chiến lược theo dõi hàng ngày không thể phản ứng nhanh chóng với những thay đổi trong xu hướng giá cả. Nó có thể bỏ lỡ một số cơ hội giao dịch hoặc không thể ngăn chặn lỗ kịp thời.

  2. Bản thân chữ thập vàng định lượng có một sự loạn thần nhất định, có thể dẫn đến việc nhập vào muộn và tăng lỗ.

  3. Không thể lọc hiệu quả tiếng ồn thị trường và dễ bị bẫy.

Trung bình động có thể được sử dụng một cách năng động, kết hợp với các chỉ số khác để giảm rủi ro.

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tăng các chiến lược dừng lỗ để kiểm soát lỗ đơn với phương pháp dừng lỗ di chuyển, phương pháp dừng lỗ qua đêm.

  2. Tăng các chỉ số lọc và sử dụng MACD, KDJ và các chỉ số khác để lọc các tín hiệu sai và cải thiện sự ổn định của chiến lược.

  3. Tối ưu hóa tham số, tìm kiếm lặp đi lặp lại cho sự kết hợp tham số tối ưu thông qua các thuật toán di truyền, chuỗi Markov và các phương pháp khác.

  4. Cổ phiếu chiến lược có thể được kết hợp với các chiến lược không liên quan khác để đa dạng hóa rủi ro hơn nữa và tăng lợi nhuận tổng thể.

Kết luận

Chiến lược này thực hiện một xu hướng đơn giản và hiệu quả sau khi thông qua các thập tự vàng định lượng. Mặc dù có một mức độ nhất định của sự rối loạn, các thiết lập tham số là linh hoạt và dễ hiểu. Đây là một chiến lược phù hợp cho người mới bắt đầu thực hành. Thông qua tối ưu hóa liên tục, hiệu ứng chiến lược có thể được cải thiện dần 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)

Thêm nữa