Giao thức FIX hoạt động như thế nào 07/03/2022 – Posted in: Forex trading

Giới thiệu

Lịch sử giao dịch trên thị trường chứng khoán đã thay đổi đáng kể kể từ khi ra đời. Những sở giao dịch chứng khoán đầu tiên xuất hiện cách đây khoảng bốn trăm năm. Khi đó, các giao dịch được thực hiện bằng lời nói, quy tắc giao dịch mới chỉ bắt đầu hình thành. Nhưng thế giới không đứng yên, và theo kịp thời đại, các sở giao dịch đã áp dụng mọi công cụ kỹ thuật có thể có vào thời điểm đó.

Vì vậy, vào giữa thế kỷ 19, các lệnh giao dịch từ xa đến sở giao dịch được kết nối qua đường dây điện báo. Sau đó điện thoại thay thế điện báo. Và cuối cùng đến thời điểm những yêu cầu giao dịch đầu tiên của nhà giao dịch được truyền qua mạng Internet.

Công bằng mà nói, giao dịch qua điện thoại đôi khi vẫn còn tồn tại ngày nay ở một số broker. Và với một số trong đó, đây là cách duy nhất được đảm bảo để thực hiện giao dịch. Ngoài ra, từ khi có những sở giao dịch đầu tiên cho đến đầu thế kỷ 21, các giao dịch ngay tại sàn của sở giao dịch được thực hiện bằng lời nói. Những sàn giao dịch như vậy được gọi là stock pit và là cảnh tượng quen thuộc với chúng ta qua các bộ phim Hollywood cùng chủ đề.

Lịch sử giao thức FIX

Một trong những giao thức giao dịch số lâu đời nhất là giao thức FIX. Tên viết tắt của “Financial Information Protocol” hoặc “FInancial eXchange protocol”, cả hai định nghĩa đều được sử dụng. Đặc tả giao thức FIX được tạo ra năm 1992 để trao đổi thông tin giao dịch cổ phiếu giữa Fidelity Investments và Salomon Brothers. Các broker và quỹ đầu tư muốn đẩy nhanh quy trình giao dịch trên sở giao dịch. Kết quả là một tiêu chuẩn mở để truyền thông tin điện tử mà không tổ chức lớn nào kiểm soát. Ngày nay, FIX đã trở thành tiêu chuẩn ngành được những người tham gia thị trường tài chính ở nhiều quốc gia sử dụng để kết nối sản phẩm của họ.

Ban đầu, giao thức truyền thông này chỉ được dùng giữa hai bên đã nêu ở trên, được gọi là SBX (Salomon Brothers Exchange) và chỉ dùng cho giao dịch cổ phiếu. Sau đó, theo câu chuyện kể lại, lãnh đạo của các công ty này, nhận ra tầm quan trọng của phát minh, đã mời Goldman Sachs và Putman tham gia phát triển. Từ đó giao thức mang tên gọi hiện tại.

Ban đầu, giao thức chỉ hỗ trợ 17 loại thông điệp và 103 tag. Ý tưởng này thành công đến mức đến năm 1995, hơn 70% các công ty môi giới tại Mỹ đã sử dụng giao thức. Điều này nhờ tiết kiệm chi phí, giảm chi phí và giảm lỗi giao dịch. Rốt cuộc, yếu tố con người có ảnh hưởng rất lớn khi giao dịch qua điện thoại. Theo thời gian, giao thức được mở rộng đáng kể. Hỗ trợ cho giao dịch phái sinh, trái phiếu và tiền tệ được bổ sung. Đặc tả FIX hiện tại mô tả 168 thông điệp, 7,868 tag và bao quát mọi loại chứng khoán. Năm 1998, việc phát triển giao thức FIX và các đặc tả của nó, cũng như phát triển các công nghệ liên quan, được chuyển giao cho hiệp hội FIX Protocol Ltd. Hiệp hội này sau đó được đổi tên thành FIX Trading Community. Hiện có hơn 270 tổ chức tài chính hàng đầu là thành viên của tổ chức.

Giao thức FIX hoạt động như thế nào

