如何为小型算法交易软件设置数据收集

How to set up data collection for small-scale algorithmic trading software

这是概念层面的问题。

我正在构建一个小型算法交易软件,我想知道我应该如何在该系统中设置数据 collection/retrieval。该系统应该是完全自主的。

目前我想要实时交易的算法正在以非常低的频率进行,但是我希望将来能够以更高的频率进行交易,因此我认为这是一个好主意使用 websocket 设置数据收集以立即获得实时交易。如果需要,我可以稍后汇总这些。

我的第一个问题是:考虑到数据是实时的,我可以一开始使用CSV文件存储吗,或者你会推荐一些更充实的东西吗?

无论如何,数据收集将在我的应用程序中作为守护进程进行。

我的第二个问题是:是否有任何框架可用于处理实时传入数据以在其余软件查询数据库时保持数据库不变以避免冲突?

我的第三个也是最后一个问题是:您认为在这种情况下使用 websocket 是明智的方法,还是每次应用程序需要数据时进行查询会更好?

CSV 是一种很好的交换格式,但由于它基于文本文件,因此不适合 real-time 更新。只是我的意见,但我想不出有什么理由比数据库更喜欢它。

为了处理实时冲突,您以后需要一个专业级的数据库。 PostgreSQL 以健壮着称,MariaDB 可能也是一个正确的选择。你可以在像 SQLite 这样的开发模式下使用 liter 数据库,但要注意细微的差别:很容易编写一些可以在一个数据库上运行而在另一个数据库上运行的东西。另一方面,如果跨数据库的可移植性很重要,您应该至少使用 2 个数据库:一个在开发时,另一个在集成时。

要立即问自己的一个问题是,您是想要关系数据库还是 noSQL 数据库。前者确保 ACID(原子性、一致性、隔离性、持久性)事务,后者提供更大的可扩展性。

algo-trading 的主要参与者之一 Man Group 开源了他们名为 Artic 的数据存储,专为时间序列和报价数据设计。你可以找到它 here