FIX消息分隔符

问题描述 投票:11回答:3

我对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^

要么

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|

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

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

它可能是数字之一。

fix-protocol financial quantitative-finance
3个回答
15
投票

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


3
投票

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

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

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

~/.bashrc

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

1
投票

FIX消息在消息中的字段之间始终具有0x01,无论是在线路上,在OMS / EMS中还是在日志文件中。只有在必须显示消息时才进行替换(好的,有些人可能会使他们的日志文件干净并因此转录该字符)。永远不会有效的FIX消息将管道或插入符号分隔字段。情况也是如此,FIX消息永远不会在字段之间。 (是一个不应该出现在打​​印文本中的字符 - FIX消息应该是可读的 - 并且它不会与终止C字符串的字符冲突,因此如果您愿意,可以将整个消息视为字符串。)

© www.soinside.com 2019 - 2024. All rights reserved.