Giao thức FIX chạy trên TCP. Hiện nay, mô hình giao thức FIX được định nghĩa ở hai tầng – tầng phiên hay tầng điều khiển (tạo phiên, đảm bảo truyền dữ liệu) và tầng ứng dụng (mô tả nội dung dữ liệu). Tầng điều khiển chịu trách nhiệm cho các tham số cơ bản của phiên FIX: mở và đóng kết nối, khôi phục thông điệp bị mất. Tầng ứng dụng kiểm soát việc gửi và nhận dữ liệu: yêu cầu, khớp lệnh, từ chối, dữ liệu thị trường và yêu cầu thông tin trạng thái. Bản thân giao thức là dạng văn bản, tức là dùng các ký tự trong bảng ASCII. Nó được chia thành 2 cách biểu diễn – truyền thống, dạng Tag=Value (Tag=Value hoặc Key=Value), và biểu diễn XML (FIXML). Phiên bản mới nhất hiện là 5.0, nhưng phổ biến nhất là phiên bản 4.2 và 4.4. Các broker và sở giao dịch khác nhau có thể dùng các phiên bản giao thức khác nhau, đôi khi dùng nhiều phiên bản cùng lúc.

Cú pháp Tag=Value

Thông điệp có dạng tương tự như sau:

8=FIX.4.2 | 9=178 | 35=D | 34=1234567 | 49=TESTER | 56=PHLX | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 54=1 | 167=FUT | 55=MSFT | 38=15 | 40=2 | 44=15 | 59=0 | 10=128 |

Đây là một chuỗi văn bản gồm nhiều phần được phân tách bằng dấu gạch đứng. Các phần này được gọi là trường (field). Đến lượt mình, mỗi phần gồm một cặp khóa-giá trị được phân tách bằng dấu bằng. Bên trái dấu là khóa, bên phải là giá trị. Trong đặc tả FIX, khóa được gọi là tag. Tag luôn là một số nguyên dương, về bản chất là con trỏ tới tên trường. Tất cả tên trường và các giá trị có thể có của chúng được mô tả trong tài liệu của từng sở giao dịch cụ thể. Phần lớn các trường này là tiêu chuẩn và có thể tìm thấy trong tài liệu của bất kỳ sở giao dịch nào. Ngoài ra còn có các trường tùy chỉnh, được định nghĩa và chỉ có ý nghĩa trong phạm vi một sở giao dịch cụ thể. Nếu mô tả các trường tiêu chuẩn có thể tìm thấy trong đặc tả chung của giao thức FIX, thì các trường tùy chỉnh phải được mô tả trong đặc tả giao thức FIX của sở giao dịch. Còn có các trường bắt buộc, tùy chọn và bắt buộc có điều kiện (bắt buộc tùy thuộc vào sự có mặt của một số trường khác trong thông điệp). Ký tự SoH (Start of Header) được dùng làm dấu phân cách giữa các trường. Thực tế nó không hiển thị, nên trong ví dụ này được thay bằng dấu gạch đứng. Trong mã hóa UNICODE, ký tự này có mã “\u0001”.

Đến lượt mình, trong khi thông điệp được chia thành các trường, các trường đó lại xác định thêm 3 thành phần:

  • Header (phần đầu thông điệp)
  • Body (phần thân thông điệp)
  • Message Trailer (checksum)

 

Trong FIXT.1.1/FIX 5.0, phần header chứa 5 trường bắt buộc và một trường tùy chọn: 8 (BeginString), 9 (BodyLength), 35 (MsgType), 49 (SenderCompID), 56 (TargetCompID) và 1128 (ApplVerID – nếu có, phải ở vị trí thứ 6). Có hai nhóm thông điệp chính – quản trị và ứng dụng. Thông điệp quản trị xử lý những vấn đề cơ bản của một phiên FIX. Chúng cho phép bắt đầu và kết thúc phiên, cũng như khôi phục các thông điệp bị bỏ lỡ. Thông điệp ứng dụng liên quan đến việc gửi và nhận thông tin giao dịch, chẳng hạn như yêu cầu đặt lệnh hoặc thông tin về trạng thái hiện tại và việc khớp lệnh tiếp theo của lệnh đó.

