贡献代码

如何做出贡献?

  • 作贡献并不一定意味着添加代码。您可以 提出问题参与讨论提出功能建议 ,这些都是有价值的贡献。我也非常希望你分享使用qteasy创建的交易策略,或实现的好想法。当然,为qteasy编写代码也是一种很好的贡献方式。对任何贡献,我在此都深表谢意。

  • 您可以参阅所有的开源软件贡献指南(例如,开源指南)。因此,我仅提到一些我在qteasy中可能特别关注的事项。


报告问题

  • 在提交问题报告时,请提供清晰的问题描述和您的工作环境信息。您可以使用bug提交模板以便在您的描述中包括以下部分:

    • 你期望看到的结果:描述你在遇到问题时想要实现的目标或期望看到的结果

    • 具体代码:提供你认为可以得到期望结果的代码

    • 实际结果:描述你实际得到的结果,包括错误信息

    • 工作环境:告诉我你的机器、操作系统和依赖包的版本

    • 系统配置:打印出你的qteasy配置和本地数据源概览

    • 重现方法:尽量提供可以让我重现问题的例子,以便找出问题的根本原因


提供示例和改进文档

  • 我尤其希望并感谢您帮助我提供更多的使用示例、或帮助我改进项目文档,例如:

    • 编写示例交易策略

    • 分享批处理代码片段

    • 分享可视化图表

    • 纠正文档中的错误

  • 请按照下面的Fork/Clone/Pull Request工作流程提供您的贡献,我会尽快给予反馈。


分支/克隆/合并请求工作流程

  • GitHub上的标准贡献工作流程称为Fork/Clone (分支/克隆)。对于那些可能不熟悉的人,这里是一个简要的总结和一些参考链接。

    • 我们假设您熟悉git的基础知识:git clonegit commit

  • 注意:一个“Fork(分支)”只是一个在GitHub上创建的git clone,它保存在GitHub上您自己的账户中。您可以使用GitHub上的Fork按钮创建一个Fork:这样GitHub就可以跟踪原始github存储库和您的Fork之间的关系。

  • 基本工作流程如下:

    1. 创建一个Fork(分支),这个分支将存在于您的github账户中。

    2. 将您的Fork分支克隆到本地机器上(git clone)。

    3. 修改您本地的代码,用git commit提交更改,然后将更改**git push**到您的GitHub Fork中。

    4. 当您对Fork中的代码满意时,在您的Fork的GitHub页面上,打开一个Pull Request (PR)。Pull Request实际上是请求将您Fork中的更改合并到主qteasy存储库中。PR提供了一个地方,可以在GitHub上查看更改,并发布关于它们的评论和讨论。

    5. 经过代码审查后,如果维护者要求您进行额外的更改,您不需要重新提交另一个Pull Request(只要原始PR仍然是打开状态)。相反,您可以在本地克隆中进行更改,然后再次git push到您的Fork中。更改将自动流入打开的Pull Request中。

    6. 完成上述步骤后,qteasy的维护者将从您的Fork中合并更改到qteasy存储库中。PR将自动关闭。(但是您的Fork将继续存在,并且可以在将来再次用于其他Pull Request;请参阅GitHub文档,了解如何保持您的Fork最新)。

  • 一些参考资料:

  • GitHub文档:

    • https://docs.github.com/en/get-started/quickstart/contributing-to-projects

  • 一些用户的gists:

    • https://gist.github.com/Chaser324/ce0505fbed06b947d962

    • https://gist.github.com/rjdmoore/ed014fba0ee2c7e75060ccd01b726cb8


编码规范

  • 我并不非常严格地要求遵守PEP-8的每一条规则,但也不是完全放任不管。我倾向于走中间道路:只要是大家普遍遵守的规范和常见的编码习惯,我都可以接受。

  • 以下是我可能会特别关心的一些事项:

    • 如果您编写代码,请不要使用制表符进行缩进,使用4个空格。

    • 如果您编写代码,请始终提供清晰简洁的注释,解释代码的作用。这对于功能不太明显的代码尤为重要。

    • 如果您添加了一个重要的功能(即,需要解释其用法的功能不仅仅是几句话),请为该功能创建一个“功能教程”。有关功能教程的示例,请参见示例文件夹中的文件

    • 如果您添加了一个重要的功能,请在**tests文件夹**中创建一个回归测试文件,类似于那里的其他回归测试文件。通常,最简单的方法是从该功能的“功能教程”中选取一些示例(参见上一点)。

    • 如果您要修改一个已有的代码文件,请尽量模仿该文件中已有的代码风格。