如何登录 FIX 协议?

How to Logon in FIX Protocol?

我是 FIX 协议的新手。我们正在使用 TCP 网络流建立连接,然后我们将 FIX 消息读取并写入该流。但是当我发送登录消息时,我得到的只是 0。

如果有人能分享一段工作代码会很有帮助。

NetworkStream stm = openStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(data);
Console.WriteLine("Transmitting.....");
stm.Write(ba, 0, ba.Length);

byte[] bb = new byte[1024];
while (true)
{
    int k = stm.Read(bb, 0, 1024);
    if (k != 0)
    {
        for (int i = 0; i < k; i++)
            Console.Write(Convert.ToChar(bb[i]));
        Console.Write(k);
    }
}

我假设您在发送登录 (35=A) 消息后是 发起者 方。

要登录 FIX 服务器,您需要

  • 连接到 FIX 服务器
  • 发一个LOGON message (35=A)
  • 收到LOGON message (35=A)
  • 发送和接收 Heartbeat messages (35=0)

我想推荐您使用 FIX 库来处理 FIX 消息。 FIX 协议有几个消息(session messagesapplication messages 等),有些是非常复杂的消息。 我用 http://quickfixengine.org/ for dotnet and c++ and quickfix/j 代替 java。

如果您使用库,它将处理所有 "session messages" 而您只需要处理 "application messages",例如NewOrderSingle(35=D)ExecutionReport(35=8)

为了保持 FIX 连接和 运行,您(或图书馆)需要交换几个 "session messages" 来同步 ID。 ID(双方)非常重要,正确接收消息。