Chúng ta sẽ phân tích thông điệp này:

  • 8=FIX.4.2 – BeginString. Phiên bản giao thức được sử dụng. Cho chương trình giao dịch biết cần áp dụng quy tắc nào để phân tích các trường của thông điệp này.
  • 9=178 – BodyLength. Độ dài phần thân thông điệp là 178 byte, bao gồm cả header. Được tính bằng số ký tự từ tag 35 (bao gồm) đến tag 10 (không bao gồm). Ký tự phân cách SoH cũng được tính.
  • 35=D – MsgType. Loại thông điệp. Trong trường hợp này, D nghĩa là đặt yêu cầu giao dịch. Ví dụ, trường 35=V cho biết đang nhận dữ liệu thị trường về công cụ.
  • 34=1234567 – MsgSeqNum. Số thứ tự thông điệp. Nếu MsgSeqNum của các thông điệp không chênh nhau đúng 1 theo trình tự gửi, máy chủ sẽ trả về lỗi và không xử lý thông điệp.
  • 49=TESTER – SenderCompID. ID người gửi. Do sở giao dịch cấp. Có thể là tên người dùng, hoặc tên broker nếu thông điệp do broker gửi.
  • 56=PHLX – TargetCompID. ID người nhận. Cũng do sở giao dịch cấp.
  • 52=20071123-05:30:00.000 – SendingTime. Ngày và giờ gửi thông điệp.
  • 11=ATOMNOCCC9990900 – ClOrdID. Số lệnh trong hệ thống giao dịch của broker.
  • 54=1 – Side. Hành động mua tài sản
  • 167=FUT – SecurityType. Tài sản là hợp đồng tương lai
  • 55=MSFT – Symbol. Cổ phiếu Microsoft. Mã ticker có thể khác nhau giữa các sở giao dịch.
  • 38=15 – OrderQty. Khối lượng giao dịch là 15 lot hoặc hợp đồng.
  • 40=2 – OrdType. Mua với giá giới hạn, lệnh giới hạn.
  • 44=15 – Price. Giá mua – 15
  • 59=0 – TimeInForce. Thời hạn hiệu lực của lệnh là đến cuối ngày làm việc.
  • 10=128 – CheckSum. Tổng kiểm tra của thông điệp. Luôn là trường cuối cùng trong thông điệp. Nó được tính bằng công thức đặc biệt được mô tả trong đặc tả giao thức. Giá trị được xác định bằng cách cộng giá trị ASCII của tất cả các ký tự trong thông điệp, trừ các ký tự của trường checksum. Sau đó giá trị này được chia cho 256 và lấy phần dư. Checksum luôn phải dài ba ký tự. Vì vậy, nếu phần dư là 22, thì thêm số không vào trước – “022”.

 

Mô tả tổng quát, thông điệp này là hành động mua hợp đồng tương lai cổ phiếu Microsoft với số lượng 15 hợp đồng ở mức giá giới hạn 15, có hiệu lực đến cuối ngày.

Để tăng tính linh hoạt cho FIX, giao thức có các trường do người dùng định nghĩa, gọi là User Defined Fields. Chúng được dùng để truyền dữ liệu giữa các tổ chức tài chính hợp tác với nhau. Các số tag từ 5000 đến 9999 được dành riêng cho các trường tùy chỉnh, có thể đăng ký trên trang web chính thức của tiêu chuẩn. Các số này sau đó đã được sử dụng hết, nên một khoảng mới được cấp phát, từ 20,000 đến 39,999.

Cú pháp FIXML

Việc xây dựng cú pháp bắt đầu năm 1998 và phiên bản đầu tiên được phát hành năm 1999. Về ngữ nghĩa, nó tương đương với các thông điệp được mã hóa bằng tag, nhưng sử dụng công nghệ phân tích XML. Một lệnh mới ở định dạng FIXML có dạng như sau:

<FIXML>

<Order ClOrdID=”123456″ Side=”2″ TransactTm=”2001-09-11T09:30:47-05:00″ OrderTyp=”2″ Px=”93.25″

Acct=”26522154″>

<Instrmt Sym=”IBM” ID=”459200101″ IDSrc=”1″/>

<OrdQty Qty Qty=”1000″/>

</Order>

</FIXML>

Trong định dạng XML, một khối mã cụ thể được bao bởi cái gọi là thẻ (một loại tag khác, không phải tag mà giao thức sử dụng). Ví dụ, có thẻ cấp cao nhất <FIXML>. Mỗi thẻ mở ra một đoạn mã hoặc thông điệp cụ thể và đóng lại bằng chính thẻ đó, nhưng bên trong ở cạnh trái có ký tự gạch chéo. Như vậy, thẻ đã nêu sẽ đóng khối như sau: </FIXML>.

Tiếp theo, bên trong thẻ này, chúng ta thấy thẻ sau:

<Order ClOrdID=”123456″ Side=”2″ TransactTm=”2001-09-11T09:30:47-05:00″ OrderTyp=”2″ Px=”93.25″

Acct=”26522154″>.

Ở đây chúng ta thấy tên thẻ – Order, và bên trong dấu ngoặc là thông tin bổ sung (cũng là các trường, cặp key=value giống như cú pháp Tag=Value).

