如何在NewOrderSingle中指定provider / AllocAccount

时间:2019-06-17 11:16:44

标签: quickfix fix-protocol quickfixj

我正在编写一个示例quickfix应用程序,并试图执行一个NewOrderSingle。但是我收到一条消息 在fromApp-> OnMessgge .--> executionReport->

  

8 = FIX.4.4 | 9 = 277 | 35 = 8 | 34 = 2 | 49 = FXALL | 52 = 20190617-11:04:09.955 | 56 = paypal | 6 = 0。| 11 = APPL12456S | 14 = 0 | 15 = CAD | 17 = REJECT-1003511248 | 31 = 0。| 32 = 0 | 37 = REJECT-1003511248 | 38 = 2 | 39 = 8 | 40 = 1 | 54 = 1 | 55 = USD / CAD | 58 =无效的帐户(用户帐户映射无效)| 60 = 20190617-11:04:09.928 | 64 = 20190628 | 103 = 99 | 150 = 8 | 151 = 0 | 10 = 141 |

这是我的NewOrderSingle请求-

NewOrderSingle newOrder = new NewOrderSingle();
newOrder.set(new TransactTime(new Date()));

newOrder.set(new Symbol("USD/CAD"));
newOrder.set(new ClOrdID("APPL12456S"));
newOrder.set(new OrderQty(2));
// newOrder.set(new SettlDate("01-22-2019"));
newOrder.set(new SettlDate("20190628"));
newOrder.set(new HandlInst(HandlInst.MANUAL_ORDER));
newOrder.set(new Price(200.9d));

newOrder.set(new Currency("CAD"));
newOrder.set(new NoAllocs(1));
newOrder.set(new Side(Side.BUY));
newOrder.set(new OrdType(OrdType.MARKET));
newOrder.setField(new AllocAccount("test"));
newOrder.setField(new AllocShares(new Double("150")));
System.out.println("New order message send-before - ");

boolean sent = Session.lookupSession(sessionID).sendToTarget(newOrder, sessionID);
System.out.println("New order message send-after - " + sent);

我已经指定了AllocAccount,但是不确定是否需要指定其他任何内容。 几个问题

  1. 如何指定与此帐户对应的密码。
  2. 如果只有授权人员访问此帐户,服务器将如何知道。
  3. 还有一种方法可以使通信同步。 在日志文件中看到此消息-
      

    15:55:23.318 [DefaultThreadPool-1]信息quickfix.mina.NetworkingOptions套接字选项:SocketSynchronousWrites = false

1 个答案:

答案 0 :(得分:2)

此错误消息:

58=Invalid Account (User Account Mapping not valid

来自您的交易对手,而不是FIX本身。他们收到了您的消息,但不喜欢您在字段中输入的信息。

FIX仅用于传输消息,并不确保您没有弄乱消息中的内容!

您需要查看交易对手的文档,或者与他们的技术支持联系。如果我不得不猜测,我会说您的AllocAccount值“ test”不是有效帐户的名称。

对您的问题:

  1. 如何指定与此帐户对应的密码。

    通常,您会在登录消息中使用标签554。 但是,您的交易对手不需要此。您已经连接!

    如果您还有其他疑问,请再次阅读交易对手的文档。

  2. 服务器将如何知道是否只有授权人员才能访问此帐户。

    有几种方法。他们可能将您的IP域列入白名单。它们可能使您在登录消息中使用用户名/密码。它们可能使您使用SSL证书。无论他们做什么,都已经完成了,因为您已经连接了!

    如果您还有其他疑问,请再次阅读交易对手的文档。

  3. 还有一种方法可以使通信同步。 (包括错误消息)

    坦率地说,我不知道此错误消息的含义,并且我使用各种QuickFIX已有10年了。它实际上并不是问题的根源。暂时忽略它。