感谢所有回复此主题的人。我将解释我为解决问题所遵循的步骤
启动器.cfg
UseDataDictionary=Y
ValidateUserDefinedFields=N
ValidateFieldsOutOfOrder=N
ValidateFieldsHaveValues=N
DataDictionary=/var/www/FIX44_edited.xml
/var/www/FIX44_edited.xml
<message name="MarketDataRequest" msgtype="V" msgcat="app">
<field name="MDReqID" required="Y"/>
<field name="SubscriptionRequestType" required="Y"/>
<field name="MarketDepth" required="Y"/>
<field name="MDUpdateType" required="N"/>
<field name="AggregatedBook" required="N"/>
<field name="OpenCloseSettlFlag" required="N"/>
<field name="Scope" required="N"/>
<field name="MDImplicitDelete" required="N"/>
<group name="NoMDEntryTypes" required="Y">
<field name="MDEntryType" required="Y"/>
</group>
<group name="NoRelatedSym" required="Y">
<component name="Instrument" required="Y"/>
<group name="NoUnderlyings" required="N">
<component name="UnderlyingInstrument" required="N"/>
</group>
<group name="NoLegs" required="N">
<component name="InstrumentLeg" required="N"/>
</group>
</group>
<group name="NoTradingSessions" required="N">
<field name="TradingSessionID" required="N"/>
<field name="TradingSessionSubID" required="N"/>
</group>
<field name="ApplQueueAction" required="N"/>
<field name="ApplQueueMax" required="N"/>
<field name="CurrencyNew" required="Y"/>
</message>
和
<field number="5232" name="CurrencyNew" type="STRING"/>
使用唯一名称定义字段 5232(我给了“CurrencyNew”),并使用消息中的字段,您需要在其中使用自定义变量 5232。
启动器.java
Message message = new Message();
quickfix.fix44.MarketDataRequest.NoRelatedSym group = new quickfix.fix44.MarketDataRequest.NoRelatedSym();
StringField currency= new StringField(5232, "EUR");
group.setField(currency);
message.addGroup(group);
希望这可以帮助任何陷入生成数据字典的人:)