我已将我的用户名和密码放在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
但是上面的代码仅适用于QuickFix的Java版本,并且DotF版本的QuickFix(即QuickFix / n)中没有此方法
getString(sessionId, "Username");
我希望使用QuickFix / n为FIX 4.4获得类似的结果。 如果有人熟悉QuickFix,这可能是非常简单的任务。 我将非常感谢您的提示或建议。如果您对Java或C ++版本有所了解,我不介意它们都非常相似。我只需要知道这个用户名和密码存储在哪个变量中,如何使用Csharp代码来获取它。
提前致谢。
答案 0 :(得分:4)
您使用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
供参考,请参阅unit tests for SessionSettings。