我一般是修复协议的新手,在寻找修复引擎时,我被推荐尝试quickfix,我已经研究了一些主题并最终设法生成自定义类,但项目确实要编译因为某些字段是重复的,当主消息体定义已经存在于组件中的标签时,会发生这种情况,我正在使用的字典是在某处提供的,因此我无法控制它。
<message name="SumMessage" msgtype="X" msgcat="app">
<component name="SumComponent" required="Y" />
<field name="DuplicateField" required="Y" />
</message>
<component name="SumComponent">
<field name="DuplicatedField" required="Y" />
</component>
我的问题是,由于上面已经在自定义组件中定义了,它是否会导致代码生成ruby代码在创建消息类时创建值的重复? 如果是这样,这是否意味着我使用的字典无效,我宁愿将其发送回来?。
答案 0 :(得分:0)
对我来说,这看起来像无效的FIX
除非您定义了重复的组,否则您不能在邮件中使用相同的字段两次,并且我在您的规范中看不到重复的组。
询问一些示例消息以查看他们真正想要的内容,并且您可以调整要匹配的规范。
此外,如果您愿意放弃优秀的setter和getter函数,则不一定需要重新生成和重新编译。例如,FIX 4.2中不存在消息类型BN,但我有一个交易对手,希望我向他们发送该消息。所以我从FIX 4.4规范中提取了一个定义的子集,将它放在我的FIX 4.2规范xml中,并在代码中完成了这个
QuickFix42.Message ack = new QuickFix42.Message(new MsgType("BN"));
ack.setField(new ExecID(execId));
ack.setField(new ExecAckStatus(QuickFix.ExecAckStatus.ACCEPTED));
Session.sendToTarget(ack, session);
并发送了。