REST, WebSocket, FIX và MT5 thường được trình bày như bốn API forex cạnh tranh. Chúng không phải là như vậy.

REST thường là cách sạch nhất để yêu cầu dữ liệu tài khoản, tải lịch sử hoặc gửi một lệnh thỉnh thoảng. WebSocket giữ kết nối mở để giá cả và cập nhật đơn hàng có thể đến khi chúng xảy ra. FIX là một tiêu chuẩn nhắn tin tài chính được sử dụng cho việc định tuyến đơn hàng, báo cáo thực hiện và dữ liệu thị trường giữa các hệ thống giao dịch chuyên nghiệp. MT5 là một nền tảng giao dịch với nhiều API cho các công việc khác nhau.

Một nhà môi giới có thể sử dụng cả bốn. Một ứng dụng di động có thể tải một tài khoản qua REST, truyền giá qua WebSocket, gửi đơn hàng vào MetaTrader 5 và chuyển hướng rủi ro bên ngoài đến một nhà cung cấp thanh khoản thông qua FIX. Mỗi giao diện thuộc về một phần khác nhau của giao dịch.

Giao diệnMô hình giao tiếpPhù hợp nhấtKhông phù hợp
REST APIKhách hàng gửi yêu cầu và nhận phản hồiQuy trình đăng nhập, tài khoản, biểu tượng, lịch sử, báo cáo và lệnh tần suất thấpLuồng giá liên tục thông qua việc truy vấn lặp lại
WebSocket APIKhách hàng và máy chủ duy trì kết nối hai chiều mởBáo giá trực tiếp, độ sâu, trạng thái đơn hàng và sự kiện tài khoảnCác truy vấn lịch sử dài và hồ sơ quản trị đơn giản
FIX APIHai hệ thống giao dịch trao đổi các tin nhắn tài chính chuẩn hóa trong một phiên được quản lýLuồng đơn hàng từ môi giới đến LP, địa điểm và tổ chứcMột API công khai đơn giản cho ứng dụng di động bán lẻ
MT5 APIsNhiều giao diện xung quanh nền tảng MetaTrader 5Quản trị môi giới, mở rộng nền tảng, cổng, báo cáo và tự động hóa đầu cuốiMột giao thức phổ quát độc lập với MT5

Những API này phù hợp với một hệ thống giao dịch forex như thế nào

Tôi coi bốn cái tên là những lớp khác nhau.

REST và WebSocket thường nằm gần ứng dụng hướng đến nhà giao dịch. FIX thường nằm sâu hơn trong hạ tầng thực thi. MT5 có thể là nền tảng giao dịch ở giữa, nhưng nó cũng có thể kết nối với các trang web, công cụ nội bộ và các địa điểm bên ngoài thông qua các API riêng của nó.

Cách một lệnh forex di chuyển qua quy trình

Một lệnh. Năm bước. Từ ứng dụng của nhà giao dịch đến việc thực hiện và quay trở lại.

RESTFIXWebSocket
Ứng dụng TraderMUA 100K EUR/USD
Nền tảng môi giớiĐƠN HÀNG #A-18427 / EUR/USD
Cổng APIĐang chờ
Máy tính rủi roĐang chờ xử lý
Nền tảng giao dịch – MT5Sẵn sàng
Bộ định tuyến thực thiĐang chờ xử lý
RESTĐang chờ đơn hàng
Nhà cung cấp thanh khoảnGiá + khối lượng
CRM / tự động hóaDữ liệu tài khoản và khách hàng
Địa điểm / trao đổiDữ liệu và địa điểm thị trường
  1. Ứng dụng gửi đơn hàng đến nhà môi giới qua REST.
  2. Nhà cung cấp thanh khoản gửi giá đến nhà môi giới, và WebSocket giữ cho ứng dụng luôn cập nhật.
  3. Nhà môi giới kiểm tra đơn hàng và chuyển nó đến nền tảng giao dịch.
  4. Bộ định tuyến thực hiện gửi đơn hàng đến nhà cung cấp thanh khoản qua FIX.
  5. Đơn hàng được hoàn thành trả về cho nhà môi giới, sau đó ứng dụng nhận được xác nhận qua WebSocket.

