Khớp lệnh thủ công 6 1-

Một phần của tài liệu 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 (Trang 71 - 79)

Hình 4. 3. Màn hình khớp lệnh thủ công

Chức năng này cho phép thực hiện chủ động khớp lệnh một lệnh báo giá hợp lệ

4.1.4 Sửa lệnh

Chức năng này cho phép thực hiện sửa một lệnh báo giá

Hình 4. 4. Sửa lệnh báo giá

Đây là chức năng thực hiện gửi một lệnh quảng cáo đến các công ty chứng khoán để quảng cáo cho việc giao dịch thỏa thuận.

Hình 4. 5. Đặt lệnh quảng cáo

4.2 Kịch bản thử nghiệm

4.2.1 Mục tiêu thử nghiệm

Đây là phần mềm mô phỏng hệ thống khớp lệnh của HNX nên phải đạt được các tiêu chuẩn gần như phần mềm thực tế như xử lý dữ liệu, hiệu năng cao, đảm bảo tính toàn vẹn dữ liệu khi xử lý và luôn sẵn sàng. Có như vậy phần mềm mới có ý nghĩa thực tiễn là sử dụng để kiểm thử các phần mềm giao dịch chứng khoán. Mục tiêu thử nghiệm phần mềm cần:

 Thử nghiệm khả năng quản lý kết nối của hệ thống

 Thử nghiệm khả năng xử lý nghiệp vụ của hệ thống

 Thử nghiệm khả năng xử lý toàn vẹn thông tin

 Thử nghiệm tính hiệu năng của hệ thống

4.2.2 Kịch bản

Tương ứng với mục tiêu thử nghiệm chúng ta có các kịch bản thử nghiệm hệ thống như sau:

Kịch bản thử nghiệm quản lý kết nối:

 CTCK gửi logon thực hiện kết nối tới HNX, với các tình huống:

 Thành công

 Thất bại do sai thông tin kết nối

 CTCK gửi thông điệp HeartBeat duy trì kết nối (định kỳ 30s)

 CTCK gửi logout xin đóng kết nối

 HNX tự đóng kết nối do timeout (sau 60s không nhận được thông điệp từ CTCK)

Kịch bản thử nghiệm xử lý nghiệp vụ:

Kịch bản kiểm tra khả năng xử lý toàn vẹn thông tin

STT Tình huống Điều kiện Kết quả mong đợi

1 CTCK gửi đặt lệnh báo giá

Hệ thống sẵn sàng HNX gửi phản hồi lệnh vào Core

Lệnh được gửi không đúng phiên

HNX gửi lại reject (kèm mã lỗi)

Thông tin lệnh không hợp lệ (Sai mã CK, giá đặt cao hơn giá trần, ...) (adsbygoogle = window.adsbygoogle || []).push({});

HNX gửi lại reject (kèm mã lỗi) Có lệnh đối ứng HNX thực hiện khớp lệnh và gửi phản hồi lệnh khớp Lệnh ATO/ATC hết phiên không được khớp

HNX Gửi kết quả lệnh bị hủy

2 CTCK gửi yêu cầu hủy lệnh báo giá

Trong HNX chưa tồn tại mã lệnh cần hủy

HNX gửi lại reject (kèm mã lỗi)

Lệnh đã bị hủy hoặc đã khớp hết

HNX gửi lại reject (kèm mã lỗi)

Loại lệnh không được hủy

(ATO/ATC)

HNX gửi lại reject (kèm mã lỗi)

Lệnh có thể hủy HNX gửi phản hồi hủy lệnh thành công

3 CTCK gửi yêu cầu sửa lệnh

Lệnh thỏa mãn điều kiện có thể sửa

HNX gửi phản hồi sửa lệnh thành công.

4 CTCK gửi lệnh quảng cáo

Lệnh quảng cáo yêu cầu gửi đến toàn thị trường

HNX forward các lệnh quảng cáo đến tất cả các máy trạm kết nối tới

STT Tình huống Điều kiện Kết quả mong đợi 1 CTCK gửi 100 thông điệp đặt lệnh liên tục, số sequense tăng từ 1 đến 100 Khi CTCK gửi đến thông điệp cuối cùng thì thực hiện ngắt kết nối.

Khi kết nối lại CTCK thực hiện gửi thông điệp thứ 101. Ngắt kết nối nhưng HNX vẫn nhận đủ 100 thông điệp HNX nhận thông điệp thứ 101 bình thường HNX không nhận đủ 100 thông điệp (giả sử chỉ nhận 80)

HNX sẽ từ chối thông điệp thứ 101 và gửi lại CTCK thông điệp ResendRequest yêu cầu gửi lại các thông điệp từ 81-100 2 CTCK gửi 100 thông điệp đặt lệnh liên tục, số sequense tăng từ 1 đến 100 Trong lúc đang thực hiện gửi thì ngắt kết nối đến HNX. Lúc này CTCK chỉ nhận được phản hồi đã gửi thành công 80 thông điệp Khi kết nối lại CTCK thực hiện gửi thông điệp thứ 81.

