C++ FIX 实现 --> 会话的无效用户。用户名和 SenderCompId 必须匹配
C++ FIX Implementation --> Invalid user for session. Username and SenderCompId must match
我正在使用 QuickFix 在 C++ 中开发一个机器人,当我发送一条登录消息时,我收到一条注销响应,上面写着 “会话用户无效。用户名和 SenderCompId 必须匹配”
这是我的留言:
8=FIXT.1.1|9=113|35=A|34=1|49=REM4820|52=20201008-22:22:59.886|56=ROFX|553=User|554=pass|98=0|108=30|141=Y|1137=9|10=054|
(出于隐私原因更改了用户和密码)
这是回复:
8=FIXT.1.1|9=135|35=5|34=1|49=ROFX|52=20201008-22:33:00.356|56=REM4820|1128=9|58=Invalid user for session. Username and SenderCompId must match.|1409=1|10=124|
我尝试过的事情:
我已经下载了 this python 项目并用它与 Remarkets 连接,得到了相同的结果。 (并且正在发送相同的登录消息)
交换 SenderCompID 和 TargetCompID,正如我在另一个 post 中看到的,它帮助了某人。
让新用户使用新密码尝试不同的帐户,结果相同。
没有发送用户名和密码,因为 Remarkets 文档指出没有必要:主机没有响应
玩过 SSL 配置。我正在使用 Stunnel4,但我假设如果“用户名和 SenderCompId 必须匹配”,则接受者必须接收并阅读我的消息。
忽略 SSL 并直接连接:连接被对等方重置。
我的第一个也是最重要的问题是:我做错了什么?
其他可能真正有帮助的问题:
有没有办法让我使用漂亮的 GUI #OrNot 连接 (OS:ubuntu) 并检查 FIX 消息以查看连接消息之间的区别而我的没有?这些是我 python 的意图,但我得到了相同的结果。
有人知道 Remarkets Alternative 吗,把它归咎于 remarkets 就像把它归咎于编译器一样,但我需要检查一下。
为什么服务器回答字段 58 并给出解释,但有时我会收到“连接被对等方重置”?
Client.conf
[DEFAULT]
PersistMessages=Y
ConnectionType=initiator
ReconnectInterval=60
FileLogPath=./Logs/
FileStorePath=./Sessions/
UseLocalTime=Y
UseDataDictionary=Y
AppDataDictionary=conf/spec/FIX50SP2_rofex.xml
TransportDataDictionary=conf/spec/FIXT11.xml
StartTime=00:00:00
EndTime=00:00:00
ValidateUserDefinedFields=N
ResetOnLogon=Y
ResetOnLogout=Y
DefaultApplVerID=FIX.5.0SP2
[SESSION]
BeginString=FIXT.1.1
SenderCompID=REM4820
TargetCompID=ROFX
SocketConnectHost=127.0.0.1
SocketConnectPort=9876
HeartBtInt=30
TimeInForce=Day
TradingSessionID=1
ScreenLogShowIncoming=Y
ScreenLogShowOutgoing=Y
ScreenLogEvents=Y
LogoutTimeout=5
LogonTimeout=30
ResetOnDisconnect=Y
RefreshOnLogon=Y
SocketNodelay=N
ValidateFieldsHaveValues=N
ValidateFieldsOutofOrder=N
CheckLatency=N
这绝对是一个 counterparty-specific-logic 问题,而不是 FIX 协议问题。
让我们从字面上看:
Username and SenderCompId must match.
仅根据该消息,很明显标记 49 (SenderCompID) 和标记 553 (用户名) 必须具有相同的值。
是吗?我猜他们没有。尝试设置 553 以匹配 49。
我正在使用 QuickFix 在 C++ 中开发一个机器人,当我发送一条登录消息时,我收到一条注销响应,上面写着 “会话用户无效。用户名和 SenderCompId 必须匹配”
这是我的留言:
8=FIXT.1.1|9=113|35=A|34=1|49=REM4820|52=20201008-22:22:59.886|56=ROFX|553=User|554=pass|98=0|108=30|141=Y|1137=9|10=054|
(出于隐私原因更改了用户和密码)
这是回复:
8=FIXT.1.1|9=135|35=5|34=1|49=ROFX|52=20201008-22:33:00.356|56=REM4820|1128=9|58=Invalid user for session. Username and SenderCompId must match.|1409=1|10=124|
我尝试过的事情:
我已经下载了 this python 项目并用它与 Remarkets 连接,得到了相同的结果。 (并且正在发送相同的登录消息)
交换 SenderCompID 和 TargetCompID,正如我在另一个 post 中看到的,它帮助了某人。
让新用户使用新密码尝试不同的帐户,结果相同。
没有发送用户名和密码,因为 Remarkets 文档指出没有必要:主机没有响应
玩过 SSL 配置。我正在使用 Stunnel4,但我假设如果“用户名和 SenderCompId 必须匹配”,则接受者必须接收并阅读我的消息。
忽略 SSL 并直接连接:连接被对等方重置。
我的第一个也是最重要的问题是:我做错了什么?
其他可能真正有帮助的问题:
有没有办法让我使用漂亮的 GUI #OrNot 连接 (OS:ubuntu) 并检查 FIX 消息以查看连接消息之间的区别而我的没有?这些是我 python 的意图,但我得到了相同的结果。
有人知道 Remarkets Alternative 吗,把它归咎于 remarkets 就像把它归咎于编译器一样,但我需要检查一下。
为什么服务器回答字段 58 并给出解释,但有时我会收到“连接被对等方重置”?
Client.conf
[DEFAULT]
PersistMessages=Y
ConnectionType=initiator
ReconnectInterval=60
FileLogPath=./Logs/
FileStorePath=./Sessions/
UseLocalTime=Y
UseDataDictionary=Y
AppDataDictionary=conf/spec/FIX50SP2_rofex.xml
TransportDataDictionary=conf/spec/FIXT11.xml
StartTime=00:00:00
EndTime=00:00:00
ValidateUserDefinedFields=N
ResetOnLogon=Y
ResetOnLogout=Y
DefaultApplVerID=FIX.5.0SP2
[SESSION]
BeginString=FIXT.1.1
SenderCompID=REM4820
TargetCompID=ROFX
SocketConnectHost=127.0.0.1
SocketConnectPort=9876
HeartBtInt=30
TimeInForce=Day
TradingSessionID=1
ScreenLogShowIncoming=Y
ScreenLogShowOutgoing=Y
ScreenLogEvents=Y
LogoutTimeout=5
LogonTimeout=30
ResetOnDisconnect=Y
RefreshOnLogon=Y
SocketNodelay=N
ValidateFieldsHaveValues=N
ValidateFieldsOutofOrder=N
CheckLatency=N
这绝对是一个 counterparty-specific-logic 问题,而不是 FIX 协议问题。
让我们从字面上看:
Username and SenderCompId must match.
仅根据该消息,很明显标记 49 (SenderCompID) 和标记 553 (用户名) 必须具有相同的值。
是吗?我猜他们没有。尝试设置 553 以匹配 49。