Đường đi chính xác thay đổi theo nhà môi giới. Một số nền tảng cung cấp các lệnh giao dịch qua REST. Những nền tảng khác truyền cả yêu cầu và sự kiện qua WebSocket hoặc TCP thô. Một nhà môi giới MT5 có thể sử dụng một cổng, một cầu nối hoặc logic giao dịch nội bộ thay vì gửi mọi lệnh trực tiếp đến nhà cung cấp thanh khoản.

Vì vậy, một sơ đồ nên được hiểu như một mẫu kiến trúc, chứ không phải là một lời hứa rằng mọi nhà môi giới đều xử lý giao dịch theo cùng một cách.

REST API trong giao dịch forex là gì?

Một REST API cung cấp các tài nguyên thông qua HTTP. Một khách hàng gửi một yêu cầu tới một điểm cuối, và máy chủ trả về một phản hồi.

Các cuộc gọi điển hình trông như thế này:

  • GET /accounts/417 để tải một tài khoản;
  • GET /orders?status=open để lấy đơn hàng đang mở;
  • GET /candles?symbol=EURUSD&timeframe=1h để yêu cầu các thanh lịch sử;
  • POST /orders để gửi một đơn hàng;
  • XÓA /đơn hàng/8921 để yêu cầu hủy bỏ.

Các URL và phương pháp chính xác phụ thuộc vào nhà cung cấp. Ý tưởng ổn định là yêu cầu và phản hồi. HTTP tự nó là một giao thức không trạng thái, có nghĩa là mỗi yêu cầu có thể được hiểu một cách độc lập. Thông số kỹ thuật HTTP định nghĩa các ngữ nghĩa liên quan đến các phương pháp, mã trạng thái và phản hồi.

Nơi REST hoạt động tốt

REST là một lựa chọn thực tế cho dữ liệu chỉ thay đổi khi được yêu cầu:

  • các hồ sơ tài khoản và quyền truy cập;
  • Các công cụ có sẵn và cài đặt hợp đồng;
  • các khoản tiền gửi, rút tiền và báo cáo;
  • các đơn hàng, giao dịch và nến lịch sử;
  • cài đặt chiến lược;
  • tạo hoặc hủy đơn hàng khi API hỗ trợ giao dịch.

Rất dễ để kiểm tra, ghi log, lưu trữ và tích hợp với hạ tầng web thông thường. Hầu hết các nhóm phát triển đã biết cách làm việc với HTTP và JSON.

Nơi REST bắt đầu gặp khó khăn

REST không tự nhiên chậm. Một API REST được xây dựng tốt có thể phản hồi đủ nhanh cho nhiều quy trình giao dịch. Vấn đề xuất hiện khi khách hàng phải đặt cùng một câu hỏi hàng trăm lần:

Cặp EUR/USD đã thay đổi chưa?

Đơn hàng của tôi đã được hoàn thành chưa?

Biên độ của tôi đã thay đổi chưa?

Việc lấy mẫu đó tạo ra các yêu cầu lặp lại, tiêu đề và công việc của máy chủ. Nó cũng có thể để lại khoảng trống giữa các lần lấy mẫu. Nếu ứng dụng yêu cầu giá một lần mỗi giây, nó sẽ không biết điều gì đã xảy ra giữa các yêu cầu đó.

Tôi sử dụng REST cho các ảnh chụp nhanh và lệnh. Tôi không sử dụng polling như nguồn chính của trạng thái giao dịch trực tiếp khi có một luồng sự kiện thích hợp tồn tại.

WebSocket API trong giao dịch forex là gì?

WebSocket tạo ra một kết nối hai chiều, bền vững giữa một khách hàng và máy chủ. Sau khi hoàn tất việc bắt tay mở, một bên có thể gửi tin nhắn mà không cần chờ đợi một yêu cầu HTTP mới. Hành vi đó được định nghĩa trong giao thức WebSocket.

Trong một ứng dụng giao dịch, khách hàng có thể đăng ký EURUSD một lần. Sau đó, máy chủ sẽ gửi mỗi cập nhật báo giá được phép qua kết nối mở. Dòng dữ liệu này có thể chứa các xác nhận đơn hàng, hoàn thành, thay đổi số dư và các sự kiện ký quỹ.

Nơi WebSocket hoạt động tốt

