在上一篇文章中,我讨论了开发交易软件的最佳实践,例如使用事件、数据存储或单独的配置。这次,让我们深入探讨战略部分,具体来说如何从架构的角度有效地组织它。
最简单的方法是假设系统的这一部分接收输入数据,例如价格变化,并生成事件——信号。所有逻辑都可以封装在该模块内。这是一个例子:
def run(self, event): signal = self.calc_rsi(event) if signal != 'FLAT': self.create_event(event, signal)
在此示例中,我们计算 RSI 并根据它生成“买入”或“卖出”等事件。这是一个基本的说明,但概念很清楚。该信号可能包括所需的买入/卖出价格。当然,真正的交易算法更复杂,但您已经知道了!
将所有余额或未平仓头寸数据收集到一个地方是很有好处的。这样,您就可以知道自己持有的美元或比特币总金额。这些知识对于在系统生成信号时确定订单大小至关重要。
def run(self, event): # Calculate USD values # Calculate targets # Check targets # Generate orders
此伪代码概述了以下步骤:
您获取所有余额数据、信号,验证头寸是否与所需的一致,如果不符合则生成订单。
该模块与投资组合模块密切相关。有时,风险管理逻辑可以直接在其中实施,特别是如果您管理的是小额资金并且刚刚开始。对于大公司来说,这可能是最复杂的系统元素,每个公司都定义了其精确的算法。以下是可以在风险管理中解决的一些任务:
您在市场上停留的时间越长,交易算法的这一部分就变得越重要。
在获取所有价格和余额数据、生成信号、计算最佳投资组合规模并考虑所有可能的风险后,没有理由不向交易所发送订单。这可能看起来是最简单的部分,除非您要跨多个交易所实现订单路由。通常,您会正确格式化订单并将其发送到您交易的交易所。
我们讨论了四个模块的功能,每个模块在 90% 的交易算法中都有用。构建你的代码,选择一个好的架构,维护和更新你的交易系统将会变得不那么痛苦。
完整的代码将作为 aspis.finance 的开源交易算法提供。它将包括一些简单的交易策略,但关键功能是能够通过 Aspis 智能合约创建存储、吸引投资者资金并确保透明的利润分享。您可以制定您的策略,将其连接到 Aspis,您的算法将在 DEX 上进行交易,投资者和管理者(您)将通过智能合约赚取利润。请继续关注!
以上是交易系统组件的详细内容。更多信息请关注PHP中文网其他相关文章!