如何在 QuickFix 中获取 SessionID

How to get SessionID in QuickFix

我在 Python 中使用 QuickFix。在 问题的背后,我对 SessionID class 进行了一些探索,但我对这种行为感到困惑。

SessionID class 描述为 here。它由 BeginString、SenderCompID 和 TargetCompID 组成。

假设我的字符串形式的 SessionID 如下所示:FIX.4.2:LMXTS->TS68。

fix.SessionID().fromString() returns :->

如果您看一下,这就是分隔 BeginString、SenderCompID 和 TargetCompID 的三个填充字符。

fix.SessionID().getBeginString returns 8=☺(即 BeginString 不存在)。同样的事情也适用于 getSenderCompIDgetTargetCompID,它们分别是 return 49=☺56=☺

fix.SessionID().getTargetCompID().getValue() returns 空字符串 ''.

尝试另一种方式,fix.SessionID().fromString('FIX.4.2:LMXTS->TS68') returns None.

我正在尝试获取这些值 会话创建后(当我将 fix.ScreenLogFactory(settings) 传递给发起者时我可以明确地看到发生了这些值。所以我很困惑.

听起来您是在创建会话之后、登录之前等直接查看会话。这意味着您没有在 FromApp 或 ToApp 中使用断点来查看那里的会话属性。如果这样做,您将直接获得属性,即 SenderCompID 或 TargetCompID。

我在我使用的对象中找不到方法 SessionID。你如何定义你的 'fix' 对象?

Application.h 中的方法 void onLogon( const SessionID& ) {} 在登录会话时触发,并为您提供对 SessionID 的引用。您可以检查 onLogon 中的 SessionID 对象以查看其行为方式。

您可以在创建会话后使用任何 quickfix 方法执行此操作,因为 sesionId 是参数之一。

触发的第一个方法是 onCreate,因此您可以将 sesionId 存储在 class var 中,然后在需要时重用以检索您的设置。您还可以使用其他答案之一中建议的 onLogon 方法。

下面的例子

def onCreate(self, sessionID):
    self.session_id = sessionID
    target = sessionID.getTargetCompID().getString()
    sender = sessionID.getSenderCompID().getString()