Một API WebSocket forex phù hợp với dữ liệu thay đổi liên tục:

  • giá mua và giá bán;
  • các bản cập nhật biểu đồ;
  • độ sâu thị trường;
  • chấp nhận đơn hàng, từ chối và thực hiện;
  • thay đổi vị trí và tài khoản;
  • Cảnh báo về biên;
  • trạng thái phiên giao dịch.

Khách hàng nhận được các thay đổi thay vì phải yêu cầu chúng nhiều lần. Điều này giảm thiểu việc kiểm tra và làm cho giao diện cảm thấy sống động.

Một kết nối mở là không đủ

WebSocket không làm cho một ứng dụng giao dịch trở nên đáng tin cậy chỉ bằng chính nó.

Một điện thoại thay đổi mạng. Một máy tính xách tay thì ngủ. Một proxy đóng kết nối không hoạt động. Máy chủ khởi động lại. Các tin nhắn có thể ngừng đến trước khi giao diện nhận ra.

Tôi tìm kiếm năm cơ chế phục hồi:

  1. Nhịp tim. Khách hàng phải biết liệu kết nối vẫn còn hoạt động hay không.
  2. Trạng thái dữ liệu cũ. Giao diện phải ngừng hiển thị một báo giá cũ như hiện tại.
  3. Kết nối lại và đăng ký lại. Khách hàng cần khôi phục mọi luồng cần thiết.
  4. Ảnh chụp nhanh và cập nhật. Sau khi kết nối lại, tải một ảnh chụp nhanh REST hiện tại trước khi áp dụng các sự kiện mới.
  5. Chuỗi hoặc con trỏ. Nếu API cung cấp các định danh sự kiện, hãy sử dụng chúng để phát hiện khoảng trống và bản sao.

FIX API trong giao dịch forex là gì?

FIX là viết tắt của Financial Information eXchange. Nó định nghĩa các thông điệp mà các hệ thống tài chính sử dụng để giao tiếp về các đơn hàng, thực hiện, báo giá, dữ liệu thị trường và các phiên giao dịch.

Một đơn đặt hàng mới, chẳng hạn, theo một loại tin nhắn chia sẻ với các trường được đặt tên cho các chi tiết như công cụ, bên, số lượng, loại đơn hàng và ID đơn hàng của khách hàng.

FIX là phổ biến giữa:

  • nhà môi giới và nhà cung cấp thanh khoản;
  • các nhà môi giới và sàn giao dịch hoặc các địa điểm khác;
  • các khách hàng tổ chức và môi giới;
  • hệ thống quản lý đơn hàng và hệ thống thực hiện.

Tại sao các công ty sử dụng FIX

FIX cung cấp cho cả hai bên một ngôn ngữ tài chính chung và một cách có kỷ luật để quản lý kết nối. Nó không tự động là API nhanh nhất; động cơ, mạng và cấu hình đối tác vẫn xác định hiệu suất.

Một phiên FIX theo dõi số thứ tự của các tin nhắn. Nếu một bên nhận được tin nhắn 208 sau tin nhắn 206, nó có thể phát hiện rằng 207 bị thiếu và yêu cầu gửi lại. Các tín hiệu nhịp tim và yêu cầu kiểm tra giúp cả hai bên theo dõi phiên làm việc.

Điều đó quan trọng khi các tin nhắn đại diện cho đơn hàng và việc hoàn tất. “Kết nối đã trở lại” là không đủ. Cả hai hệ thống cần phải đồng ý về những tin nhắn nào đã được xử lý.

Những gì FIX không giải quyết

FIX không loại bỏ công việc tích hợp.

Hai bên đối tác vẫn phải đồng ý về:

  • phiên bản FIX và các thông điệp được hỗ trợ;
  • các trường bắt buộc, tùy chọn và tùy chỉnh;
  • tên ký hiệu và định danh công cụ;
  • các loại đơn hàng được hỗ trợ và giá trị thời gian hiệu lực;
  • độ chính xác về giá cả và số lượng;
  • các phiên giao dịch và thời gian bảo trì;
  • quy tắc đặt lại và gửi lại chuỗi;
  • các trường hợp kiểm tra chứng nhận;
  • bảo mật mạng và các địa chỉ IP được phép.

