我使用 quickFixEngine 并希望将 ConfigurationSection 用于所有 engion 设置,而不是 setting.txt 文件。但是我不确定如何使用该设置初始化 SessionSettings。
我创建了一个包含所有需要属性的“SessionConfiguration”。加载该部分后,我尝试将其转换为 Stream 并使用创建的 Stream 调用 QuickFix.SessionSettings(Stream)。
我它不适合我....
谢谢你。
我使用 quickFixEngine 并希望将 ConfigurationSection 用于所有 engion 设置,而不是 setting.txt 文件。但是我不确定如何使用该设置初始化 SessionSettings。
我创建了一个包含所有需要属性的“SessionConfiguration”。加载该部分后,我尝试将其转换为 Stream 并使用创建的 Stream 调用 QuickFix.SessionSettings(Stream)。
我它不适合我....
谢谢你。
如果您尝试不从文件加载 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。我希望这有帮助。
您将不得不更改读取底层流的方式。只改变输入法没有帮助。实现 Quickfix 以通过在配置文件中排列配置设置的方式读取流。如果您尝试将配置字段放在错误的位置,您将收到错误消息。它显示流仅在被要求的地方才需要字段。您可以下载源代码并在其背后实现自己的流读取机制。
如果通过
“而不是 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 堆栈。这是动态更改设置的好方法,尤其是当您需要使用其他地方的设置时。