5

我已将我的用户名和密码放在 FIX 配置文件中。所以我必须认为我应该能够从一些内部变量(如会话变量或 SessionSetting 变量或 session.SessionDataDictionary 或其他变量)中获取用户名和密码。但是,我没有找到任何直接的解决方案来从内部变量中获取用户名和密码。

[SESSION]
BeginString=FIX.4.4
SenderCompID= xxxxx
Username= xxxx
Password= xxxx

从逻辑上讲,这可能是非常可行的。但是,没有人建议这样做,或者我没有看到有人在谷歌上这样做。我从谷歌找到的唯一代码位就是这个。

String username = sessionSettings.getString(sessionId, "Username"); //only works for Java version of QuickFix

但是上面的代码只适用于 Java 版本的 QuickFix,并且此方法在 QuickFix 的 DotNet 版本中不可用(即 QuickFix/n)

getString(sessionId, "Username"); 

我希望使用 QuickFix/n 为 FIX 4.4 实现类似的结果。如果有人熟悉 QuickFix,这可能是非常简单的任务。我将非常感谢您的提示或建议。如果您对 Java 或 C++ 版本有一些想法,我不介意,因为它们都非常相似。我只需要知道这个用户名和密码存储在哪个变量中,以及如何使用 Csharp 代码获取它。

提前致谢。

4

1 回答 1

5

你在正确的轨道上String username = sessionSettings.getString(sessionId, "Username");,但 QuickFIX/n 中的方法调用略有不同。

通话更像sessionSettings.Get(sessionId).GetString("Username");

看这个例子:

var configuration =
    new System.Text.StringBuilder().AppendLine("[ DEFAULT ]")
        .AppendLine("ConnectionType=initiator")
        .AppendLine("[SESSION]")
        .AppendLine("BeginString=FIX.4.4")
        .AppendLine("SenderCompID=Sender")
        .AppendLine("TargetCompID=Target")
        .AppendLine("Username=Gandalf")
        .AppendLine("Password=YouShallNotPass")
        .ToString();
var settings = new SessionSettings(new System.IO.StringReader(configuration));
var session = new SessionID("FIX.4.4", "Sender", "Target");
var sender = settings.Get(session).GetString("SenderCompID"); // Returns Sender
var user = settings.Get(session).GetString("Username"); // Returns Gandalf
var pass = settings.Get(session).GetString("Password"); // Returns YouShallNotPass

有关参考,请参阅SessionSettings 的单元测试

于 2014-12-01T16:25:49.660 回答