我最近被赋予了为新交易者建立基本交易平台的任务。我正在连接银行FIX 4.4实施。
银行指定了2个会话。一个用于报价数据,一个用于交易执行。
我在c#
中使用QuickfixN和编码我已将我的启动器会话配置设置为包含两个会话。端口不同,目标组件和发送器组件不同。我可以连接都很好。我正在努力解决的问题是如何通过一个会话而不是另一个会议来发送我的订单请求。
两个会话都需要FIX 4.4。默认情况下,它只使用第一个会话。
答案 0 :(得分:3)
创建启动器时,将会话对象保存到变量中。 (也许通过OnCreate
回调,完成here。)
使消息发送类可以访问这些变量。
然后发送消息,只需调用以下方法之一:
quoteSession.send(msg)
tradeSession.send(msg)
答案 1 :(得分:0)
您需要多路复用发送消息的会话的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);
}
}