Trong trường hợp này:

ClOrdID=”123456″ – id lệnh trong hệ thống giao dịch của broker

Side=”2″ – Lệnh bán

TransactTm=”2001-09-11T09:30:47-05:00″ ngày và giờ giao dịch

OrdTyp=”2″ – Loại lệnh – lệnh giới hạn

Px=”93.25″ – Giá tài sản để mua hoặc bán

Acct=”26522154″ – số tài khoản người dùng

Giống như thẻ XML trước, thẻ XML này được đóng bằng dấu gạch chéo – </Order>

Nội dung giữa thẻ XML mở và thẻ đóng được gọi là phần thân của thẻ. Như vậy, thẻ Order là phần thân của thẻ FIXML. Bên trong thẻ Order, với vai trò phần thân, có thêm hai thẻ: Instrmt và OrdQty.

Thẻ tiếp theo:

<Instrmt Sym=”IBM” ID=”459200101″ IDSrc=”1″/>

Ở đây chúng ta thấy thẻ này vừa mở vừa đóng cùng lúc, ở cuối có dấu gạch chéo. Trường hợp này xảy ra khi thẻ không có phần thân và không cần tạo thẻ đóng riêng. Thẻ này chứa thông tin về mã ticker của công cụ, id của nó, v.v.

Trong thẻ <OrdQty Qty=”1000″/> chúng ta thấy thông tin về khối lượng giao dịch, đây cũng là thẻ tự đóng không có phần thân.

 

FIXML thường được dùng cho các ứng dụng back-office và bù trừ, không dùng để giao dịch.

Tầng phiên FIX

Các ví dụ trước đã mô tả tầng ứng dụng. Đặc tả định nghĩa các loại trường đặc biệt chịu trách nhiệm cho tầng phiên giữa khách hàng và sở giao dịch:

  • 35=A – Logon. Dùng để xác thực người dùng với hệ thống sở giao dịch khi kết nối. Thông điệp này được gửi đầu tiên và báo cho sở giao dịch biết bắt đầu phiên dữ liệu. Khi gửi thành công sẽ nhận được thông điệp phản hồi. Nếu kết nối thất bại, lỗi sẽ được trả về.
  • 35=5 – Logout. Thông điệp này dùng để hủy xác thực với máy chủ và đóng phiên giao dịch với sở giao dịch.
  • 35=0 – Heartbeat. Nhịp tim, hay xung. Thông điệp này được hai bên kết nối gửi cho nhau và cho biết cả hai bên đều sẵn sàng nhận và gửi thông điệp. Tần suất heartbeat được thiết lập trong thông điệp Logon đầu tiên.
  • 35=1 – Test Request. Đây là thông điệp kiểm tra, được gửi khi bên đối tác không gửi thông điệp heartbeat trong khoảng thời gian đã định. Phiên sẽ bị đóng nếu thông điệp này không được phản hồi.
  • 35=2 – Resend Request. Thông điệp này là yêu cầu gửi lại thông điệp nếu có thông tin bị bỏ lỡ.
  • 35=3 – Reject, hay từ chối. Được bên đối tác gửi nếu thông điệp trước bị sai định dạng hoặc không thể thực hiện.
  • 35=4 – Sequence Reset, hay đặt lại trình tự gửi thông điệp. Nó có thể có hai dạng.

– 123=”Y” – Có tag GapFillFlag với giá trị đã chỉ định. Cho biết yêu cầu bỏ qua các thông điệp quản trị nếu chúng đang được gửi lại.

– dùng để đặt bộ đếm MsgSeqNum về 0

Triển khai FAST như một cải tiến cho FIX API

