java - 使用 Java 中的 QuickFix/J 查询远程服务器以获取仪器的位置

标签 java quickfix quickfixj

我正在构建一个客户端,以便使用 FIX 协议(protocol)和 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=Invalid MsgType372=AP373=1110=242

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

最佳答案

检查交易对手的文件。

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

大多数连接提供程序仅使用这些消息的子集。您应该检查他们的文档,看看他们是否支持 PositionRequest 消息,并了解他们希望您如何设置其中的字段。

关于java - 使用 Java 中的 QuickFix/J 查询远程服务器以获取仪器的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614391/

相关文章:

java - 如果另一个线程尚未完成,则让另一个线程处理进程

java - 对于生成的 pdf 文件,静态图像不会与 Flying Saucer 和 thymeleaf 一起显示

quickfix - 位置报告错误 (FIX 4.4) : Group 702's first entry does not start with delimiter 704

api - FIX API quickfix 多线程

quickfix - 修复新订单单的问题

java - QuickFIX/J - 故障转移策略

java - 生成 SQL JOIN 语句

java - 意外的线程唤醒

java - Java7 ForkJoinTask 中哪个阈值比较好