Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中的QuickFix/J查询远程服务器以获取仪器的位置_Java_Quickfix_Quickfixj - Fatal编程技术网

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

使用Java中的QuickFix/J查询远程服务器以获取仪器的位置,java,quickfix,quickfixj,Java,Quickfix,Quickfixj,我正在使用FIX协议和QuickFix/japi构建一个用于与远程服务器进行交易的客户端 我可以发送订单,接收价格更新,取消订单等 现在我被要求“查询仪器当前位置的API” 假设我可以提交一份购买仪器的订单,但订单没有执行,我希望从服务器收到一些信息,如“您在购买数量为Y的仪器X等” 是否可以使用QuickFix/J API 我写了一个这样的方法 static void positionReport() throws SessionNotFound{ quickfix.fix50.Po

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

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

现在我被要求“查询仪器当前位置的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);


}
它会发送这样的修复消息

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


}
8=FIX.4.29=9835=AP34=4949=HIQ6\U订单52=20140324-
15:54:10.14256=HIQFIX1=100539048=466378955=SAP207=XETR10=199

并接收如下消息:

8=修复。4.29=9935=334=6949=HIQFIX52=20140324-15:54:10.89156=HIQ6_ORDER45=4958=无效 MsgType372=AP373=1110=242


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

不,您不能使用Quickfix执行此操作,除非和直到交易对手被建模以根据您的特定喜好向您提供修复确认。这就是为什么您可以将自定义的修复字段添加到修复XML配置文件中

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

检查您的修复XML配置,检查您的消息是否完整,以及您的交易对手是否允许类型为AP

的消息检查您的交易对手的文档

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


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

这是一个很好的答案。我的意思是,跟踪你的职位是风险管理的绝对关键。FIX只是给了我们一个通用协议,这样每个人都可以在不处理数千个协议的情况下进行交易。正如格兰特所说,这一切都取决于你用谁作为主要交易对手:为你管理头寸是一种风险。我已经说过,你可以找一个主要的经纪人来帮助你。并看一看,以进一步了解库存风险。