1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Giao dịch tài chính với R

Connected

Bài tập

Tự viết chỉ báo của bạn - II

RSI thì ổn, nhưng xét về chỉ báo thì hơi lỗi thời. Trong bài này, bạn sẽ tự viết từ đầu một phiên bản đơn giản hóa của một chỉ báo khác. Chỉ báo này có tên là David Varadi Oscillator (DVO), do David Varadi, một giám đốc nghiên cứu định lượng, đề xuất.

Mục đích của bộ dao động này tương tự RSI: cố gắng tìm cơ hội mua khi giá điều chỉnh tạm thời và bán khi giá tăng tạm thời. Bên cạnh dữ liệu thị trường bắt buộc, một hàm dao động sẽ nhận hai khoảng nhìn lại (lookback).

Đầu tiên, hàm tính tỷ lệ giữa giá đóng cửa và trung bình của giá cao và thấp. Tiếp theo, áp dụng SMA lên đại lượng đó để làm mượt nhiễu, thường trên khung thời gian rất ngắn như 2 ngày. Cuối cùng, dùng hàm runPercentRank() để tính phần trăm xếp hạng chạy của tỷ lệ trung bình này, rồi nhân với 100 để chuyển về thang 0–100.

Hãy liên tưởng đến cách học sinh nhận điểm phần trăm (percentile) sau các bài kiểm tra chuẩn hóa (ví dụ, nếu một học sinh đạt 800 ở phần Toán, em đó có thể thuộc percentile 95 toàn quốc). runPercentRank() làm điều tương tự, nhưng theo thời gian. Chỉ báo này cung cấp hạng của quan sát mới nhất trong bối cảnh một giai đoạn quá khứ do người dùng chỉ định. Ví dụ, nếu một đại lượng có giá trị runPercentRank là 0,90 khi dùng lookback 126, điều đó nghĩa là nó đang ở percentile 90 khi so với chính nó và 125 quan sát trước đó.

Nhiệm vụ của bạn là hiện thực hóa chỉ báo này và lưu dưới tên DVO. Một phần mã cần thiết đã được cung cấp, và các gói quantstrat, TTR, và quantmod đã được nạp vào không gian làm việc của bạn.

Hướng dẫn

100 XP
  • Tạo và đặt tên một hàm DVO cho chỉ báo mô tả ở trên. Ba tham số của hàm là HLC, navg (mặc định 2), và percentlookback (mặc định 126).
  • Tỷ lệ giữa giá đóng cửa (Cl()) của HLC chia cho trung bình của giá cao (Hi()) và thấp (Lo()) đã được tính sẵn cho bạn.
  • Dùng SMA() để tính trung bình động cho tỷ lệ này, tham số hóa bằng đối số navg. Lưu kết quả vào avgratio.
  • Dùng runPercentRank() để triển khai hệ thống xếp hạng theo phần trăm cho avgratio.