由于重复,Quickfixn自定义消息生成无法编译

时间:2015-07-30 12:38:52

标签: c# quickfix fix-protocol quickfixn

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

1 个答案:

答案 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);

并发送了。