1

我使用 quickFixEngine 并希望将 ConfigurationSection 用于所有 engion 设置,而不是 setting.txt 文件。但是我不确定如何使用该设置初始化 SessionSettings。

我创建了一个包含所有需要属性的“SessionConfiguration”。加载该部分后,我尝试将其转换为 Stream 并使用创建的 Stream 调用 QuickFix.SessionSettings(Stream)。

我它不适合我....

谢谢你。

4

3 回答 3

2

如果您尝试不从文件加载 SessionSettings,那么您可能希望在 QuickFix.Dictionary 的帮助下以编程方式定义设置,而不是使用流。在 C# 中,它的工作方式如下:

您初始化设置:

SessionSettings settings = new SessionSettings();

然后,实例化一个 QuickFix.Dictionary 并用设置填充它,首先使用 Default,然后使用 Session 设置:

    QuickFix.Dictionary defaultDic = new QuickFix.Dictionary();

        defaultDic.SetString("ConnectionType","initiator");
        defaultDic.SetString("ReconnectInterval", "5");
        defaultDic.SetString("FileStorePath", @"../../../FixInitiator/spec/fix/fileStore");
        defaultDic.SetString("FileLogPath", "log");
        defaultDic.SetString("StartTime", "00:00:00");
        defaultDic.SetString("EndTime", "00:00:00");
        defaultDic.SetBool("UseDataDictionary", true);
        defaultDic.SetString("DataDictionary", @"../../../FixInitiator/spec/fix/FIX44.xml");
        defaultDic.SetString("SocketConnectHost", "127.0.0.1");
        defaultDic.SetString("SocketConnectPort", "5001");
        defaultDic.SetString("LogoutTimeout", "5");
        defaultDic.SetBool("ResetOnLogon", true);
        defaultDic.SetBool("ResetOnDisconnect", true);

        settings.Set(defaultDic);


        QuickFix.Dictionary dic = new QuickFix.Dictionary();

        dic.SetString("BeginString", "FIX.4.4");
        dic.SetString("SenderCompID", user);     // user is a string with stored userName
        dic.SetString("TargetCompID", "ServerAcceptor");
        dic.SetString("HeartBtInt", "10");


        SessionID sID = new SessionID("FIX.4.4", user, "ServerAcceptor");
        settings.Set(sID, dic);

当您设置相应的设置时,您需要为每个设置使用正确的 SetType。我希望这有帮助。

于 2018-10-14T20:35:14.200 回答
0

您将不得不更改读取底层流的方式。只改变输入法没有帮助。实现 Quickfix 以通过在配置文件中排列配置设置的方式读取流。如果您尝试将配置字段放在错误的位置,您将收到错误消息。它显示流仅在被要求的地方才需要字段。您可以下载源代码并在其背后实现自己的流读取机制。

于 2010-10-27T16:26:13.173 回答
0

如果通过

“而不是 setting.txt 文件”

您的意思是您想在代码中创建设置,可以使用使用默认构造函数构造的 FIX::SessionSettings 对象,然后通过 setstring() 方法设置设置。如果你想添加会话,你可以通过定义一个新的 FIX::Dictionary 对象然后使用 setstring() 来设置设置。然后使用新的 FIX::SessionID 对象添加每个会话:

FIX::SessionID* myID = new FIX::SessionID("FIX.4.1", "sender_id", "target_id");

settings.set(*myID, *myDictionary);

将新字典推送到 SessionSettings 堆栈。这是动态更改设置的好方法,尤其是当您需要使用其他地方的设置时。

于 2011-01-07T17:28:27.273 回答