开发者指南
欢迎使用 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
类型是有帮助的。
内容
- 环境设置 - 设置开发环境和依赖项
- 编码标准 - 代码风格和最佳实践
- Cython - Cython 开发指南和技巧
- Rust - Rust 组件开发
- 文档 - 文档编写和维护
- 测试 - 测试策略和工具
- 基准测试 - 性能测试和优化
- 适配器开发 - 创建新的交易所适配器
- FFI - 外部函数接口
- 打包数据 - 数据打包和分发
开发流程
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 流水线