Иван Коротченя
Иван Коротченя личный блог
02 ноября 2024, 14:07

дешифровка FAST сообщений

Всем добрый день!

Пытаюсь расшифровать Fast сообщение от московской биржи, никак не могу понять как использовать pmap.

Например я получаю от сервера сообщение 
\xe1.\x01\x00\xc0\x10\xbc\x04]\xe1\x03,$\x07\x0be[\x0e\xc3

Первые 4 байта согласно спецификации — преамбула, отбросив ее:
\xc0\x10\xbc\x04]\xe1\x03,$\x07\x0be[\x0e\xc3

Затем получаю первый байт:
\xc0 = 1100 0000
Но шаблон сообщения-сердцебиения вообще не содержит опциональных полей. 

<template name=«0» id=«2108» xmlns="http://www.fixprotocol.org/ns/fast/td/1.1"><string name=«MessageType» id=«35»><constant value=«0» /></string><string name=«BeginString» id=«8»><constant value=«FIXT.1.1»/></string><string name=«SenderCompID» id=«49»><constant value=«MOEX»/></string><uInt32 name=«MsgSeqNum» id=«34»></uInt32><uInt64 name=«SendingTime» id=«52»></uInt64></template>

Столкнулся с этим почти во всех сообщения, во многих 5 байт равен \xC0 хотя в некоторых случаях это не может соответсвовать pmap для этого шаблона. 

Кто-нибудь сталкивался с такой проблемой при дешифроке? Не могу понять где я ошибаюсь
16 Комментариев
  • Auximen
    02 ноября 2024, 14:26
    Спросите у chat gpt 4o.
      • Auximen
        02 ноября 2024, 14:33
        Иван Коротченя, так а зачем вы лезете на уровень байтов? Наверняка сообщения приходят в JSON формате, приведите пример FAST-сообщения. И чем расшифровываете? Pmap есть во многих языках. Python?
      • Gambler <osaengine.ru>
        02 ноября 2024, 15:16
        Иван Коротченя, может поможет моя статья habr.com/ru/articles/827330/ Но реокомендую вам взять готовые парсеры, если у вас уже на старте такая простая проблема.
          • Gambler <osaengine.ru>
            02 ноября 2024, 16:04
            Иван Коротченя, ошибка, конечно, где-то у вас. За вас в вашем коде её никто не найдет ) У МосБиржи оптимизация, они транспортный хидер не по стандарту дают для оптимизации, но карта присутствия емнип работает по стандарту.

            Ищите у себя. Или как правильно сказали — что-то скачайте готовое. Вы на C++ пишите? mfast как вариант.
  • Хомяк Пржевальского
    02 ноября 2024, 14:48
    биржа пытается намекнуть вам, что не надо торговать на ней
  • John Doe
    02 ноября 2024, 14:50
    Есть готовые решения в open source, почему там не посмотреть?
  • Пафос Респектыч
    04 ноября 2024, 00:10
    Кто-нибудь сталкивался с такой проблемой при дешифроке? Не могу понять где я ошибаюсь

    Был когда-то такой старый анекдот, про то как молодой программист приходит к опытному товарищу, показывает код и просит подсказать где у него ошибка и получает ответ что в ДНК у него ошибка )

    Ты что-нибудь слышал про big-endian и little-endian порядок байт? Раз уж в битиках копаться собрался то поинтересуйся, это полезное знание!
  • Пафос Респектыч
    04 ноября 2024, 00:18
    И ещё посмотри в спеку, там вроде написано что сразу после преамбулы идёт число номер сообщения, чтобы его можно было сразу проверить не парся всё остальное, наверное вот это вот он и есть который тебя озадачивает.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн