我正在构建一个客户端,以便使用 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/