QuickfixJ 必填字段丢失,即使它在那里
QuickfixJ required field missing, even if it's there
我收到一条 "Conditionally Required Field Missing" 错误消息,尽管我确定该字段存在。
58=Conditionally Required Field Missing, field=55
版本:
QuickFixJ 2.1.0
FIX 4.4
这是我要发送的 FIX 消息(为清楚起见删除了模拟值和一些字段)
8=FIX.4.4
9=709
35=R
34=4
49=TARGET
56=ME
11=myClOrdID
131=myQuoteReqID
146=myNoRelatedSym
55=mySymbol // field missing
167=mySecurityType // field missing
调用代码如下:
String symbol = quoteRequest.getField(new StringField(55)).getValue();
我也试过:
String symbol = quoteRequest.getString(55);
这是我的数据字典:
<field number="55" name="Symbol" type="STRING"/>
我意识到符号字段不再是 4.4 的 QuoteRequest
FIX 规范的一部分(尽管它在早期版本中,例如 4.0),但是肯定有检索自定义字段的方法吗?我无法控制收到的 QuoteRequest
消息。
我总是可以使用 toString()
自己解析消息,但这有点违背了首先使用 quickfixj 的目的。
有什么想法吗?
标记 55 在 146 重复组内。参见 the docs for reading repeating groups。
符号字段仍在 FIX44 中。您应该花些时间熟悉您正在使用的 FIX44.xml 数据字典文件。
(您可能会发现您需要根据交易对手的消息自定义该文件;实际上,没有人使用基本的 FIX44 消息定义而不对其进行至少一点更改。)
// create group
QuoteRequest.NoRelatedSym group = new QuoteRequest.NoRelatedSym();
// set group, confusing method name I find
message.getGroup(1, group);
// you now have all the getters of fields in that group
Symbol symbol = group.getSymbol();
我收到一条 "Conditionally Required Field Missing" 错误消息,尽管我确定该字段存在。
58=Conditionally Required Field Missing, field=55
版本:
QuickFixJ 2.1.0
FIX 4.4
这是我要发送的 FIX 消息(为清楚起见删除了模拟值和一些字段)
8=FIX.4.4
9=709
35=R
34=4
49=TARGET
56=ME
11=myClOrdID
131=myQuoteReqID
146=myNoRelatedSym
55=mySymbol // field missing
167=mySecurityType // field missing
调用代码如下:
String symbol = quoteRequest.getField(new StringField(55)).getValue();
我也试过:
String symbol = quoteRequest.getString(55);
这是我的数据字典:
<field number="55" name="Symbol" type="STRING"/>
我意识到符号字段不再是 4.4 的 QuoteRequest
FIX 规范的一部分(尽管它在早期版本中,例如 4.0),但是肯定有检索自定义字段的方法吗?我无法控制收到的 QuoteRequest
消息。
我总是可以使用 toString()
自己解析消息,但这有点违背了首先使用 quickfixj 的目的。
有什么想法吗?
标记 55 在 146 重复组内。参见 the docs for reading repeating groups。
符号字段仍在 FIX44 中。您应该花些时间熟悉您正在使用的 FIX44.xml 数据字典文件。
(您可能会发现您需要根据交易对手的消息自定义该文件;实际上,没有人使用基本的 FIX44 消息定义而不对其进行至少一点更改。)
// create group
QuoteRequest.NoRelatedSym group = new QuoteRequest.NoRelatedSym();
// set group, confusing method name I find
message.getGroup(1, group);
// you now have all the getters of fields in that group
Symbol symbol = group.getSymbol();