Обсуждение статьи "За рамками REST и ZeroMQ: Создание моста Protocol Buffers между MetaTrader 5 и Python с выходом на gRPC для инференса в реальном времени"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья За рамками REST и ZeroMQ: Создание моста Protocol Buffers между MetaTrader 5 и Python с выходом на gRPC для инференса в реальном времени:
При подключении работающего советника MetaTrader 5 к серверу модели на Python обычно проходят одни и те же этапы: сначала опрос файлов (состояния гонки при блокировке файлов в Windows), затем WebRequest/REST (накладные расходы HTTP, разбор JSON, отсутствие схемы), затем ZeroMQ (исправляет проблему транспортного уровня, но разработчики по-прежнему вручную формируют JSON-строки, поэтому проблема отсутствия схемы никуда не исчезает). Ни REST, ни ZeroMQ не решают главную проблему: ничто не обеспечивает соответствие вектора признаков, отправляемого клиентом MQL5, тому, что ожидает модель на Python. Если несоответствие полей остается незамеченным, советник торгует на мусорных данных вместо того, чтобы остановиться с явной ошибкой.
В этой статье мы создадим недостающий контракт — схему Protocol Buffers для обмена данными между MetaTrader 5 и Python. Этот транспортный слой ведет себя подобно gRPC, но язык MQL5 не поддерживает gRPC нативно (нет клиента HTTP/2, мультиплексирования потоков и генерации кода с помощью protoc). Поэтому вместо громкого заявления о "gRPC на MQL5" мы реализуем передачу Protobuf по TCP с префиксом длины для фреймирования сообщений. Небольшая прослойка на Python передает эти сообщения полноценному сервису grpc.aio. На стороне Python используется настоящий gRPC: потоковая передача, health checks и сам протокол без имитации. На стороне клиента MQL5 используется строго типизированный формат сообщений с контролем соответствия схеме — без неоднозначности JSON, собранного вручную из строк.
К статье прилагаются семь основных файлов (а также скрипты для тестирования производительности и создания кэша). Ниже мы разберем код каждого файла: что он реализует, как устроен ключевой механизм и почему выбран именно этот подход, а не альтернативы.
Автор: Olamide Daniel Adebayo