Khối lượng dữ liệu FIX lớn bị chậm trễ đáng kể khi xử lý, khiến nhà giao dịch khó phát triển các chiến lược giao dịch hiệu quả. Ngay sau khi nhận ra vấn đề này, những bước đầu tiên để khắc phục tình hình đã được thực hiện. Mục tiêu của giao thức FAST là cho phép truyền khối lượng dữ liệu lớn, tránh chậm trễ khi nhận thông tin. FAST (FIX Adapted for STreaming, nghĩa là FIX được điều chỉnh cho truyền luồng) là một tiêu chuẩn công nghệ do FIX Protocol Ltd. phát triển, được thiết kế riêng để tối ưu hóa việc biểu diễn dữ liệu trên mạng. Về bản chất, đây là định dạng nhị phân của giao thức FIX và cho phép truyền lượng lớn thông tin về giao dịch và môi trường thị trường ở dạng nén gọn. Điều này cho phép dùng nó trong các hệ thống giao dịch tốc độ cao đòi hỏi độ trễ truyền thấp. FAST được phát triển tại Viện Công nghệ California ở Pasadena. Hiện nay, phiên bản mới nhất là FAST 1.2. Ứng dụng phổ biến nhất – kết nối trực tiếp đến sở giao dịch, bỏ qua hệ thống giao dịch của broker. Giao thức FAST là giao thức phân phối thông tin thị trường được chuẩn hóa và phổ biến nhất thế giới. Trước đây, toàn bộ lưu lượng Internet dựa trên hệ thống Transmission Control Protocol (TCP), được phát triển vào những năm bảy mươi của thế kỷ trước. TCP là kết nối socket yêu cầu xác nhận việc gửi gói tin. Nó chia các tệp và thông điệp lớn thành các gói 1500 byte, mỗi gói chứa địa chỉ nguồn và đích. Bên gửi chờ xác nhận gói đã gửi được chuyển thành công, rồi mới gửi gói tiếp theo. Nếu việc gửi thất bại hoặc tín hiệu xác nhận không đến trong thời gian chờ quy định, gói tin sẽ được gửi lại, nhưng với tốc độ thấp hơn. Và việc này có thể kéo dài bao lâu cũng được, với tốc độ giảm theo cấp số nhân, cho đến khi nhận được tín hiệu gửi thành công. Rõ ràng là ngay cả những sự cố nhỏ trên đường truyền cũng có thể ảnh hưởng nghiêm trọng đến tốc độ dữ liệu, vì mỗi lần gửi thất bại là mất đi những mili giây quý giá. Vì vậy, FAST đưa ra một giải pháp – hệ thống liên tục giám sát các gói tin và thông điệp nhận được để đảm bảo việc gửi thành công, nhằm phát hiện ngay sự cố trên đường truyền và đặt lần gửi tiếp theo ở tốc độ ổn định, dù có giảm nhẹ. Cách tiếp cận này loại bỏ nhu cầu gửi lại gói tin trong hầu hết các trường hợp, vì không mất thời gian dò tìm hiệu suất chậm. Ở một số sở giao dịch, giao diện kết nối được triển khai qua hai loại kết nối: UDP và TCP. Gửi tất cả dữ liệu qua socket UDP là không hợp lý, vì loại kết nối này không yêu cầu xác nhận gửi, và các gói tin có thể đơn giản là biến mất mà không bên nào biết. Do đó, phần lớn dữ liệu được truyền qua socket UDP, và chỉ các tập dữ liệu chưa được gửi thành công mới được truyền qua TCP. Trong các thị trường biến động nhanh, độ trễ do truyền lại thường là điều không mong muốn, dẫn đến bỏ lỡ cơ hội hoặc giao dịch xấu.

FAST hoạt động như thế nào

Như đã biết, giao thức FIX là một chuỗi các trường, mỗi trường gồm các cặp key=value. Ngoài việc định dạng chuỗi về bản chất là dư thừa, bạn có thể nhận thấy mỗi thông điệp có các phần tử lặp lại, như tên trường và ký tự “=”. FAST loại bỏ sự dư thừa bằng cách sử dụng một template mô tả toàn bộ cấu trúc thông điệp. Phương pháp này được gọi là gắn tag ngầm định. Vì các tag FIX trong dữ liệu truyền đi chỉ được “ngầm hiểu”, cú pháp Tag = Value thay đổi như sau:

  • Template mô tả một tập hợp có cấu trúc các trường cùng các toán tử của chúng;
  • Thứ tự trường trong thông điệp khớp với thứ tự tag trong template;
  • Chỉ những thay đổi dữ liệu được gửi trong thông điệp.