Thời điểm ngắt kết nối HNX chỉ nhận được 80 thông điệp

HNX nhận thông điệp thứ 81 bình thường

Thời điểm ngắt kết nối HNX nhận được nhiều hơn 80 thông điệp (giả sử 85) nhưng khi gửi lại phản hồi xác nhận với CTCK thì do ngắt đường truyền nên chỉ gửi xác nhận được 80 thông điệp

HNX sẽ không nhận thông điệp thứ 81 đồng gửi gửi lại thông điệp ResetMessage yêu cầu CTCK reset lại số sequense (trường 34) về 85.

Kịch bản thử nghiệm hiệu năng của hệ thống

4.3 Đánh giá kết quả

Kết quả đạt được:

Bằng việc thử nghiệm các kịch bản như đã nêu ở phần trên, kết quả thu được như sau:

- Phần thử nghiệm khả năng quả lý kết nối: Kết quả đạt như mong đợi, phần mềm có khả năng quản lý và duy trì kết nối như môi trường thực tế.

- Phẩn thử nghiệm xử lý nghiệp vụ: Phần mềm mô phỏng đáp ứng chính xác như kết quả mong muốn, các kết quả xử lý đúng với nghiệp vụ chứng khoán hiện hành. (adsbygoogle = window.adsbygoogle || []).push({});

- Thử nghiệm khả năng xử lý toàn vẹn thông tin: Kết quả đạt được như kết quả mong muốn của kịch bản

STT Tình huống Điều kiện Kết quả mong đợi

1

Bắt đầu từ 1 máy trạm và tăng dần số máy trạm (CTCK) gửi lệnh vào HNX, mỗi máy trạm gửi 1000 lệnh báo giá (gồm cả lệnh bán và mua) liên tục đến HNX Thị trường ở phiên giao dịch liên tục và sẵn sàng nhận lệnh - Tốc độ nhận lệnh 100 lệnh/giây trở lên

- Thời gian gửi và thời gian nhận (được ghi lại ở file log máy trạm và máy chủ) không quá 10ms.

- Thời gian Server nhận được thông điệp (ghi nhận ở log file) và thời gian đưa thông điệp vào Core (lấy từ RequestQueue ra xử lý) không vượt quá 30ms.

2

Sử dụng 3 máy trạm (CTCK), mỗi máy trạm gửi 800 lệnh báo giá (gồm cả lệnh bán và mua) và gửi 200 yêu cầu hủy các lệnh trên. Mã lệnh hủy được chọn ngẫu nhiên trong 800 lệnh.

- Thị trường ở phiên giao dịch liên tục và sẵn sàng nhận lệnh - Khi một lệnh được gửi vào hệ thống sẽ xử lý ngẫu nhiên 1 trong 2 cách là hủy lệnh hoặc khớp hết

- Không xảy ra trường hợp hủy một lệnh đã khớp.

- CTCK không được gửi một yêu cầu hủy tới một lệnh đã bị hủy hoặc đã khớp hết

- Thử nghiệm hiệu năng hệ thống:

Với kịch bản 1: Hệ thống đáp ứng đúng kết quả mong đợi với số máy trạm <=3.

Khi lên 4 máy trạm gửi liên tục trong điều kiện đường truyền tốt thì thời gian chênh lệch giữa lúc nhận được thông điệp và phản hồi vào Core lớn hơn 50ms.

Với kịch bản 2: Có 5 lệnh hủy không đúng yêu cầu, lệnh đã khớp mà CTCK vẫn

gửi lệnh hủy. Nguyên nhân vì khi đó Server đã thực hiện khớp lệnh thành công, kết quả đã được đưa vào ResponseQueue nhưng chưa kịp gửi về máy trạm thì máy trạm thực hiện gửi lệnh hủy. Trong thực tế cũng không tránh được tình huống này.

Hạn chế:

Do bị hạn chế về thời gian nên phần mềm tuy đã đạt được các yêu cầu về nghiệp vụ nhưng chưa hoàn thiện về hiệu năng. Phần mềm chưa mới thực hiện kết nối tới 4 máy trạm và chưa có điều kiện mở rộng số máy trạm kết nối đến.

Do chỉ dừng ở ứng dụng mô phỏng nên phần mềm được xây dựng trên các công nghệ tương đối cơ bản (.Net 2010 và SQL server 2008), các cấu trúc dữ liệu như Message Queue được thiết kế dưới dạng Memory Queue và Database Queue nên chưa phát huy được hiệu năng như thực tế sử dụng các Message Queue hiện đại như IBM MQ, Active MQ, ...

Phần mềm mới tập trung xây dựng các chức năng liên quan đến giao dịch như khớp lệnh, hủy sửa lệnh, ... Chưa xây dựng được các chức năng tính toán các chỉ số thị trường, còn nhiều hạn chế về giải thuật khớp lệnh định kỳ.

KẾT LUẬN

