0

我正在使用 FIX 协议和 QuickFix/J API 构建一个用于与远程服务器进行交易的客户端。

我可以发送订单、接收价格更新、取消订单等...

我现在被要求“查询 API 以获取仪器的当前位置”。

所以假设我可以提交一个购买工具的订单,但它没有被执行,我想从服务器接收一些信息,比如“你在数量 Y 的工具 X 上做多”。

是否可以使用 QuickFix/J API?

我写了一个这样的方法

static void positionReport() throws SessionNotFound{

    quickfix.fix50.PositionReport order = new quickfix.fix50.PositionReport();

    SessionID sessionId = (SessionID) initiator.getSessions().get(0);

    order.set(new Account("1005390"));
    order.set(new SecurityID("4663789"));
    order.set(new SecurityExchange("XETR"));
    order.set(new Symbol("SAP"));


    Session.sendToTarget(order, sessionId);


}

它发送这样的 FIX 消息

8=FIX.4.29=9835=AP34=4949=HIQ6_ORDER52=20140324-
15:54:10.14256=HIQFIX1=100539048=466378955=SAP207=XETR10=199

并收到这样的消息:

8=FIX.4.29=9935=334=6949=HIQFIX52=20140324-15:54:10.89156=HIQ6_ORDER45=4958=无效的 MsgType372=AP373=1110=242

如您所见,我收到“无效消息”错误

4

2 回答 2

1

检查您的交易对手的文件。

FIX 是一个相当“愚蠢”的协议。它只是提供了一个通信基础设施。最好将默认消息定义视为您可以使用的建议消息列表。即使两个交易对手支持一种消息类型,两个交易对手中的每一个都可能以完全不同的方式使用它。

大多数连接提供者只使用这些消息的一个子集。您应该查看他们的文档以查看他们是否支持 PositionRequest 消息,并查看他们希望您如何设置其中的字段。

于 2014-03-24T18:46:31.017 回答
0

不,您不能使用 Quickfix 来做到这一点,除非并且直到交易对手被建模以根据您的特定喜好为您提供 FIX 确认。这就是您可以将自定义的 FIX 字段添加到 FIX XML 配置文件的原因。

373 tag says 11  -> 11 = Invalid MsgType
58 confirms it for you again.

检查您的 FIX XML 配置并检查您的消息是否完整以及您的交易对手是否允许AP类型的消息。

于 2014-03-24T17:47:13.923 回答