FIX消息分隔符

Ash*_*ley 14 financial fix-protocol quantitative-finance

我对FIX-Protocol比较新.

FIX协议消息的分隔符有时会显示^和其他时间.维基百科的FIX协议说[SOH](< 十六进制的开头 >十六进制为0x01)是该字符.

请解释一下这个含义.

例如,FIX协议消息可以在视觉上表示为

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^
Run Code Online (Sandbox Code Playgroud)

要么

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|
Run Code Online (Sandbox Code Playgroud)

那么使用^ over |的确切区别是什么?

是否还使用了其他分隔符.不清楚为什么[SOH](0x01)适合^或|

它可能是数字之一.

MP2*_*P24 15

分隔符SOH = ASCII代码01是不可打印的字符.查看消息的二进制表示(例如,在十六进制编辑器视图中),您将看到该字符为0x01.为了显示消息,似乎有些人使用|和使用^很少使用的字符,因此是一个很好的分隔符.

  • 因此,这意味着,有线/插座/网络上的真正修复消息将不包含| 或^字符但只有0x01,但是,一旦离线,0x01将被|中的一个替换 或^字符.我可能会离开目标,但非常感谢你的帮助. (3认同)
  • 还有一点需要补充 - 我经常在日志文件中看到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 .... (2认同)

Jul*_*ien 6

使用|字符只是为了视觉上的方便,比阅读更容易^A

cat your.file.fix | tr '\01' '|' | less
Run Code Online (Sandbox Code Playgroud)

您可以轻松地将上述命令转换为自定义 shell 脚本以打开 FIX 会话文件

~/.bashrc

function fixlog {
  cat $* | tr '\01' '|' | less
}
Run Code Online (Sandbox Code Playgroud)

然后简单地

fixlog your.file.fix
Run Code Online (Sandbox Code Playgroud)