# 二次开发最佳实践

# 背景介绍

二次开发对于量化交易软件而言是刚需。但正确地进行二次开发,是确保项目可用性、可扩展性、可维护性的重要一环。如果用户不当地或者不遵循主项目的规范与建议,随心所欲地进行二次开发,相当于脱离了大部队自己另起炉灶。一个人也许可以走得更快,但一群人能走得更远。

本项目也是在不断地迭代优化,从 4.0.0 版本为里程碑,项目会进入一个相对平稳的发展期。这里的“平稳”是指总体架构不会出现太大变化、策略层的编程接口相对稳定。但与此同时,项目还是会以大概每两周的节奏进行迭代,迭代的方向主要是补充常用指标、补充策略示例、修复BUG;每个季度大概会有一两次功能上的升级。

因此,作者提出以下一些实践建议以供大家参考:

# 建议做

  • 建议采用 northstar-external 外置项目的方式去开发自己的网关接口、个性化指标、及交易策略,并且用一个非公开的代码仓库去托管。具体操作可参考编写程序化策略——项目架构
  • 项目开发过程当中的调试问题,建议参考编写程序化策略——开发与调试
  • 建议直接从主仓库拉代码,并且每次开发前先从主仓库 pull 最新代码。这样可以确保自己不会手残去改主仓库的代码。
  • 如果有个性化需求,又不知道如何在扩展项目进行扩展,建议在社群提问讨论。

# 不建议做

  • 可以 fork 代码,但不建议修改主项目代码并提交到自己的仓库。一旦这么做了,就相当于制造了代码冲突,不利于日后与主项目同步。这也就相当于脱离了大部队自己另搞了一套。
  • 不建议自己另搞一套。因为如果每个人都自己另搞一套,社群的力量就分散了,无法实现时间效益最大化。有些坑作者已经踩过的,各位就无须自己又踩一次。Northstar 项目从零到现在4.0版本,也陆续花费了一两年的时间才摸索出目前这套相对比较合理的架构与实现方案。所以我们应该把时间花在策略研究上,把基础设施的优化与完善工作交给社群。