Nghiên cứu chuẩn giao thức FIX và ứng dụng xây dựng phần mềm mô phỏng hệ thống khớp lệnh chứng khoán của sở giao dịch chứng khoán Hà Nội

  • Số trang: 79 |
  • Loại file: PDF |
  • Lượt xem: 54 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

i ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ LÊ ĐỨC HÙNG NGHIÊN CỨU CHUẨN GIAO THỨC FIX VÀ ỨNG DỤNG XÂY DỰNG PHẦN MỀM MÔ PHỎNG HỆ THỐNG KHỚP LỆNH CHỨNG KHOÁN CỦA SỞ GIAO DỊCH CHỨNG KHOÁN HÀ NỘI LUẬN VĂN THẠC SĨ Hà Nội - 2013 ii ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ LÊ ĐỨC HÙNG NGHIÊN CỨU CHUẨN GIAO THỨC FIX VÀ ỨNG DỤNG XÂY DỰNG PHẦN MỀM MÔ PHỎNG HỆ THỐNG KHỚP LỆNH CHỨNG KHOÁN CỦA SỞ GIAO DỊCH CHỨNG KHOÁN HÀ NỘI Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60 48 10 LUẬN VĂN THẠC SĨ NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. Cao Tuấn Dũng Hà Nội - 2013 iii MỤC LỤC DANH SÁCH BẢNG BIỂU ...................................................................................... vii DANH MỤC CÁC HÌNH VẼ .................................................................................. viii BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT .................................................................. x MỞ ĐẦU ................................................................................................................... - 1 CHƢƠNG 1: TỔNG QUAN VỀ CÁC GIAO THỨC TRAO ĐỔI DỮ LIỆU TRONG LĨNH VỰC TÀI CHÍNH......................................................................... - 3 1.1 Các giao thức trong đổi dữ liệu trong lĩnh vực tài chính..................................... - 3 1.2 Giới thiệu về chuẩn giao thức FIX ...................................................................... - 4 1.2.1 Sơ lược về chuẩn FIX ....................................................................................... - 4 1.2.1 Cấu trúc của một FIX thông điệp ..................................................................... - 5 CHƢƠNG 2: NGHIÊN CỨU VỀ CHUẨN MESSAGE VÀ GIAO THỨC FIX ĐANG ĐƢỢC SỬ DỤNG TẠI SỞ GIAO DỊCH CHỨNG KHOÁN HÀ NỘI . - 6 2.1 Mô hình giao tiếp giữa CTCK và HNX .............................................................. - 6 2.1.1 Sơ đồ giai đoạn thiết lập kết nối ....................................................................... - 7 2.1.2 Sơ đồ giai đoạn truyền dữ liệu .......................................................................... - 8 2.1.3 Sơ đồ giai đoạn đóng kết nối ............................................................................ - 9 2.1.4 Một số quy định khi trao đổi dữ liệu của giao thức.......................................... - 9 2.2 Quy trình thực hiện trao đổi dữ liệu giữa CTCK và HNX ................................ - 10 2.2.1 Danh mục các quy trình .................................................................................. - 10 2.2.2 Chi tiết các quy trình liên quan đến kết nối .................................................... - 12 2.2.2.2 Quy trình đóng kết nối ................................................................................. - 13 2.2.3 Chi tiết các quy trình liên quan đến nghiệp vụ ............................................... - 13 2.2.3.1 Quy trình đặt lệnh ........................................................................................ - 13 2.2.3.2 Quy trình hủy lệnh ....................................................................................... - 14 2.2.3.3 Quy trình sửa lệnh ....................................................................................... - 14 2.2.3.4 Quy trình đặt lệnh quảng cáo ....................................................................... - 14 2.2.3.5 Quy trình xóa lệnh quảng cáo chưa thực hiện ............................................. - 15 - iv 2.2.3.6 Quy trình đặt lệnh thỏa thuận của khách hàng cùng công ty ...................... - 15 2.2.3.7 Quy trình đặt lệnh thỏa thuận của khách hàng khác công ty ....................... - 15 2.3 Đặc tả các thông điệp trao đổi dữ liệu giữa CTCK và HNX ............................. - 16 2.3.1 Danh mục các thông điệp ............................................................................... - 16 2.3.2 Danh mục các TAG sử dụng trong FIX ......................................................... - 18 2.3.3 Đặc tả chi tiết các thông điệp ......................................................................... - 26 2.3.3.1 Thông điệp Logon ....................................................................................... - 26 2.3.3.2 Thông điệp Reject........................................................................................ - 27 2.3.3.3 Thông điệp NewOrderSingle ....................................................................... - 27 2.3.3.4 Thông điệp OrderCancelRequest ................................................................ - 28 2.3.3.5 Thông điệp OrderCancelReplaceRequest ................................................... - 29 CHƢƠNG 3: XÂY DỰNG PHẦN MỀM MÔ PHỎNG HỆ THỐNG KHỚP LỆNH TẠI SỞ GIAO DỊCH CHỨNG KHOÁN HÀ NỘI – HNX ................... - 30 3.1 Mô tả bài toán .................................................................................................... - 30 3.2 Tổng quan nghiệp vụ giao dịch chứng khoán tại HNX ..................................... - 30 3.2.1 Phiên giao dịch ............................................................................................... - 31 3.2.2 Nguyên tắc khớp lệnh ..................................................................................... - 31 3.2.2.1 Nguyên tắc khớp lệnh định kỳ..................................................................... - 31 3.2.2.2 Nguyên tắc khớp lệnh liên tục ..................................................................... - 32 3.2.3 Các loại lệnh giao dịch ................................................................................... - 32 3.2.3.1 Lệnh giới hạn (LO) ...................................................................................... - 32 3.2.3.2 Lệnh thị trường (MP) .................................................................................. - 33 3.2.3.3 Lệnh ATO/ATC........................................................................................... - 33 3.3 Phân tích yêu cầu ............................................................................................... - 34 3.3.1 Yêu cầu phần mềm ......................................................................................... - 34 3.3.2 Xây dựng mô hình Use-Case .......................................................................... - 35 3.3.2.1 Tác nhân ...................................................................................................... - 35 3.3.2.2 Mô hình........................................................................................................ - 35 3.4 Thiết kế kiến trúc hệ thống ................................................................................ - 38 3.4.1 Mô hình tương tác dữ liệu CTCK và HNX .................................................... - 38 - v 3.4.2 Kiến trúc xử lý dữ liệu .................................................................................... - 41 3.4.3 Kiến trúc phần mềm mô phỏng ...................................................................... - 44 3.5 Thiết kế cơ sở dữ liệu ........................................................................................ - 46 3.5.1 Mô hình quan hệ dữ liệu ................................................................................. - 46 3.5.2 Chi tiết các bảng dữ liệu ................................................................................. - 46 3.5.2.1 StockPrice: Thông tin chứng khoá ............................................................ n - 46 3.5.2.2 OrderSysStat: Thông tin trạng thái thị trường ............................................. - 48 3.5.2.3 SOrder: Thông tin lệnh bán ......................................................................... - 48 3.5.2.4 BOrder: Thông tin lệnh mua........................................................................ - 49 3.5.2.5 HistOrders: Bảng thông tin lịch sử lệnh ...................................................... - 50 3.5.2.6 OrderCancelRequest: Thông tin yêu cầu hủy lệnh báo giá ......................... - 51 3.5.2.7 OrderReplaceRequest: Thông tin yêu cầu sửa lệnh báo giá ........................ - 52 3.5.2.8 Advertisement: Thông tin lệnh quảng cáo .................................................. - 52 3.5.2.9 ClientInfo: Thông tin về máy trạm kết nối đến HNX ................................. - 53 3.5.2.10 Order_PT: Thông tin lệnh giao dịch thỏa thuận ........................................ - 53 3.5.2.10 MatchInfo: Chi tiết khớp lệnh của hệ thống .............................................. - 54 3.6 Thiết kế chức năng ............................................................................................ - 54 3.6.1 Xử lý đặt lệnh báo giá ..................................................................................... - 54 3.6.1.1 Một số thực thể liên quan ............................................................................ - 54 3.6.1.2 Sơ đồ giải thuật ............................................................................................ - 56 3.6.2 Hủy lệnh báo giá ............................................................................................. - 57 3.6.2.1 Một số thực thể liên quan ............................................................................ - 57 3.6.2.2 Sơ đồ giải thuậ ............................................................................................ t - 57 3.6.3 Sửa lệnh báo giá ............................................................................................. - 58 3.6.3.1 Một số thực thể liên quan ............................................................................ - 58 3.6.3.2 Sơ đồ giải thuật ............................................................................................ - 59 CHƢƠNG 4: CÀI ĐẶT THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG .......... - 59 4.1 Kết quả xây dựng phần mềm ............................................................................. - 60 4.1.1 Màn hình chính ............................................................................................... - 60 4.1.2 Đặt lệnh báo giá .............................................................................................. - 61 - vi 4.1.3 Khớp lệnh thủ công ........................................................................................ - 61 4.1.4 Sửa lệnh .......................................................................................................... - 62 4.1.5 Đặt lệnh quảng cáo ......................................................................................... - 62 4.2 Kịch bản thử nghiệm - 63 4.2.1 Mục tiêu thử nghiệm....................................................................................... - 63 4.2.2 Kịch bản .......................................................................................................... - 63 4.3 Đánh giá kết quả ................................................................................................ - 66 KẾT LUẬN ............................................................................................................ - 68 TÀI LIỆU THAM KHẢO ..................................................................................... - 69 - vii DANH SÁCH BẢNG BIỂU Bảng 2. 1 Danh sách các quy trình giao dịch .......................................................... - 12 Bảng 2. 2. Danh sách các thông điệp FIX ................................................................ - 18 Bảng 2. 3. Danh mục các TAG sử dụng trong FIX .................................................. - 26 Bảng 2. 4. Danh mục các trường thông điệp đăng nhập ......................................... - 26 Bảng 2. 5. Danh mục các trường thông điệp từ chối ............................................... - 27 Bảng 2. 6. Danh mục các trường của thông điệp đặt lệnh báo giá ......................... - 28 Bảng 2. 7. Danh mục các trường thông điệp hủy lệnh ............................................. - 28 Bảng 2. 8 Danh mục các trường thông điệp sửa lệnh .............................................. - 29 Bảng 3. 1. Danh sách các phiên giao dịch ............................................................... - 31 Bảng 3. 2. Thông tin chứng khoán .......................................................................... - 47 Bảng 3. 3. Thông tin trạng thái thị trường .............................................................. - 48 Bảng 3. 4. Thông tin lệnh bán ................................................................................. - 49 Bảng 3. 5. Thông tin lệnh mua ................................................................................ - 50 Bảng 3. 6. Bảng thông tin lịch sử lệnh .................................................................... - 51 Bảng 3. 7. Thông tin yêu cầu hủy lệnh báo giá ....................................................... - 52 Bảng 3. 8. Thông tin yêu cầu sửa lệnh báo giá ....................................................... - 52 Bảng 3. 9. Thông tin lệnh quảng cáo....................................................................... - 52 Bảng 3. 10. Thông tin về máy trạm kết nối đến HNX .............................................. - 53 Bảng 3. 11. Thông tin lệnh giao dịch thỏa thuận .................................................... - 53 Bảng 3. 12. Chi tiết khớp lệnh của hệ thống ........................................................... - 54 Bảng 3. 13. Các phươgn thức lớp StockOrderDAL ................................................ - 55 Bảng 3. 14. Các phương thức lớp StockExchangeApp ............................................ - 56 - viii DANH MỤC CÁC HÌNH VẼ Hình 2. 1. Mô hình giao tiếp CTCK và HNX ............................................................. - 6 Hình 2. 2. Sơ đồ giai đoạn thực hiện kết nối .............................................................. - 7 Hình 2. 3. Sơ đồ giai đoạn truyền dữ liệu .................................................................. - 8 Hình 2. 4. Sơ đồ giai đoạn đóng kết nối ..................................................................... - 9 Hình 2. 5. Quy trình kết nối ...................................................................................... - 12 Hình 2. 6. Quy trình đóng kết nối ............................................................................. - 13 Hình 2. 7. Quy trình đặt lệnh báo giá....................................................................... - 13 Hình 2. 8. Quy trình hủy lệnh ................................................................................... - 14 Hình 2. 9. Quy trình sửa lệnh báo giá ...................................................................... - 14 Hình 2. 10. Quy trình đặt lệnh quảng cáo ................................................................ - 15 Hình 2. 11. Quy trình xóa lệnh quảng cáo chưa thực hiện ...................................... - 15 Hình 2. 12. Quy trình đặt lệnh thỏa thuận cùng công ty .......................................... - 15 Hình 2. 13. Đặt lệnh thỏa thuận khác công ty - Bên mua đồng ý ............................ - 16 Hình 2. 14. Đặt lệnh thỏa thuận khác công ty - Bên mua không đồng ý.................. - 16 Hình 3. 1. UC Mô hình tổng quan chức năng .......................................................... - 36 Hình 3. 2. UC Quản lý kết nối .................................................................................. - 37 Hình 3. 3. UC Xử lý lệnh .......................................................................................... - 37 Hình 3. 4. UC Quản lý thông tin thị trường ............................................................. - 38 Hình 3. 5. Mô hình trao đổi dữ liệu giữa CTCK và HNX thực tế ............................ - 39 Hình 3. 6. Kiến trúc xử lý dữ liệu phần mềm mô phỏng........................................... - 41 Hình 3. 7. Kiến trúc phần mềm mô phỏng ................................................................ - 45 Hình 3. 8. Mô hình quan hệ dữ liệu .......................................................................... - 46 Hình 3. 9. Sơ đồ khối xử lý đặt lệnh báo giá ............................................................ - 57 Hình 3. 10. Sơ đồ khối hủy lệnh báo giá .................................................................. - 58 Hình 3. 11. Sơ đồ khối sửa lệnh báo giá .................................................................. - 59 Hình 4. 1. Màn hình giao diện chính ........................................................................ - 60 Hình 4. 2. Màn hình đặt lệnh báo giá....................................................................... - 61 Hình 4. 3. Màn hình khớp lệnh thủ công .................................................................. - 62 - ix Hình 4. 4. Sửa lệnh báo giá ...................................................................................... - 62 Hình 4. 5. Đặt lệnh quảng cáo ................................................................................. - 63 - x BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT CTCK : Công ty chứng khoán FIX : Financial Infomation eXchange HNX : Sở giao dịch chứng khoán Hà Nội (Hà Nội Stock Exchange) CSDL : Cơ sở dữ liệu DBMS : Hệ quản trị cơ sở dữ liệu (Database Management Systems) -1- MỞ ĐẦU Lý do chọn đề tài Như chúng ta thấy, với sự phát triển mạnh mẽ về CNTT thì các hệ thống tin học nói chung và phần mềm cho lĩnh vực tài chính nói riêng đang ngày càng hiện đại bên cạnh sự đa dạng và phong phú cả về nghiệp vụ và công nghệ. Với các hệ thống tài chính lớn phức tạp thường sử dụng nhiều phần mềm khác nhau tương tác với nhau, hoặc giữa các hệ thống tài chính của các doanh nghiệp giao tiếp với nhau. Khi đó bài toán tích hợp giữa các hệ thống tin học tài chính khác nhau sẽ trở nên phức tạp và cấp thiết. Trước đây, khi phát triển các phần mềm tài chính các nhà cung cấp phần mềm thường tự định nghĩa giao thức riêng của họ. Khi xuất hiện nhu cầu tích hợp với một hệ thống của đơn vị khác thì 2 bên phải ngồi với nhau để thống nhất lại giao thức giao tiếp giữa 2 hệ thống. Phương pháp này đơn giản và hiệu quả khi số lượng phần mềm cần tích hợp là nhỏ và phần mềm các bên hoạt động ổn định. Nhưng sẽ gặp hạn chế và trở nên cứng nhắc khi số lượng nhu cầu tích hợp tăng với nhiều loại phần mềm khác nhau và có sự thay đổi nâng cấp không đồng đều. Cứ mối khi có thêm một hệ thống cần tích hợp thì lại phải ngổi với nhau để điều chỉnh giao thức. Một giao thức chuẩn chung để có thể tích hợp với tất các các phần mềm sẽ giúp đơn giản và giảm chi phí rất nhiều quá trình tích hợp. FIX (Financial Infomation eXchange) là một chuẩn thông điệp và giao thức chung để đáp ứng nhu cầu này trong lĩnh vực tài chính. Vì vậy tác giả đã chọn đề tài “Nghiên cứu chuẩn giao thức FIX và ứng dụng xây dựng phần mềm mô phỏng hệ thống khớp lệnh chứng khoán của Sở giao dịch chứng khoán Hà Nội” với mục tiêu làm rõ về giao thức hiện đại này, đồng thời ứng dụng FIX xây dựng một phần mềm ứng dụng trong thực tế phục vụ giao đoạn kiểm thử các phần mềm giao dịch chứng khoán tại Việt Nam. Mục đích nghiên cứu Đề tài tập trung nghiên cứu về giao thức FIX là giao thức quốc tế trong việc giao tiếp giữa các hệ thống tài chính. Ở Việt Nam FIX đang được áp dụng là giao thức trao đổi thông tin giữa các CTCK và trung tâm khớp lệnh - Sở giao dịch chứng khoán Hà Nội (HNX). Sau khi đã nghiên cứu về FIX tác giả sẽ xây dựng một hệ thống mô phỏng hệ thống khớp lệnh tại HNX, hệ thống sẽ là phần mềm hỗ trợ đắc lực để thử nghiệm các giao dịch khi xây dựng các phần mềm chứng khoán tại thị trường chứng khoán Việt Nam. Đối tƣợng và phạm vi nghiên cứu  Đối tượng nghiên cứu: Chuẩn FIX áp dụng trong giao tiếp giữa các hệ thống tài chính quốc tế và tại thị trường chứng khoán Việt Nam. -2-  Phạm vi nghiên cứu: • Nghiên cứu đặc tả thông điệp FIX. • Nghiên cứu về quy trình trao đổi dữ liệu giữa các CTCK và sở giao dịch chứng khoán Hà Nội (HNX) Ý nghĩa khoa học và thực tiễn của đề tài  Nghiên cứu đặc tả thông điệp FIX và phương thức trao đổi thông tin giữa các hệ thống dựa trên FIX.  Nghiên cứu quy trình và nguyên tắc thực hiện trao đổi dữ liệu giữa công ty chứng khoán và sở giao dịch chứng khoán Hà Nôi (HNX).  Xây dựng phần mềm mô phỏng hệ thống khớp lệnh của HNX.  Xây dựng ứng dụng máy trạm phía công ty chứng khoán thực hiện kết nối và trao đổi dữ liệu với HNX theo quy định hiện hành tại Việt Nam.  Ứng dụng của đề tài có thể áp dụng cho việc phát triển và kiểm thử các phần mềm giao dịch chứng khoán sử dụng FIX. Kết cấu của luận văn Ngoài phần mở đầu, danh mục ký hiệu viết tắt, mục lục, danh mục tài liệu tham khảo, phụ lục và phần kết luận, nội dung của luận văn gồm ba chương. Chƣơng 1. Tổng quan về các giao thức trao đổi dữ liệu trong lĩnh vực tài chính. Chương này giới thiệu tổng quan các giao thức trao đổi dữ liệu giữa các hệ thống tài chính. So sánh các giao thức với FIX. Chƣơng 2. Nghiên cứu chuẩn thông điệp và giao thức FIX đang được sử dụng tại Sở giao dịch chứng khoán Hà Nội. Chương này tập trung làm rõ nguyên lý của chuẩn giao thức FIX và nghiệp vụ trao đổi dữ liệu tại sàn giao dịch chứng khoán Hà Nội. Chƣơng 3. Xây dựng phần mềm mô phỏng hệ thống khớp lệnh tại Sở giao dịch chứng khoán Hà Nội. Dựa trên cở sở lý thuyết về FIX và nghiệp vụ giao dịch chứng khoán tại Việt Nam và quy địch giao dịch tại HNX, luận văn thiết kế phần mềm mô phỏng hệ thống khớp lệnh tại HNX nhằm phục vụ quá trình kiểm thử phần mềm giao dịch chứng khoán. Chƣơng 4. Cài đặt thử nghiệm và đánh giá hệ thống Chương này trình bày kết quả cài đặt thử nghiệm, các kịch bản thử nghiệm và đánh giá kết quả. -3- CHƢƠNG 1: TỔNG QUAN VỀ CÁC GIAO THỨC TRAO ĐỔI DỮ LIỆU TRONG LĨNH VỰC TÀI CHÍNH 1.1 Các giao thức trong đổi dữ liệu trong lĩnh vực tài chính Trước đây để tích hợp các hệ thống tin học trong lĩnh vực tài chính, các công ty phát triển phần mềm tài chính thường sử dụng một trong 2 giải pháp hoặc kết hợp các giải pháp sau: Giải pháp 1. Tự định nghĩa một giao thức phù hợp với phần mềm và nghiệp vụ hiện có. Ưu điểm: Với cách tạo ra một giao thức riêng sẽ có ưu điểm là đơn giản và tối ưu về hiệu năng, các thông điệp được tạo ra vừa đủ dữ liệu sát với nghiệp vụ mà phần mềm đáp ứng. Nhược điểm: Nhược điểm lớn nhất của kiểu giao thức này là mang tính đặc thù, chỉ có phần mềm của nhà cung cấp đó sử dụng được, do đó chỉ có thể sử dụng để giao tiếp giữa các phần mềm do công ty đó cung cấp. Nếu muốn tích hợp với phần mềm bên thứ 3 thì phải chỉnh sửa lại giao thức. Khó khăn để tích hợp với nhiều loại phần mềm khác nhau. Giải pháp 2. Áp dụng một số chuẩn mã hóa thông điệp để định nghĩa giao thức như chuẩn thông điệp ISO 8583, ISO 20022, ... Giải pháp này được đưa ra để khắc phục các nhược điểm của giải pháp 1 với mong muốn định nghĩa các thông điệp chuẩn trong lĩnh vực tài chính để đơn giản quá trình tích hợp giữa các hệ thống. Ưu điểm: Giải pháp này đã chuẩn hóa được thông điệp trao đổi thông tin giữa các hệ thống tích hợp giúp đơn giản hơn khi xây dựng giao thức tích hợp. Hiện nay hầu hết các hệ thống Core Banking lớn đều hỗ trợ giải pháp này như T24, Intellect, Korebank, Symbols, .. Nhược điểm: Mặc dù đã đưa ra được chuẩn mã hóa các thông điệp nhưng chưa đưa ra được các quy tắc về giao thức, nên khi xây dựng giải pháp tích hợp các giao thức được tạo ra từ ISO thông điệp vẫn có thể khác nhau. Do đó khi số lượng phần mềm cần tích hợp gia tăng vẫn có thể phải chỉnh sửa giao thức. Ngày nay, khi mà số lượng phần mềm tài chính gia tăng về số lượng, đa dạng về thể loại phong phú về công nghệ nếu sử dụng 1 trong 2 giải pháp trên sẽ hạn chế nhiều khi phải tích hợp với nhiều hệ thống khác nhau. Do đó cần phải có những quy định về chuẩn thông điệp và giao thức chung khi trao đổi dữ liệu tài chính. Bằng cách định nghĩa sẵn tất cả các loại thông tin có thể dùng khi trao đổi thông tin giữa các hệ thống tài chính FIX ra đời như một chuẩn thông điệp giao tiếp giữa các phần mềm tài chính -4- với nhau. Bên cạnh việc định nghĩa chuẩn thông điệp FIX còn quy định về các thức bắt tay giữa các bên, các thức truyền nhận dữ liệu, duy trì kết nối và đảm bảo tính toàn vẹn dữ liệu khi trao đổi. Có thể nói FIX là một chuẩn giao thức chung cho việc trao đổi dữ liệu giữa các hệ thống tài chính đã khắc phục được nhược điểm của các giao thức truyền thống. 1.2 Giới thiệu về chuẩn giao thức FIX 1.2.1 Sơ lược về chuẩn FIX Trên thế giới hiện nay FIX đang là chuẩn thông điệp và giao thức quốc tế phổ thông cho việc giao tiếp giữa các hệ thống tài chính, đặc biệt là cho các lĩnh vực giao dịch thị trường như chứng khoán, vàng, tiền tệ, giao dịch hàng hóa,.... Hầu hết, các Sàn giao dịch hiện đại trên thế giới đều sử dụng FIX cho việc trao đổi với các hệ thống liên quan phục vụ cho hoạt động công nghệ thông tin. Việc sử dụng chuẩn và giao thức quốc tế tạo ra nhiều thuận lợi cho việc triển khai, tích hợp hệ thống sau này và còn phục vụ nhu cầu mở rộng kết nối với các hệ thống tài chính khác trên thế giới. Những thuận lợi chính khi lựa chọn FIX là chuẩn dữ liệu trao đổi với các hệ thống của thành viên như sau:  Đây là chuẩn quốc tế và tương đối phổ thông, nên các qui định về cấu trúc dữ liệu, cách thức trao đổi hoàn toàn chuẩn hóa và có nhiều tài liệu hỗ trợ cho việc tích hợp hệ thống giữa Sở và CTCK.  Chuẩn dữ liệu này tường minh và dễ hiểu.  Có nhiều đơn vị thứ ba đã phát triển sẵn các framework cho chuẩn dữ liệu này, HNX và CTCK sẽ không mất nhiều thời gian và nguồn lực để phát triển các framework đó mà có thể tận dụng và sử dụng ngay, mặc dù sẽ phải trả thêm một số chi phí khi mua các framework này.  Các hệ thống của các công ty chứng khoán hiện đại đều hỗ trợ sẵn chuẩn FIX, vì thế các CTCK khi mua các phần mềm giao dịch chứng khoán này cũng sẽ dễ dàng tích hợp với HNX.  Chuẩn FIX được nhiều Sở giao dịch trên thế giới và các đơn vị tài chính khác trên thế giới ứng dụng vì thế Sở giao dịch chứng khoán Hà Nội cũng sẽ dễ dàng tích hợp với các hệ thống đó Chuẩn FIX có rất nhiều phiên bản từ FIX 4.0, FIX 4.1, FIX 4.2, FIX 4.3, FIX 4.4, FIX 5.0. Hiện nay FIX 4.4 đang được sử dụng rộng rãi nhất và tại Việt Nam cũng đang sử dụng chuẩn này. Trong phạm vi luận văn này chúng ta chỉ đề cập đến phiên bản FIX 4.4. -5- 1.2.1 Cấu trúc của một FIX thông điệp Mỗi thông điệp FIX bao gồm nhiều trường và được chia thành 3 phần chính:  Message Header: : Định nghĩa loại thông điệp, độ dài, người gửi, người nhận, thời gian gửi, số thứ tự, ....  Message Body: Chứa nội dung thông tin thông điệp.  Message Trailer: Chứa thông tin kiểm tra toàn vẹn dữ liệu trên đường truyền (chữ ký số, checksum, ...). Cấu trúc mỗi trường của mỗi thông điệp FIX có dạng sau: = Trong đó: : Là mã số để xác định trường: có thể là số hoặc tên tường minh : Là giá trị của trường : Là dấu ngăn cách giữa các trường, đây là ký tự đặc biệt có mã ASCII =1 Ví dụ về một thông điệp FIX: 8=FIX.4.4^9=77^35=A^34=1^49=052^52=2013091916:12:27.374^56=HNX^369=0^553=hungld^554=123456^10=247. -6- CHƢƠNG 2: NGHIÊN CỨU VỀ CHUẨN MESSAGE VÀ GIAO THỨC FIX ĐANG ĐƢỢC SỬ DỤNG TẠI SỞ GIAO DỊCH CHỨNG KHOÁN HÀ NỘI 2.1 Mô hình giao tiếp giữa CTCK và HNX Hiện nay các CTCK giao tiếp với sở giao dịch chứng khoán theo mô hình Máy trạm/Máy chủ, trong đó CTCK đóng vai trò làm Máy trạm và HNX đóng vai trò Máy chủ. Kết quả SERVER (HNX) CLIENT (CTCK) Gửi lệnh Thông tin thị trường Hình 2. 1. Mô hình giao tiếp CTCK và HNX Thông tin trao đổi giữa CTCK và HNX là các gói tin có cấu trúc gồm 2 phần: Header Data content Trong đó:  Hearder: có độ dài 4 byte, lưu độ dài của dữ liệu “Data” dưới dạng binary  Data content: nội dung dữ liệu gửi dưới dạng string có độ dài tùy ý. Quy ước ta sẽ gọi phần Data là thông điệp (message). Thông điệp có cấu trúc tuân theo chuẩn thông điệp FIX  Quá trình trao đổi dữ liệu giữa Máy trạm và máy chủ thông qua FIX sẽ trải qua 3 giai đoạn.  Thiết lập kết nối: Trong giai đoạn này máy trạm sẽ gửi yêu cầu kết nối đến máy chủ. Máy chủ sẽ kiểm tra để xác thực thông tin gửi đến và khôi phục dữ liệu (nếu cần), nếu thỏa mãn các điều kiện kết nối thì một kênh kết nối sẽ được thiết lập giữa Máy trạm và Server. Trong trường hợp cần khôi phục dữ liệu ngay sau khi thực hiện kết nối, máy chủ sẽ gửi thông báo chấp nhận kết nối và yêu cầu máy trạm gửi dữ liệu khôi phục.  Truyền dữ liệu: Sau khi máy chủ đồng ý kết nối và cho phép gửi dữ liệu lên, 2 bên có thể trao đổi dữ liệu. Việc trao đổi dữ liệu diễn ra theo 2 chiều nhưng trong giới hạn của buffer size. Buffer size là sự chênh lệch giữa số thông điệp lệnh mà Máy trạm gửi cho HNX và số lệnh mà HNX xử lý xong. -7-  Kết thúc kết nối: Khi muốn kết thúc kết nối, cả 2 bên đều có quyền gửi yêu cầu kết thúc kết nối cho bên kia. Trong điều kiện bình thường thì phải đợi bên kia chấp nhận kêt thúc thì kết nối đó mới bị ngắt. Tuy nhiên, trong các trường hợp đặc biệt (lỗi đường truyền, hoặc hết giờ, hoặc máy trạm vi phạm quy chế ..) thì có thể ngắt kết nối mà không cần sự chấp thuận. 2.1.1 Sơ đồ giai đoạn thiết lập kết nối CLIENT (CTCK) Start SERVER (HNX) Đúng FIX massage chưa? Gửi LogonMessage Gửi RejectMessage Gửi lại LogonMessage (Đúng user/pass) Gửi RejectMessage Y N User/pass hợp lệ N Y Thiết lập kết nối Sequence CTCK = HNX Last Msg Seq Num Processed ? Gửi LogonMessage (Thành công) N N Gửi lại dữ liệu Gửi ResendMessage CTCK reset lại sequence và tiếp tục gửi message Gửi SequenceReset Message Kết thúc session Gửi LogoutMessage (Đóng kết nối) Thiết lập kết nối Gửi LogonMessage (Thành công) N Sequence CTCK < HNX Last Msg Seq Num Processed ? Y Y 1 account không được logon 2 lần cùng 1 thời điểm Logon thành công chưa? Y N Hình 2. 2. Sơ đồ giai đoạn thực hiện kết nối -8- 2.1.2 Sơ đồ giai đoạn truyền dữ liệu CLIENT (CTCK) Start SERVER (HNX) Gửi DataMessage Đúng FIX massage? Gửi RejectMessage Gửi lại DataMessage (Đúng SenderID) Y N Gửi RejectMessage Gửi đúng SenderID? N Y Gửi lại dữ liệu N Gửi ResendMessage Sequence CTCK = HNX Last Msg Seq Num Processed + 1 N Sequence CTCK < HNX Last Msg Seq Num Processed + 1 CTCK reset lại sequence và tiếp tục gửi message Gửi SequenceReset Message Y Y Gửi HeartBeat Message Thông báo cho Client đã nhận được message và đang xử lý SERVER xử lý data Hình 2. 3. Sơ đồ giai đoạn truyền dữ liệu -9- 2.1.3 Sơ đồ giai đoạn đóng kết nối CLIENT (CTCK) Start SERVER (HNX) Đúng FIX massage chưa? Gửi LogoutMessage Gửi RejectMessage Gửi lại LogoutMessage (đúng sequence) Y N Gửi ResendMessage N Sequence CTCK = HNX Last Msg Seq Num Processed ? N Sequence CTCK < HNX Last Msg Seq Num Processed ? Y CTCK reset lại sequence và tiếp tục gửi message Gửi SequenceReset Message Kết thúc session Gửi LogoutMessage (Đóng kết nối) Y Y Đã gửi hết thông tin cho Client N Hình 2. 4. Sơ đồ giai đoạn đóng kết nối 2.1.4 Một số quy định khi trao đổi dữ liệu của giao thức 2.1.4.1 Quy định đảm bảo tính tuần tự của thông điệp Khi gửi thông điệp trao đổi giữa 2 hệ thống, để đảm bảo tuần tự không bị duplicate FIX sử dụng phương pháp đánh dấu thông điệp thông qua số thứ tự tại trường 34 là số sequense. Theo đó mỗi khi CTCK gửi 1 thông điệp cho HNX thì số sequense lại tăng lên 1 và ngược lại khi HNX gửi thông điệp cho CTCK thì sequense lại tăng lên 1. 2.1.4.2 Khôi phục dữ liệu Căn cứ vào giá tri trường 34 của thông điệp gửi đến mà bên nhận có thể xác định đươc dữ liệu đang bị thiếu hoặc thừa. Khi nhận được thông điệp từ CTCK có số thứ tự lớn hơn số thứ tự mà HNX đang chờ nhận, HNX sẽ không công nhận thông điệp này, đồng thời gửi thông điệp yêu cầu gửi công ty chứng khoán phải gửi thông điệp theo - 10 - đúng số thứ tự. Khi CTCK nhận được thông điệp từ HNX với số thứ tự cao hơn, CTCK vẫn tiếp tục nhận các thông điệp tiếp theo. Đồng thời gửi thông điệp yêu cầu HNX gửi lại các thông điệp bị mất. HNX sẽ gửi lại các thông điệp bị mất. Lưu ý: Việc phân biệt thông điệp thông thường và msssage gửi lại thông qua trường PossDupFlag (Tag 43). Khi gửi lại các thông điệp bị mất thì trường PossDupFlag (Tag 43) sẽ có giá trị Y. 2.1.4.3 Duy trì kết nối Khi gửi thông điệp Logon để thiết lập session kết nối với HNX, CTCK gửi giá trị trong Tag 108 (HeartBtInt) là chu kỳ (tính bằng giây) gửi dữ liệu kiểm tra kết nối. Giá trị này là do CTCK tự đặt nhưng phải lớn hơn 15s, nhỏ hơn 100. Giá trị khuyến cáo mà HNX đưa ra là 30s Khi không có dữ liệu gửi cho HNX, CTCK phải gửi thông điệp TestRequest theo chu kỳ (giá trị trong Tag 108). Khi đó HNX sẽ gửi trả lại thông điệp Heartbeat để trả lời. Nếu có dữ liệu gửi đều đều thì CTCK không phải gửi TestRequest Nếu trong khoảng thời gian là bằng 2 lần HeartBtInt mà HNX hoặc CTCK không nhận được thông điệp thì 2 bên sẽ tự động đóng kết nối. 2.2 Quy trình thực hiện trao đổi dữ liệu giữa CTCK và HNX 2.2.1 Danh mục các quy trình Hiện nay nghiệp vụ trao đổi dữ liệu giữa các CTCK và HNX thông qua 20 quy trình thực hiện, trong đó có 5 quy trình liên quan đến thực hiện kết nối dữ liệu và 15 quy trình liên quan đến trao đổi thông tin nghiệp vụ. STT Tên quy trình Diễn giải I QUY TRÌNH LIÊN QUAN ĐẾN KẾT NỐI 1 Quy trình kết nối Mô tả các bướcthiết lập kết nối giữa Gateway của CTCK và GateWay của HNX 2 Quy trình yêu cầu gửi lại dữ liệu Mô tả các bước HNX gửi lại dữ liệu cho CTCK trong trường hợp CTCK có yêu cầu và ngược lại 3 Quy trình reset lại số thứ tự Mô tả các bước HNX yêu cầu CTCK reset lại số thứ tự khi số thứ tự của CTCK < số thứ tự của HNX 4 Quy trình gửi TestRequest để kiểm tra kết nối Mô tả các bước CTCK gửi TestRequest để kiểm tra trạng thái kết nối
- Xem thêm -