Tự tạo files EOD

trungnghia

Moderator
Tôi đã từng tạo chủ đề Tự tạo files EOD. Nhưng có thể do một trong những lần diễn đàn bị "quấy phá" chủ đề này đã biến mất hoặc di chuyển đi đâu đó! Tôi gởi đến các bạn bản mới nhất (có nhiều cải tiến theo yêu cầu của người dùng và cập nhật thành phần các rỗ cổ phiếu mới nhất (kỳ I.2015) thuộc các bộ chỉ số HoseIndex và HnxIndex mà Hose và Hnx vừa công bố.

Sử dụng file GetLastDayEOD(Update31.01.2015).xls để tạo dữ liệu cuối ngày.

Hướng dẫn:

GetLastDayEOD.png

Màn hình giao diện chính.

Các thành phần trên giao diện chính:
- Cell B18 chứa ngày hiện hành của hệ thống (trên hình được đánh số 5 màu xanh). Dùng để đối chiếu với ngày củ dữ liệu.

- Cell B6 chứa đường dẫn đến folder (trên máy của bạn) chứa các files data sẽ xuất ra (trên hình được đánh số 1 màu đỏ). Bạn phải nhập vào cho đúng thực tế trên máy bạn.

- Vùng G21:K35 chứa các số liệu sẽ xuất ra files Indices (trên hình được đánh số 3 màu đỏ).
+ Nội dung các số liệu màu xanh trên vùng này được tự động lấy từ bảng điện, bạn không cần gõ vào.
+ Nhưng những số liệu trong các cells có nền vàng, số xanh lá do không lấy được từ bảng điện bạn phải tự gõ vào từ nguồn khác bên ngoài.
+ Khi đóng file GetLastDayEOD.xls lại các số liệu trong vùng G21:K35 sẽ được copy sang vùng G5:K19 (trên hình được đánh số 2 màu đỏ), để phòng khi cần dùng lại số liệu này. Các cells có nền vàng, số xanh lá sẽ được xóa (để tránh trường hợp lấy nhầm số liệu cũ).

- Nút Get EOD cho phép gọi code thực hiện quá trình xử lý lý số liệu và xuất ra files EOD. Check box Get Indices và check box Get UpCom mặc định được chọn (trên hình được đánh số 7 màu xanh), cho phép xuất files Indices và files UpCom.

Nếu bạn không muốn xuất files Indices hoặc/và files UpCom, bạn có thể bỏ chọn. Trường hợp do chưa có đủ số liệu cho Indices (các cells có nền vàng, số xanh lá), bạn có thể bỏ chọn. Nhưng nếu bạn vẫn chọn check box Get Indices thì code sẽ lần lượt kiểm tra và hiển thị thông báo (nếu có lỗi):

+ Nếu kiểm tra thấy giá trị H hoặc/và L không hợp lý (H nhỏ hơn ít nhất một trong các giá trị còn lại hoặc/và L lớn hơn ít nhất một trong các giá trị còn lại):

SaiHL.png

VN30Index thiếu hoặc có giá trị H hoặc/và L nhưng không hợp lý.
Thông báo lỗi trên xuất hiện khi có vấn đề với giá trị H hoặc/và L (có thể thiếu H, được xem như H=0, có thể O hoặc/và C lớn hơn H hay nhỏ hơn L).

+ Nếu thấy thiếu giá trị (một trong các cells có nền vàng, số xanh lá không chứa số):

ThieuDuLieu.png

Thông báo này xuất hiện khi HnxMidSmallIndex không được đền đủ số liệu.

Trong trường hợp trên, sau khi chọn OK, code tiếp tục kiểm tra Index khác (nếu còn). Cuối cùng những Index được báo lỗi sẽ không được xuất ra files.

Có tối đa 4 files txt và 4 files xls (Hose, Hnx, UpCom và Index) được xuất ra nếu các check box Get Indices và check box Get UpCom (trên hình được đánh số 7 màu xanh) được chọn và option button Excel and Text files (trên hình được đánh số 4 màu xanh) cũng được chọn.

- Cell B21 chứa độ dài delay trước khi xử lý dữ liệu. Do thời gian cập nhật số liệu từ bảng điện có thể chậm (do đường truyền hay lý do nào đó), có thể việc cập nhật số liệu từ bảng điện chưa hoàn thành, mà dữ liệu được xử lý và xuất ra sẽ sai! Interval delay làm trì hoãn thời điểm bắt đầu xử lý dữ liệu (chờ việc cập nhật bảng điện).

.
 
Bác cho hỏi cách lấy chỉ số ngành thì phải mần như nào?

Tôi không hiểu là ý bạn hỏi về:
+ Lấy chi số ngành ở đâu?
hay
+ Phương pháp tính chỉ số ngành?
hoặc
+ Code để tính chỉ số ngành?

Hnx cũng chính thức cung cấp chỉ số ngành: HnxFinIndex, HnxConIndex và HnxManIndex. Ngoài ra, tôi không quan tâm để ý chỗ nào khác có cung cấp chỉ số ngành.

Việc tính chỉ số ngành cung như tính các index khác, tuy theo quan điểm và yêu cầu của người sử dụng. Có thể tính theo cách tính VNIndex hay HnxIndex. Một cách tính đơn giản là tính giá bình quân. Dù cách nào thì cũng cần xác định danh sách các mã cổ phiếu thành phần của Chỉ số muốn tính.

Muốn tính giá đóng cửa cho Chỉ số thì đơn giản. Nhưng nếu muốn tính đủ các giá OHLC cho index thì cần có số liệu realtime (tính chỉ số realtime) mới chính xác. Nếu chỉ dựa vào giá OHLC của các mã thành phần sẽ cho kết quả H và L của chỉ số không đúng. Nguyên nhân có thể giải thích như sau:

+ Việc tính các giá trị O, C và V của Index thì đơn giản:
- Đơn giản nhất là tính V chỉ cần cộng tất cả các Vi.
- Để tính O và C: Có thể dùng các giá trị Oi và Ci để tính theo công thức được quy định. Thí dụ như quy định của sở giao dịch chứng khoán (cách này hơi phức tạm nhưng vẫn tính được vì có công thức và các giá trị trong công thức).

+ Việc tính các giá trị H và L, nếu chỉ dựa vào các giá trị H và L của các mã thành phần sẽ không chính xác. Vì các giá trị Hi của từng mã thành phần xuất hiện không cùng một thời điểm. Nếu chọn Hi của tất cả các mã thành phần chỉ có thể cho giá trị cao nhất mà H của chỉ số có thể đạt đến. Tương tự, các giá trị Li của từng mã thành phần xuất hiện cũng không cùng một thời điểm. Nếu chọn Li của tất cả các mã thành phần để tính L cho chỉ số cũng chỉ có thể cho giá trị thấp nhất mà L của chỉ số có thể có.

Các giá trị Oi, Hi, Li, Ci và Vi nêu trên là các các giá trị O, H, L, C và V của mã thành phần thứ i.

Về code, @giailang cũng từng đưa ra đoạn code tính bình quân theo watchlist (danh sách các mã thành phần) bằng cách dùng Composite
 
Back
Top