在 MULTIPLEXARVALUE 或 MULTIPLESTRINGVALUE 字段中重复相同的值是否合法?
Is it legal to repeat the same value in a MULTIPLECHARVALUE or MULTIPLESTRINGVALUE field?
假设一个 FIX 字段是 MULTIPLECHARVALUE
或 MULTIPLESTRINGVALUE
类型,并且为该字段定义的枚举值是 A
、B
、C
和 D
。我知道 "A C D"
是该字段的合法值,但是在该字段中重复一个值是否合法?例如,"A C C D"
合法吗?如果是,它的语义是什么?
我能想到三种可能:
"A C C D"
是无效值,因为 C
重复了。
"A C C D"
有效且在语义上与 "A C D"
相同。换句话说,设置语义是有意的。
"A C C D"
有效且具有 multiset/bag 语义。
不幸的是,我在 FIX 规范文档中找不到 MULTIPLECHARVALUE
和 MULTIPLESTRINGVALUE
的预期语义的任何明确定义。
FIX50SP2 规范没有回答你的问题,所以我只能得出结论,这三种解释中的任何一种都可以被认为是有效的。
就像 FIX 的问题一样,真正的答案取决于您正在与之通信的对方。
所以我的答案是:
- 如果您是客户端应用程序,请询问您的交易对手他们想要什么(或查看他们的文档)。
- 如果您是服务器应用程序,则由您来决定。您的文档应该告诉您的客户如何行动。
如果有帮助,QuickFIX/n 引擎会将 MultipleCharValue/MultipleStringValue 字段视为字符串,并将其留给应用程序代码来解析各个值。因此,开发人员很容易支持任何解释,甚至支持不同领域的不同解释。 (我怀疑其他 QuickFIX 语言实现是相同的。)
MultipleValueString
字段的定义是一个包含一个或多个space定界值的字符串字段。我没有得到官方规范,但很少有地方可以找到这个定义:
https://www.onixs.biz/fix-dictionary/4.2/index.html#MultipleValueString(我知道onixs.biz非常忠实于标准规范)
String field (see definition of "String" above) containing one or more space delimited values.
https://aj-sometechnicalitiesoflife.blogspot.com/2010/04/fix-protocol-interview-questions.html
12. What is MultipleValueString data type? [...]
String field containing one or more space delimited values.
这留给了这种类型的特定字段是否允许倍数,但我怀疑只有少数(如果有的话)需要允许倍数。据我所知,FIX 规范故意将此保留为开放状态。
例如对于 ExecInst<18> 多次指定相同的指令是愚蠢的。我还怀疑每个实现的行为都不同(例如,一个忽略重复项,另一个用 error/rejection 犹豫不决)。
假设一个 FIX 字段是 MULTIPLECHARVALUE
或 MULTIPLESTRINGVALUE
类型,并且为该字段定义的枚举值是 A
、B
、C
和 D
。我知道 "A C D"
是该字段的合法值,但是在该字段中重复一个值是否合法?例如,"A C C D"
合法吗?如果是,它的语义是什么?
我能想到三种可能:
"A C C D"
是无效值,因为C
重复了。"A C C D"
有效且在语义上与"A C D"
相同。换句话说,设置语义是有意的。"A C C D"
有效且具有 multiset/bag 语义。
不幸的是,我在 FIX 规范文档中找不到 MULTIPLECHARVALUE
和 MULTIPLESTRINGVALUE
的预期语义的任何明确定义。
FIX50SP2 规范没有回答你的问题,所以我只能得出结论,这三种解释中的任何一种都可以被认为是有效的。
就像 FIX 的问题一样,真正的答案取决于您正在与之通信的对方。
所以我的答案是:
- 如果您是客户端应用程序,请询问您的交易对手他们想要什么(或查看他们的文档)。
- 如果您是服务器应用程序,则由您来决定。您的文档应该告诉您的客户如何行动。
如果有帮助,QuickFIX/n 引擎会将 MultipleCharValue/MultipleStringValue 字段视为字符串,并将其留给应用程序代码来解析各个值。因此,开发人员很容易支持任何解释,甚至支持不同领域的不同解释。 (我怀疑其他 QuickFIX 语言实现是相同的。)
MultipleValueString
字段的定义是一个包含一个或多个space定界值的字符串字段。我没有得到官方规范,但很少有地方可以找到这个定义:
https://www.onixs.biz/fix-dictionary/4.2/index.html#MultipleValueString(我知道onixs.biz非常忠实于标准规范)
String field (see definition of "String" above) containing one or more space delimited values.
https://aj-sometechnicalitiesoflife.blogspot.com/2010/04/fix-protocol-interview-questions.html
12. What is MultipleValueString data type? [...]
String field containing one or more space delimited values.
这留给了这种类型的特定字段是否允许倍数,但我怀疑只有少数(如果有的话)需要允许倍数。据我所知,FIX 规范故意将此保留为开放状态。
例如对于 ExecInst<18> 多次指定相同的指令是愚蠢的。我还怀疑每个实现的行为都不同(例如,一个忽略重复项,另一个用 error/rejection 犹豫不决)。