【发布时间】:2015-04-13 17:34:23
【问题描述】:
我在 Python 中使用 QuickFix。在this 问题的后面,我稍微探索了 SessionID 类,但我对这种行为感到困惑。
SessionID 类描述为here。它由 BeginString、SenderCompID 和 TargetCompID 组成。
假设我的 SessionID 字符串形式如下所示:FIX.4.2:LMXTS->TS68。
fix.SessionID().fromString() 返回:->
如果你看的话,这三个填充字符是分隔 BeginString、SenderCompID 和 TargetCompID 的。
fix.SessionID().getBeginString 返回8=☺(即 BeginString 不存在)。同样的事情也适用于getSenderCompID 和getTargetCompID,它们分别返回49=☺ 和56=☺。
fix.SessionID().getTargetCompID().getValue() 返回空字符串''。
尝试另一种方式,fix.SessionID().fromString('FIX.4.2:LMXTS->TS68') 返回None。
我试图在创建会话之后获取这些值(当我将fix.ScreenLogFactory(settings) 传递给发起者时,我可以明确看到发生的情况。所以我很困惑。
【问题讨论】:
-
什么告诉您会话已创建?
-
你调用 start() 了吗?
-
当我在 screenLog 模式下启动 QF 时,它会在创建
<20150413-17:43:15.863, FIX.4.2:LMXTS->TS68, event> (Created session)时打印出来。是的,我也尝试启动启动器,但得到了相同的结果。 -
Application.h中的方法void onLogon( const SessionID& ) {}在会话登录时被触发,并为您提供对SessionID的引用。您可以检查onLogon内的SessionID对象以查看其行为方式。 -
所以我想知道是否有某种方法可以做这样的事情并且有。
def onLogon (self, sessionID): print sessionID(有适当的缩进)给了我我需要的东西。我可以在onLogon中调用sessionID.to_string()(我也可以在toApp等中调用),并以这种方式区分我的会话。有用!如果您想将此作为解决方法发布,我会接受。更多的互联网点给你。
标签: python python-2.7 quickfix fix-protocol