如何登录 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 messages
、application 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(双方)非常重要,正确接收消息。
我是 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 messages
、application 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(双方)非常重要,正确接收消息。