使用 Python Quickfix OrderMassStatusRequest

Cth*_*uZA 2 python quickfix python-2.7

我正在努力创建一个OrderMassStatusRequest使用PythonQuickfix. 在构建消息时,使用 时似乎需要 Instrument 类MassStatusReqType(3)

从这里的文档http://fixwiki.org/fixwiki/OrderMassStatusRequest/FIX.4.4-5.0SP1 看来我应该能够简单地创建一个仪器组,如下面的代码所示。

遗憾的是,这不起作用。我注释掉的任何选项也没有。

非常感谢任何使此方法发挥作用的帮助!

提前致谢

def mass_status_request(self, product):
    #
    #   product is a class containing attributes code, instrument_type and exchange
    #
    mass_status_request = quickfix44.OrderMassStatusRequest()
    mass_status_request.setField(quickfix.MassStatusReqID("123"))
    mass_status_request.setField(quickfix.TargetSubID(product.instrument_type))
    mass_status_request.setField(quickfix.MassStatusReqType(3))

    # Create instrument group

    #mass_status_instruments = quickfix44.OrderMassStatusRequest().FieldMap()
    mass_status_instruments = quickfix44.Instrument()
    #mass_status_instruments = quickfix44.component().Instrument()
    #mass_status_instruments = quickfix44.Component().Instrument()
    #mass_status_instruments = quickfix44.OrderMassStatusRequest.Instrument()
    #mass_status_instruments = quickfix44.OrderMassStatusRequest().Instrument()
    #mass_status_instruments = quickfix44.Instrmt()
    #mass_status_instruments = quickfix44.Fieldmap().Group()

    # Done creating instrument group

    mass_status_instruments.setField(quickfix.Symbol(product.code))
    mass_status_instruments.setField(quickfix.SecurityExchange(product.exchange))
    mass_status_request.addGroup(mass_status_instruments)

    print "Sending Mass Status Quote Request for {} for Session Id {}".format(str(product), str(self.session_identifier))
    quickfix.Session.sendToTarget(mass_status_request, self.session_identifier)
Run Code Online (Sandbox Code Playgroud)

Gra*_*ier 5

在这种情况下,Instrument 不是一个组,而是一个“组件”。

组件并不是真正的...东西。它们就像 FIX DataDictionary 中的宏。许多消息需要相同的字段集,因此 DD 定义了其他消息可以包含的 Instrument 组件,而不是在每个消息中指定相同的字段。

QuickFIX 的编程接口忽略了组件这一概念。消息不包含组件,它们包含组件中定义的字段。因此,您可以直接在消息中设置这些字段。

删除代码中的所有仪器内容,然后直接在消息中设置仪器字段:

mass_status_request.setField(quickfix.Symbol(product.code))
mass_status_request.setField(quickfix.SecurityExchange(product.exchange))
Run Code Online (Sandbox Code Playgroud)

  • 提示:主体字段仅在重复组内时才需要按指定的顺序。在群体之外,身体内部的秩序并不重要。 (2认同)
  • 提示2:使用[FIXimate](http://www.fixtradingcommunity.org/FIXimate/FIXimate3.0/)。这是我所知道的最好的 FIX 参考工具。 (2认同)