Tôi không bao giờ chấp nhận “HỖ TRỢ FIX” như một câu trả lời tích hợp hoàn chỉnh. Tôi yêu cầu thông số kỹ thuật của bên đối tác và kế hoạch chứng nhận. Một tiêu chuẩn với các quy tắc trường khác nhau ở mỗi bên vẫn cần phải ánh xạ và kiểm tra.

“MT5 API” có nghĩa là gì?

MetaTrader 5 là một nền tảng, không phải là một giao thức API. MetaQuotes liệt kê một số giao diện cho các nhà môi giới, bao gồm Manager, Gateway, Report, Server và Web APIs. Mỗi giao diện phục vụ một vai trò khác nhau trong môi trường MT5.

Quản lý API

API quản lý dành cho các công cụ quản trị và quản lý phía môi giới. Một môi giới có thể sử dụng nó để xây dựng các tiện ích nội bộ xung quanh tài khoản, nhóm, hoạt động giao dịch và quản trị nền tảng.

Đây không phải là sản phẩm giống như khóa API của nhà giao dịch bán lẻ. Quyền truy cập, cấp phép và các hoạt động được hỗ trợ thuộc về thiết lập MetaTrader của nhà môi giới.

API Cổng

Gateway API dùng để kết nối MetaTrader 5 với các hệ thống giao dịch và nguồn dữ liệu bên ngoài. MetaQuotes mô tả các gateway là các plugin nền tảng xử lý sự tương tác với các sàn giao dịch hoặc các hệ thống đã kết nối khác.

Điều này gần gũi hơn với khả năng kết nối thị trường so với một điểm cuối REST dành cho nhà giao dịch.

Web, Báo cáo và API Máy chủ

MetaQuotes mô tả Web API như một giao diện để kết nối nền tảng với các tài nguyên và dịch vụ web của nhà môi giới. Report API mở rộng khả năng báo cáo của máy chủ. Server API cho phép các nhà điều hành nền tảng thêm các chức năng máy chủ giao dịch và máy chủ lịch sử.

Tên của họ có thể trông tự giải thích, nhưng phạm vi và khả năng sẵn có phải được kiểm tra trong giấy phép và tài liệu kỹ thuật của môi giới.

MQL5

MQL5 là ngôn ngữ và môi trường lập trình được sử dụng trong MetaTrader 5. Các nhà giao dịch và nhà phát triển xây dựng các Tư vấn viên chuyên gia, chỉ báo, kịch bản và dịch vụ hoạt động với terminal.

Đây là tuyến đường gốc cho một chiến lược tự động cần dữ liệu biểu đồ, chỉ báo và chức năng giao dịch trong MT5. Nó không phải là một giao thức từ nhà môi giới đến nhà cung cấp thanh khoản.

Tích hợp MetaTrader 5 với Python

Bộ gói MetaTrader5 chính thức cho Python cho phép một chương trình Python đọc dữ liệu và gửi yêu cầu giao dịch thông qua một terminal MetaTrader 5. Những từ quan trọng là thông qua terminal.

Tài liệu Python chính thức cho biết gói này giao tiếp trực tiếp với terminal bằng cách sử dụng giao tiếp giữa các tiến trình. Nó không cung cấp một dịch vụ đám mây tùy ý kết nối trực tiếp với máy chủ MT5 của nhà môi giới.

Sự phân biệt đó thay đổi việc triển khai. Một chiến lược Python cần một môi trường terminal tương thích, phiên tài khoản, giám sát và một kế hoạch cho việc khởi động lại terminal. Nó không nên được thiết kế như thể pip install MetaTrader5 tạo ra một API broker phía máy chủ.

Một đơn hàng có thể đi qua nhiều API

Giả sử một nhà giao dịch mua 100,000 đơn vị EUR/USD trong ứng dụng di động của một nhà môi giới.

  1. Ứng dụng tải tài khoản, thông số ký hiệu và quyền thông qua REST.
  2. Nó nhận giá thầu và giá hỏi hiện tại qua WebSocket.
  3. Nhà giao dịch nhấn Mua. Ứng dụng gửi một lệnh với ID đơn hàng khách hàng duy nhất.
  4. Dịch vụ rủi ro của môi giới kiểm tra biên, giới hạn và trạng thái thị trường.
  5. Nền tảng giao dịch chấp nhận hoặc từ chối đơn hàng. Nền tảng đó có thể là MT5.
  6. Tùy thuộc vào mô hình thực hiện của nhà môi giới, sự tiếp xúc bên ngoài có thể được gửi đến nhà cung cấp thanh khoản thông qua FIX, một cổng hoặc một kết nối khác.
  7. Báo cáo thực thi trả về qua ngăn xếp.
  8. Ứng dụng nhận đơn hàng, vị trí và số dư được cập nhật thông qua luồng sự kiện của nó.

