Обсуждение статьи "MetaTrader 5 как производитель сообщений Kafka: Рассылка сигналов нескольким торговым терминалам"

Опубликована статья MetaTrader 5 как производитель сообщений Kafka: Рассылка сигналов нескольким торговым терминалам:

В статье подробно описан производитель Kafka, реализованный непосредственно на MQL5 и использующий сетевой протокол Kafka через TCP-сокеты без дополнительных библиотек. Он реализует кодирование RecordBatch v2, varint и вычисление CRC32C, а также пакетную отправку, подтверждения (acks) и логику повторных попыток — и всё это без вспомогательного процесса или DLL. Используйте его для публикации торговых сигналов в формате JSON из одного терминала в Kafka, где информационные панели и другие сервисы подписываются на них независимо друг от друга.

До сих пор каждая статья этой серии о мостах была посвящена взаимодействию "один к одному". Вызов функции из библиотеки типа cdylib на Rust обслуживает одного вызывающего клиента. Отображение общей памяти связывает ровно два процесса на одной машине. Канал gRPC обслуживает одного клиента, взаимодействующего с одним сервером. Все они являются соединениями "точка-точка", и все они предполагают, что вы заранее знаете, кто находится на другом конце.

Это предположение перестаёт работать, как только вместо одного робота вам нужна целая система работы с сигналами. Предположим, что один терминал MetaTrader 5 вычисляет сигнал импульса по XAUUSD. Этот сигнал нужно доставить на панель мониторинга, в сервис расчёта размера позиции с учётом риска и на два терминала для копирования сигналов, торгующих коррелирующими парами. При этом производитель не должен знать, сколько существует получателей и находятся ли они сейчас в сети. Это уже не задача для моста. Это задача для шины событий, и стандартный отраслевой инструмент для её решения — Apache Kafka.

В этой статье показано, как создать производителя Kafka непосредственно на MQL5 без внешней DLL, вспомогательного процесса на Python или ALGLIB. Прямое использование TCP-сокетов без дополнительных библиотек и собственная реализация сетевого протокола Kafka: кодирование varint, контрольные суммы CRC32C и двоичный формат RecordBatch v2, который ожидает каждый современный брокер Kafka. В итоге ваш советник сможет публиковать структурированные торговые сигналы прямо в топик Kafka, а любое число независимых потребителей сможет подписываться на него и выполнять повторное чтение истории с любого смещения, ни разу не обращаясь к вашему терминалу MetaTrader 5.


Автор: Olamide Daniel Adebayo