1

我一般是Fix协议的新手,在寻找Fix引擎时,我被推荐尝试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​​ 代码在创建消息类时创建值的重复项吗?如果是这样,这是否意味着我正在使用的字典无效,我应该将其原样发回?

4

1 回答 1

0

这对我来说看起来像是无效的修复

除非您定义了重复组,否则您不能在消息中两次使用相同的字段,并且我在您的规范中没有看到重复组。

询问一些示例消息以查看他们真正想要的内容,您可以调整规范以匹配。

此外,如果您愿意放弃不错的 setter 和 getter 函数,则不一定需要重新生成和重新编译。例如,消息类型 BN 在 FIX 4.2 中不存在,但我有一个交易对手希望我向他们发送该消息。因此,我从 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);

并发送了那个。

于 2015-08-06T12:37:22.797 回答