REST không cạnh tranh với FIX trong chuỗi này. Chúng hoạt động ở các ranh giới khác nhau.

Trường hợp timeout phơi bày một API yếu

Phần khó khăn của một API đơn hàng không phải là gửi yêu cầu. Đó là biết điều gì đã xảy ra khi phản hồi biến mất.

Giả sử ứng dụng gửi hướng dẫn này:

Mua EURUSD, clientOrderId = mobile-84721

Yêu cầu đã hết thời gian chờ. Có hai khả năng:

  • người môi giới không bao giờ nhận được nó;
  • nhà môi giới đã chấp nhận, nhưng phản hồi không đến được ứng dụng.

Gửi cùng một giao dịch một cách mù quáng có thể tạo ra hai vị trí.

Một quy trình làm việc an toàn hơn là:

  1. Giữ nguyên ID đơn hàng của khách hàng.
  2. Truy vấn trạng thái đơn hàng chính thức hoặc chờ sự kiện đơn hàng.
  3. Cho phép máy chủ từ chối hoặc loại bỏ một lệnh lặp lại với cùng ID.
  4. Đối chiếu đơn hàng cuối cùng và điền hồ sơ trước khi cho phép thử lại lần khác.

Đây là lý do tại sao tôi hỏi các nhà cung cấp API về tính idempotent trước khi tôi hỏi về tỷ lệ yêu cầu tiêu đề. Một điểm cuối nhanh có thể sao chép một hành động tài chính sau thời gian chờ không phải là một điểm giao dịch tốt.

REST so với WebSocket so với FIX so với MT5 theo trường hợp sử dụng

Yêu cầuGiao diện tôi sẽ xem xét trướcLý do
Trang web môi giới hiển thị lịch sử tài khoảnRESTCác truy vấn đơn giản, xác thực quen thuộc và phản hồi rõ ràng
Danh sách theo dõi trực tiếp trong ứng dụng web hoặc di độngWebSocketBáo giá đến như các sự kiện mà không cần kiểm tra liên tục
Nhập lệnh bán lẻ từ ứng dụng tùy chỉnhREST command cộng với trạng thái WebSocketLuồng gửi rõ ràng với xác nhận trực tiếp và cập nhật hoàn thành
Kết nối môi giới với nhà cung cấp thanh khoảnFIX hoặc kết nối đã được chứng nhận của nhà cung cấpLuồng công việc đặt hàng và thực hiện tiêu chuẩn giữa các hệ thống giao dịch
Quản trị môi giới xung quanh MT5MT5 Manager APIXây dựng cho các tiện ích quản lý phía nền tảng
Kết nối MT5 tùy chỉnh với một địa điểmMT5 Gateway API hoặc thiết lập cầu nối/gateway đã được kiểm traĐược thiết kế cho kết nối thị trường nền tảng
Chuyên gia tư vấn chạy trong MT5MQL5Tự động hóa và môi trường kiểm tra của terminal bản địa
Phân tích và thực hiện Python thông qua terminal MT5Gói Python MetaTrader 5Cung cấp quyền truy cập Python vào dữ liệu terminal và các chức năng giao dịch
Tập dữ liệu nghiên cứu lịch sửREST hoặc xuất dữ liệu hàng loạtDễ dàng phân trang, phạm vi ngày và truy xuất lặp lại

Bảng này là điểm khởi đầu. Lựa chọn cuối cùng phụ thuộc vào API thực tế của nhà cung cấp, giới hạn tỷ lệ, xác thực, các loại đơn hàng được hỗ trợ và các đảm bảo dịch vụ.

Các câu hỏi tôi đặt ra trước khi chọn API giao dịch forex

