算法软件架构
Algo software architecture
我有交易机器人的组件。这遵循以下架构:
- 数据层 - 流式传输和格式化数据
- 模型层 - 更新模型并将事件写入事件队列
- 智能层-获取事件,classify(buy, sell, null),过滤,构造订单(instrument, buy/sell, stop), 写入订单队列
- 订单层 - 获取事件、选择尺寸(或拒绝)、下订单、将订单写入数据库
我的问题是:
- 协调每一层中涉及的所有组件的最佳设计模式是什么?
对于一个(简化的)示例,我认为以下内容不是很好的做法:
- Model M 创建 DataSource 的实例 D
- M 创建一个智力实例 I
- I 创建订单实例 O
上面的要点是一切都实例化其他一切,所以没有什么是独立运行的(因此减少了冗余)。
但我也不认为实例化所有内容并管理交互的 class 是一种很好的做法。
谁能指点一下?
这就是人们使用 IoC 的原因,它解决了这个问题。 https://en.wikipedia.org/wiki/Inversion_of_control
查看您的 language/framework 堆栈,并搜索 IoC 库,它可能会解决您的大部分问题。
我有交易机器人的组件。这遵循以下架构:
- 数据层 - 流式传输和格式化数据
- 模型层 - 更新模型并将事件写入事件队列
- 智能层-获取事件,classify(buy, sell, null),过滤,构造订单(instrument, buy/sell, stop), 写入订单队列
- 订单层 - 获取事件、选择尺寸(或拒绝)、下订单、将订单写入数据库
我的问题是:
- 协调每一层中涉及的所有组件的最佳设计模式是什么?
对于一个(简化的)示例,我认为以下内容不是很好的做法:
- Model M 创建 DataSource 的实例 D
- M 创建一个智力实例 I
- I 创建订单实例 O
上面的要点是一切都实例化其他一切,所以没有什么是独立运行的(因此减少了冗余)。
但我也不认为实例化所有内容并管理交互的 class 是一种很好的做法。
谁能指点一下?
这就是人们使用 IoC 的原因,它解决了这个问题。 https://en.wikipedia.org/wiki/Inversion_of_control
查看您的 language/framework 堆栈,并搜索 IoC 库,它可能会解决您的大部分问题。