Mỗi giá trị tag có độ dài cố định tính bằng byte. Khi biết độ dài của một trường cụ thể và thứ tự sắp xếp các trường trong thông điệp, không khó để xác định giá trị của các trường đó trong thông điệp. Do đó, template cho phép chỉ truyền trực tiếp bản thân dữ liệu, không cần truyền các ký tự dư thừa. Cách mã hóa này được gọi là mã hóa nhị phân đơn giản, hay SBE. Như vậy, mã hóa và giải mã thông điệp có độ trễ thấp hơn nhiều so với các giao thức dạng ký tự, vì không cần chuyển dữ liệu sang định dạng mà máy tính có thể sử dụng. Vì các trường tương ứng nằm ở vị trí cố định trong thông điệp, việc truy cập giá trị mong muốn dễ dàng hơn nhiều. Bạn chỉ cần biết độ lệch của nó so với đầu thông điệp và độ dài giá trị của nó. Không giống tag và FIXML, thông điệp SBE không tự mô tả. Chỉ dữ liệu với một header tối thiểu được gửi qua mạng để xác định template điều khiển thông điệp. Metadata (các template) mô tả cấu trúc thông điệp được trao đổi bên ngoài kênh truyền thông chính. Sau khi nhận được các template cần thiết, máy chủ giao dịch biết định dạng nào để gửi dữ liệu cho khách hàng trong phạm vi phiên kết nối này. Như vậy, trước khi truyền dữ liệu, các hệ thống thỏa thuận trước với nhau về cách giao tiếp sau này. Lược đồ thông điệp thường được gửi ở định dạng XML. Nó có thể chứa bất kỳ số lượng template thông điệp nào. Template mô tả các trường tạo nên thông điệp. Ngoài ra, lược đồ cung cấp danh sách các kiểu dữ liệu đơn giản và phức tạp có thể tái sử dụng trong bất kỳ số lượng trường nào.

Các bản triển khai mã nguồn mở cho giao thức FIX trên nhiều ngôn ngữ

Java – QuickFIX/J – http://www.quickfixj.org/

.NET/C# – QuickFIX/N – http://quickfixn.org/

Công cụ phân tích thông điệp FIX trực tuyến miễn phí – FIX Parser – https://fix.aprics.net/

Các bản triển khai mã nguồn mở cho FAST

Cho C – Bản triển khai tham chiếu từ FPL – www.fixprotocol.org/fastdownload

Cho C# – Bản triển khai tham chiếu từ FPL – www.fixprotocol.org/fastdownload

Cho Java – OpenFAST – www.openfast.org

www.sourceforge.net/projects/openfastdotnet/

Cho C++ – QuickFAST – www.quickfast.org

Cho Golang – goFAST – www.github.com/co11ter/goFAST

Các cách mã hóa khác của giao thức FIX

Cộng đồng FIX cũng đã phát triển các ánh xạ tiêu chuẩn giữa giao thức FIX và các giao thức tuần tự hóa dữ liệu khác như:

  • JSON
  • Google (Protocol buffers)

|ASN.1

Lĩnh vực ứng dụng giao thức FIX/FAST

Thông thường, hai tên viết tắt này đi cùng nhau. Được dùng để nhận nhiều loại thông tin tài chính từ các sở giao dịch: bảng công cụ tài chính (giá, khối lượng, v.v.), báo giá, tất cả giao dịch, chỉ số, cũng như thông tin về tất cả các lệnh ẩn danh. Tập dữ liệu nhận được có thể khác nhau tùy theo sở giao dịch. Các ứng dụng chính của FIX/FAST là:

  • Nhà giao dịch cá nhân dùng để giao dịch [Giao dịch forex qua FIX API]
  • Lập trình viên xây dựng sản phẩm dựa trên công nghệ này. Chẳng hạn như – nền tảng giao dịch FIX API, bộ kết nối đến các sở giao dịch khác nhau, hệ thống giao dịch, hệ thống thu thập dữ liệu và thống kê.
  • Trao đổi thông tin giữa các sở giao dịch
  • Cung cấp dữ liệu cập nhật nhất cho các hãng thông tấn

Ứng dụng phổ biến nhất là giúp các nhà giao dịch tần suất cao có lợi thế so với những người chơi khác trên thị trường thông qua Truy cập thị trường trực tiếp (DMA). Giao thức này có thể được các sở giao dịch chứng khoán, ngân hàng và broker forex tích hợp vào hệ sinh thái giao dịch. Theo dữ liệu phổ biến, các sàn giao dịch tiền mã hóa không sử dụng công nghệ này. Trong lịch sử, các sàn này chủ yếu dùng kết nối WebSocket để nhận thông tin thị trường và kết nối HTTP REST API để thực hiện các thao tác giao dịch, nhằm cung cấp kết nối trực tiếp tới máy chủ giao dịch của nhà giao dịch. Nếu công nghệ WebSocket vẫn có tốc độ tương đương kết nối TCP, thì HTTP REST API chậm hơn rất nhiều. Tìm hiểu về SharpTrader Easy FIX API