Dữ liệu thị trường

  • Luồng dữ liệu có theo từng tick, bị gộp lại hay được lấy mẫu?
  • Thời gian ghi nhận giá mua và bán được tạo ra tại nguồn hay khi giao hàng?
  • Có phải luồng bao gồm số thứ tự không?
  • Khách hàng phục hồi dữ liệu sau khi ngắt kết nối như thế nào?
  • Các thông số ký hiệu có được phiên bản hóa khi thay đổi cài đặt hợp đồng không?

Đơn hàng

  • Có mã đơn hàng khách hàng duy nhất không?
  • Các lệnh tạo và hủy có tính idempotent không?
  • Có thể API báo cáo các lệnh thực hiện một phần và nhiều báo cáo thực hiện không?
  • Đĩa nào là có thẩm quyền sau khi hết thời gian chờ?
  • Các đơn hàng bị từ chối, hết hạn và được thay thế được thể hiện như thế nào?

Các hoạt động

  • Giới hạn về yêu cầu, đăng ký và kết nối là gì?
  • Các môi trường demo và live có hành vi tương đương không?
  • Có trang trạng thái và thông báo bảo trì theo lịch không?
  • Các bản ghi có thể được liên kết giữa khách hàng, môi giới và địa điểm không?
  • Các thay đổi lớn được phiên bản hóa và thông báo như thế nào?

An ninh

  • Các quyền nào có thể bị giới hạn theo ứng dụng hoặc mã thông báo?
  • Credentials được luân chuyển và thu hồi như thế nào?
  • Có hỗ trợ danh sách cho phép IP, TLS và thông tin xác thực sản xuất riêng biệt không?
  • Có dịch vụ nào có thể đọc dữ liệu mà không cần nhận quyền giao dịch không?
  • Có phải mọi hành động được ưu tiên đều được ghi vào nhật ký kiểm toán không?

Các câu trả lời cho tôi biết nhiều hơn nhãn trên API. Hai API REST có thể khác nhau nhiều hơn về chất lượng thực tế so với REST và WebSocket.

Một nhà môi giới nên quyết định điều gì trước khi tích hợp

Một dự án API thường trở nên khó khăn khi quyền sở hữu không rõ ràng.

Xác định những điểm này trước khi phát triển bắt đầu:

  1. Hệ thống ghi chép. Hệ thống nào sở hữu đơn hàng, đơn hàng đã thực hiện, số dư và vị trí?
  2. Thứ tự sự kiện. Làm thế nào để xử lý các bản sao, tin nhắn muộn và các cập nhật không theo thứ tự?
  3. Khôi phục. Bức ảnh nào được tải sau khi kết nối lại, và từ con trỏ nào các sự kiện tiếp tục?
  4. Ranh giới rủi ro. Những kiểm tra nào được thực hiện trước khi một đơn hàng đến nền tảng hoặc địa điểm?
  5. Mô hình ký hiệu. Ai là người xác định tên, kích thước hợp đồng, phiên giao dịch và độ chính xác của giá?
  6. Dấu vết kiểm toán. Có thể hỗ trợ theo dõi một hành động của khách hàng từ ứng dụng đến báo cáo thực hiện cuối cùng không?

Đây là nơi quyết định nền tảng trở thành quyết định hoạt động. Cơ sở hạ tầng môi giới của Quadcode mang đến nền tảng giao dịch, ứng dụng khách hàng, CRM, văn phòng hậu cần, rủi ro và tích hợp vào một môi trường duy nhất. Các kết nối REST, streaming, MT5 hoặc thanh khoản cần thiết vẫn nên được viết vào thiết kế giải pháp và được kiểm tra dựa trên quy trình đặt hàng của chính nhà môi giới.

Câu trả lời cuối cùng

Sử dụng REST cho các yêu cầu rõ ràng, ảnh chụp và hồ sơ. Sử dụng WebSocket khi ứng dụng phải nhận các thay đổi trực tiếp. Sử dụng FIX cho giao tiếp giao dịch tiêu chuẩn giữa các hệ thống chuyên nghiệp. Sử dụng giao diện MT5 liên quan khi MetaTrader 5 là một phần của nền tảng.

Các sản phẩm forex hầu hết cần một sự kết hợp. Sau khi xảy ra sự cố mạng, một kiến trúc vững chắc có thể trả lời ba câu hỏi: Liệu đơn hàng có được nhận không? Nó có được thực hiện không? Mọi hệ thống kết nối hiện có đồng ý về kết quả không?