Với sự phát triển mạnh mẽ về công nghệ đang tạo ra sự đa dạng hóa về chất lượng phong phú về hình thức các hệ thống phần mềm tài chính. Trong thời đại hội nhập ngày nay nhu cầu trao đổi dữ liệu giữa các hệ thống nói chung và hệ thống tài chính nói riêng đang trở nên phổ biến và phát triển mạnh mẽ. Các phần mềm tin học không còn hoạt động với dữ liệu thông tin nội bộ một doanh nghiệp quốc gia nào mà luôn là một thành phần của mạng lưới rộng lớn. Sự cần thiết nhu cầu giao tiếp dữ liệu giữa các hệ thống tin học tài chính đang đặt ra yêu cầu cần thiết phải có những chuẩn giao thức chung để đơn giản hóa vấn đề tích hợp này. FIX ra đời để giải quyết vấn đề trao đổi dữ liệu giữa các hệ thống sàn giao dịch chứng khoán cũng là tiên phong trong lĩnh vực tích hợp giữa các hệ thống tài chính bằng chuẩn giao thức chung.

Với đề 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” tác

giả đã giới thiệu được nội dung chi tiết về chuẩn giao thức FIX đang được áp dụng rộng rãi tại các sàn giao dịch chứng khoán trên thế giới. Cùng với việc đi sâu nghiên cứu về chuẩn giao thức FIX tác giả cũng nghiên cứu framework mã nguồn mở QuickFix như là một thư việc hỗ trợ xây dựng các ứng dụng dựa trên FIX và áp dụng vào xây dụng một phần mềm mô phỏng tuân thủ đúng các nghiệp vụ tại sàn giao dịch chứng khoán Hà Nội. Phần mềm là sự áp dụng các kết quả nghiên cứu lý thuyết về FIX và nghiệp vụ chứng khoán Việt Nam nhằm cung cấp một công cụ hữu hiệu để kiểm thử các phần mềm giao dịch chứng khoán tại thị trường Việt Nam. Sự ra đời của ứng dụng mô phòng này sẽ giúp tiết kiệm rất nhiều chi phí kiểm thử của phần mềm giao dịch chứng khoán, bằng việc kết nối với ứng dụng này để thực hiện kiểm thử trước các giao dịch chứng khoán sẽ giúp khẳng định được chất lượng hoạt động khi các CTCK kết nối thực sự vào Sở giao dịch chứng khoán Hà Nội.

Ứng dụng được thiết kế trên một kiến trúc phân tầng 3 lớp gồm các module tương đối độc lập nhau. Đây được coi là một kiến trúc mềm dẻo và linh hoạt để chỉnh sửa khi có sự thay đổi về yêu cầu nghiệp vụ. Ứng dụng sử dụng chuẩn FIX sẽ độc lập về công nghệ nên sẽ được sử dụng rộng rãi, không phân biệt các phần mềm máy trạm kết nối đến được xây dựng trên công nghệ gì. Với những đặc điểm đó, phần mềm mô phỏng sẽ được kỳ vọng mang lại nhiều hữu ích thực tế cho lĩnh vực phần mềm giao dịch chứng khoán tại Việt Nam.

Hướng nghiên cứu tiếp theo của đề tài là tập trung cải tiến FIX. Mục tiêu đặt ra là tìm cách mã hóa các FIX Message trên đường truyền nhằm tăng độ bảo mật và nén các FIX Message để tiết kiệm băng thông đường truyền nhằm tối ưu hiệu năng cho các hệ thống giao dịch lớn.

TÀI LIỆU THAM KHẢO Tiếng Việt

1. Sở Giao dịch chứng khoán Hà Nội, Quyết định số 54/QĐ-SGDHN về việc ban hành Quy chế Giao dịch Chứng khoán tại Sở Giao dịch chứng khoán Hà Nội. 2. Quốc Hội nước cộng hòa xã hội chủ nghĩa Việt Nam. Luật Chứng khoán số

70/2006/QH11, Luật Chứng khoán sửa đổi bổ sung số 62/2010/QH12 ngày 24/11/2010. (adsbygoogle = window.adsbygoogle || []).push({});

3. Bộ Tài chính (01/06/2011), Thông tư 74/2011/TT-BTC về hướng dẫn giao dịch chứng khoán.

Tiếng Anh

4. Prof. Dr. Bernd Ulmann (2010), FIX Protocol basics.

5. Khader Shaik (2010), Fixed Income TradingandPlatform Architecture.

6. FIX Protocol Limited Exchanges and ECNs Working Group.

7. Stefano Mostarda, Marco De Sanctis, and Daniele Bochicchio (May, 2011),

Entity Framework 4 in Action

8. Julia Lerman (15 Apr 2010), Programming Entity Framework: Building Data Centric Apps with the ADO.NET Entity Framework

9. Scott Klein (March 25, 2010), Pro Entity Framework 4.0

Website

10. http://www.fixtradingcommunity.org/ 11. http://www.quickfixn.org/

Một phần của tài liệu 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 (Trang 71 - 79)