我最近的任务是为新交易者制作一个基本的交易平台。我正在连接到银行 FIX 4.4 实施。
银行已指定 2 个会话。一个用于报价数据,一个用于交易执行。
我在 c# 中使用 QuickfixN 和编码
我已经设置了我的启动器会话配置,以便在其中包含两个会话。端口不同,目标comp ids 和sender comp ids 不同。我可以连接到两者都很好。我正在努力解决的是如何通过一个会话而不是另一个会话发送我的订单请求。
两个会话都需要 FIX 4.4。默认情况下,它只使用第一个会话。
创建启动器时,将会话对象保存到变量中。(也许通过OnCreate
回调,如此处。)
使这些变量可供消息发送类访问。
然后发送消息,只需调用以下之一:
quoteSession.send(msg)
tradeSession.send(msg)
那么您需要多路复用要在其上发送消息的会话的 SessionId,并设置消息头。像这样的东西(在Java中):
public void mySend (Message m) throws FieldNotFound
{
String beginString = "FIX.4.4";
String sender = "SENDER";
String target = "TARGET";
// Set the message headers
m.getHeader().setField(new SenderCompID(sender));
m.getHeader().setField(new TargetCompID(target));
// Set the correct session for the initiator to send out to
SessionID s = new SessionID(beginString, sender, target);
// Lookup the relevant QF session
_session = Session.lookupSession(s);
// Send the FIX message
try
{
if (_session != null)
{
_session.send(m);
}
else
{
log("Can't send message: FIX session not created.");
log(" " + m.toString());
}
}
catch (Exception e)
{
errorHandler(e);
}
}