0

感谢这个论坛的帮助,我的 SQL 连接和插入现在可以工作了。

以下 TR 公式用于从 Excel Eikon 检索数据:

@TR($C3,"TR.CLOSEPRICE (adjusted=0);
  TR.CompanySharesOutstanding;
  TR.Volume;
  TR.TURNOVER"," NULL=Null CODE=MULTI Frq=D SDate="&$A3&" EDate="&$A3)

对于 100k RIC,公式通常需要 30 到 120 秒来刷新。那还是可以接受的。

问题是在 VBA 循环中获得相同的刷新速度。Application.Run "EikonRefreshWorksheet"当前用于本文中推荐的同步刷新。

https://community.developers.refinitiv.com/questions/20247/can-you-please-send-me-the-excel-vba-code-which-ex.html

代码的语法是正确的并且适用于 100 RICS。但是对于 1k,获取速度已经非常慢,并且会完全冻结 50k。即使超时间隔为 5 分钟。

我隔离了刷新部分。没有什么可以减慢它的速度。那么这可能不是获取更大数据集的正确方法吗?有谁知道更好的选择?

4

1 回答 1

0

我终于从 Refinitiv 开发者论坛获得了一些好的建议,我想在这里分享:

我认为您应该直接使用 API,而不是打开电子表格并从中获取数据——但我们所有的 API 都有限制。工作表函数也有限制(它使用与我们的 API 相同的后端服务)——我想你已经发现了。

您可以直接在 VBA 中使用我们较旧的 Eikon COM API。在这种情况下,您可能希望使用 DEX2 API 打开会话并下载数据。您可以在此处找到更多详细信息和 DEX2 教程示例:

https://developers.refinitiv.com/en/api-catalog/eikon/com-apis-for-use-in-microsoft-office/tutorials#tutorial-6-data-engine-dex-2

但是,我建议在 Python 环境中使用我们的 Eikon Data API,因为它更现代,并且会为您提供比 COM API 更好的体验。如果你有一个 50K 仪器的列表,比如说 - 你可以使用一些分块对 5K 仪器进行 10 次 API 调用,这对你来说管理起来会容易得多 - 甚至不需要使用 Excel - 然后你可以使用任何 Python SQL 工具摄取到您希望的任何数据库 - 全部来自一个 python 脚本。

将 refinitiv.dataplatform.eikon 导入为 ek ek.set_app_key('YOUR APPKEY HERE')

riclist = ['VOD.L','IBM.N','TSLA.O']

df,err = ek.get_data(riclist,["TR.CLOSEPRICE(adjusted=0).date","TR.CLOSEPRICE(adjusted=0)",'TR.CompanySharesOutstanding','TR.Volume','TR.周转'])

df #df.to_sql - 请参阅下面的注释 #df.to_csv("test1.csv") 1641297076596.png

这将为您返回一个 pandas 数据框,您可以轻松地将其直接写入任何 SQLAlchemy 数据库(参见此处的示例)或 CSV / JSON 等。

不幸的是,我们公司的政策目前不允许使用 Python。但是 VBA 解决方案也有效,尽管它需要一些时间来理解本教程并且它有更多的限制。

于 2022-01-20T12:53:45.340 回答