跳到主要内容

开发者指南

欢迎使用 NautilusTrader 开发者指南!

在这里您将找到开发和扩展 NautilusTrader 以满足您的交易需求或为项目贡献改进的指导。

信息

本指南的结构设计使得自动化工具可以与人类读者一起使用它。

我们相信使用正确的工具来完成工作。整体设计理念是充分利用 Python 的高级功能,以及其丰富的框架和库生态系统,同时克服其在性能方面的一些固有缺陷和缺乏内置类型安全性(因为它是一种解释型动态语言)。

Cython 的优势之一是内存的分配和释放由 C 代码生成器在构建的"cythonization"步骤中处理(除非您特别使用其一些较低级别的功能)。

这种方法通过编译扩展将 Python 的简单性与接近原生 C 的性能相结合。

我们工作的主要开发和运行时环境是 Python。随着在生产代码库的 .pyx.pxd 文件中引入 Cython,了解 Python 的 CPython 实现如何与底层 CPython API 以及 Cython 生成的 NautilusTrader C 扩展模块交互是很重要的。

我们建议彻底阅读 Cython 文档以熟悉其一些核心概念,以及在哪里使用 C 类型。

虽然不需要成为 C 语言专家,但了解 Cython C 语法如何在函数和方法定义、本地代码块中使用,以及常见的原始 C 类型以及它们如何映射到相应的 PyObject 类型是有帮助的。

内容

开发流程

1. 环境准备

首先设置开发环境,包括 Python、Cython、Rust 工具链和必要的依赖项。

2. 代码贡献

遵循项目的编码标准和最佳实践,确保代码质量和一致性。

3. 测试

编写全面的测试用例,包括单元测试、集成测试和性能测试。

4. 文档

为新功能和 API 编写清晰的文档和示例。

5. 性能优化

使用基准测试工具识别和优化性能瓶颈。

贡献指南

提交代码

  • Fork 项目仓库
  • 创建功能分支
  • 编写测试和文档
  • 提交 Pull Request

报告问题

  • 使用 GitHub Issues 报告 错误
  • 提供详细的重现步骤
  • 包含相关的日志和错误信息

功能请求

  • 在 GitHub Discussions 中讨论新功能
  • 提供详细的用例和需求说明
  • 考虑实现的复杂性和维护成本

技术栈

核心语言

  • Python: 主要开发语言
  • Cython: 性能关键组件
  • Rust: 底层系统组件

工具和库

  • Poetry: 依赖管理
  • pytest: 测试框架
  • Sphinx: 文档生成
  • pre-commit: 代码质量检查

构建系统

  • setuptools: Python 包构建
  • Cargo: Rust 组件构建
  • GitHub Actions: CI/CD 流水线