18

我对 FIX-Protocol 比较陌生。

FIX 协议消息的分隔符有时显示 ^,有时显示 |。FIX-Protocol 的维基百科说[SOH](< Start of Header > for hex 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^

或者

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) 适合 ^ 或 |

它可能是数字 ONE。

4

3 回答 3

17

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

于 2014-08-13T20:40:45.883 回答
6

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

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

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

~/.bashrc

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

然后简单地

fixlog your.file.fix
于 2019-02-22T09:54:08.033 回答
1

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

于 2017-07-26T08:45:49.927 回答