当我查看 FIX 协议中 String 类型的定义时(例如 here 或 here),我没有看到指定的最小长度。是否允许使用空字符串?一个在线解码器似乎接受一个空字符串值(参见标签 320),另一个其他抱怨它无效。
FIX 4.4规范规定如下(原文强调):
每条消息均由
字段流构成,其中包含 流中字段之间的字段分隔符。标签属于数据类型 标签号。 所有标签都必须指定一个值。可选字段无 不应在 FIX 消息中指定值。拒绝 消息是对没有值的标签的适当响应。<tag>=<value>
这强烈表明(但没有明确指出)我对字符串使用空值是无效的。不同的 FIX 实现可能以不同的方式处理这种边缘情况,这对我来说并不奇怪。所以,我认为最好的方法是避免对字符串使用空值。
+1 表示 Ciaran 和 Grant 的回答/评论。只是想添加一些东西。
我通常建议在最新规范中查找类似的内容,因为它们通常已经过改进/重新措辞/澄清,以消除旧规范中不清楚或不明确的陈述。
答案就在您问题中链接到的页面上(强调我的): https://www.fixtrading.org/standards/tagvalue-online/#well-formed-field
格式良好的域具有以下形式:
tag=value<SOH>
如果编码结果出现以下任何情况,则字段应被视为格式错误:
标签为空
缺少标签分隔符
该值为空
该值包含
字符并且该字段的数据类型不是 data 或 XMLdata<SOH>
该字段的数据类型是数据,并且该字段前面没有紧接着其关联的长度字段。