这是一个关于如何在复杂过程中找到失败点的问题。 (如果你能弄清楚究竟出了什么问题......哇。)
我正在使用QuickFix
与Python 2.7
连接到期货市场,我使用pandas
处理数据并将其放入数据框等。过程如下:< / p>
连接到TT FIX适配器,提供交换访问。
提交MarketDataIncrementalRefreshRequest,这会产生流数据(每次交易时都会报告)。结果,在繁忙时段期间输入消息之间的时间可以是10毫秒的量级。
解析每条消息,转换为pandas
数据帧,并与该市场的预先存在的数据帧连接。代码:
#df is dataframe of trades with 10 columns
df.index = pd.to_datetime(df.TIME)
#concatenate with prior data
#TS_DIC is a dictionary holding trade data for various markets
try:
df_prev = TS_DIC[market_key]
TS_DIC[market_key] = pd.concat([df_prev,df])
except:
#in the case this is the first message received:
TS_DIC[market_key] = df
#now write to disk
try:
#if file exists just write
to_file = open('path/for/data', 'a+')
df.to_csv(mode='a+', path_or_buf= to_file, header=False, index=False)
to_file.close()
except:
#create the file with headers and write
to_file = open(path+name, 'wb')
df.to_csv( path_or_buf= to_file, index=False)
to_file.close()
此过程运行正常,有时持续数小时,有时持续数分钟,然后停止工作。从来没有任何错误,只是停止。结果是有差距的数据。我可以通过再次执行第2步来重新开始此过程。
我很感激任何习惯高吞吐量数据的人的帮助,甚至可能是这些软件包。
这可能是什么问题?我怎么弄清楚出了什么问题?
答案 0 :(得分:2)
想想我会让遇到这个问题的人知道我是如何解决的:
按照上述评论的建议打印错误实际上并没有帮助解决问题。数据仍然会停止而不会出现打印错误。原因是有时QuickFix会因任何原因脱机启动,并会自动重新登录。显然这是FIX应用程序必须处理的事情。
发生了什么:因为我手动启动数据下载,每次启动离线时,数据都会停止。因此,通过将数据请求放入QuickFix的OnLogon函数,我可以在程序登录时自动重复下载请求。
这解决了我的问题。感谢CasualDemon和cpburnz。