ИСПРАВИТЬ разделитель сообщений

Я относительно новичок в FIX-Protocol.

Разделитель для сообщения FIX-Protocol иногда показывает ^, а иногда |. Википедия для FIX-Protocol говорит, что [SOH] ( ‹Начало заголовка› для шестнадцатеричного числа 0x01 ) является символом.

Пожалуйста, объясните значение того же.

Например, сообщение FIX-Protocol может быть визуально представлено как

8=FIX.4.4^9=122^35=D^34=215^49=CLIENT12^52=20100225-19:41:57.316^56=B^1=Marcel^11=13346^21=1^40=2^44=5^54=1^59=0^60=20100225-19:39:52.020^10=072^

or

8=FIX.4.4|9=122|35=D|34=215|49=CLIENT12|52=20100225-19:41:57.316|56=B|1=Marcel|11=13346|21=1|40=2|44=5|54=1|59=0|60=20100225-19:39:52.020|10=072|

Так в чем же разница в использовании ^ над |

Используются ли и другие разделители. Непонятно, почему [SOH] (0x01) подходит для ^ или |

Это могло быть числовое значение ЕДИНИЦА.


person Ashley    schedule 13.08.2014    source источник


Ответы (3)


Разделитель SOH = код ASCII 01 является непечатаемым символом. Глядя на двоичное представление сообщения (например, в представлении шестнадцатеричного редактора), вы увидите символ как 0x01. Кажется, что для отображения сообщений некоторые люди используют |, а другие используют ^, которые являются редко используемыми символами и, следовательно, являются хорошим разделителем.

person MP24    schedule 13.08.2014
comment
Таким образом, это означает, что реальное сообщение об исправлении в проводе/сокете/сети не будет содержать | или ^, но только 0x01, однако после отключения провода 0x01 заменяется одним из символов | или ^ символы. Я могу быть не в тему, но очень ценю вашу помощь. - person Ashley; 14.08.2014
comment
Да, описание формата см. на странице fixwiki.org/fixwiki/FPL:Tag_Value_Syntax. Глядя на исходный код для быстрого исправления, он также использует 0x01 в качестве разделителя. - person MP24; 14.08.2014
comment
Еще одно замечание: я часто вижу сообщения rax в лог-файлах. В Linux SOH часто будет отображаться в терминале как управляющий код C, ^A, например: 8=FIX.4.2^A9=207^A35=D^A43=N^A52=20140825-07:24:08 ^A122=20140825-07:24:08^A... . - person Andy Lynch; 08.09.2014

использование символа | просто для визуального удобства, его легче читать, чем ^A

cat your.file.fix | tr '\01' '|' | less

вы можете легко преобразовать приведенную выше команду в пользовательский сценарий оболочки для открытия файлов сеансов FIX.

~/.bashrc

function fixlog {
  cat $* | tr '\01' '|' | less
}

тогда просто

fixlog your.file.fix
person Julien    schedule 22.02.2019

Сообщения FIX всегда имеют 0x01 между полями в сообщении, независимо от того, находится ли оно в сети, в OMS/EMS или в файле журнала. Замена выполняется только тогда, когда сообщение должно отображаться (ОК, некоторые люди могут сделать свои файлы журналов чистыми и таким образом расшифровать символ). Никогда не бывает так, чтобы допустимое сообщение FIX имело вертикальную черту или символы вставки, разделяющие поля. Это также тот случай, когда сообщение FIX никогда не будет находиться где-либо, кроме как между полями. ( - это символ, который не должен появляться в печатном тексте - сообщения FIX должны быть читаемы - и он не будет конфликтовать с тем, что завершает строку C, поэтому все сообщение можно рассматривать как строку, если вы так склонны .)

person Mark Reece    schedule 26.07.2017