Skip to main content

创建投资算法的框架

项目描述

建造 测试 下载 当前版本

赞助商

投资算法框架

投资算法框架是一个用于构建投资算法的 Python 框架。它鼓励快速开发和干净、实用的代码设计。

该框架为您提供了创建投资算法所需的所有组件(数据提供、投资组合管理、订单执行等)。此外,可以使用将在后台运行的 REST Api 来控制该算法。

币安算法示例

import os
from investing_algorithm_framework import App, AlgorithmContext

# Set parent dir as resources' directory (database, manage.py)
dir_path = os.path.abspath(os.path.join(os.path.realpath(__file__), os.pardir))

# Create an application (manages your algorithm, rest api, etc...)
app = App(
    resource_directory=dir_path,
    config={
        "PORTFOLIOS": {
            "MY_PORTFOLIO": {
                "API_KEY": "<YOUR_API_KEY>",
                "SECRET_KEY": "<YOUR_SECRET_KEY>",
                "TRADING_SYMBOL": "USDT",
                "MARKET": "BINANCE",
            }
        }
    }
)


# Algorithm strategy that runs every 5 seconds and gets the ticker of BTC from BINANCE
@app.algorithm.strategy(
    time_unit="MINUTE",
    interval=5,
    market="BINANCE",
    target_symbol="BTC",
    trading_symbol="USDT",
    trading_data_type="OHLCV",
    limit=100,
    trading_time_unit="ONE_DAY"
)
def perform_strategy(context: AlgorithmContext, ohlcv):
    print(context.get_unallocated("MY_PORTFOLIO"))
    print(ohlcv)

if __name__ == "__main__":
    app.start()

注意:该框架是alpha

示例算法使用 BINANCE 的默认数据提供者、订单执行者和投资组合管理器。但是,您也可以为您的算法定义自己的组件,使其与任何选择的经纪人兼容。

该框架的目标是为您的算法提供一组组件,这些组件可以处理各种开箱即用的操作流程。

特征

  • 数据提供
  • 订单执行
  • 投资组合管理
  • 绩效跟踪
  • 策略调度
  • 资源管理
  • 历史投资组合快照
  • 订单状态管理
  • 客户端(Rest API)

但是,我们还旨在提供一个模块化框架,您可以在其中编写自己的组件或为框架使用第三方插件。

更多信息和完整文档可在网站上找到

下载

您可以使用 pypi 下载该框架。

pip install investing-algorithm-framework

免责声明

如果您使用此框架进行投资,在您清楚地了解该框架的工作原理之前,不要冒险您害怕失去的资金。我们怎么强调都不为过:

在您开始使用该框架的资金之前,请确保您彻底测试了您的组件。使用该软件的风险由您自己承担。作者和所有附属机构对您的投资结果不承担任何责任。

此外,请确保您阅读了您使用的任何插件的源代码或使用此框架制作的算法的实现。

有关使用和许可的更多信息,我们建议您访问网站上的许可页面。

文档

所有文档都可以在文档网站上在线找到

在大多数情况下,如果您正在构建算法/机器人,您可能永远不必直接更改此 repo 上的代码。但如果你这样做,请查看网站上的贡献页面。

如果您想与投资算法框架用户和开发人员聊天,请加入我们的 Slack加入我们的 reddit

致谢

我们要感谢这个项目的所有贡献者。可以在此处找到为该项目做出贡献的所有人员的完整列表

错误/问题

如果您在框架中发现错误,请先搜索我们的问题跟踪器 。如果尚未报告,请创建一个新问题

感觉框架缺少一个功能?我们欢迎您的拉取请求!

请注意,在开始任何主要的新功能工作之前,请打开一个描述您计划做什么的问题。这将确保感兴趣的各方可以就该功能提供有价值的反馈,并让其他人知道您正在开发它。

重要提示:始终针对develop分支创建功能或修补程序,而不是master.

项目详情