当前位置: 欣欣网 > 码农

10.2k star! 国内最优秀的基于JAVA的AI开源量化交易平台

2024-06-04码农

一、项目介绍

本项目是一款 面向程序化交易员的专业交易软件 它的设计初衷是为了解决商业付费软件扩展性不强、以及对入门级投资者而言费用门槛过高的问题。 Northstar 的设计初衷就是面向实盘交易的。而且 Northstar 是高度可扩展的一站式设计,一个程序便可以对接不同的交易所API,目前对接了 国内期货CTP接口 等交易所,未来可以对接更多的交易所接口。 软件本身已经提供一些基础的策略绩效统计功能,能直观地看到交易策略的历史表现情况。它集成了Tensorflow,具备了 集成人工智能模型的能力 ,能使交易策略的变得更加智能。

二、架构设计

业务场景分析

# 架构方案说明

方案说明
蓝色虚线框为 Northstar 的主体程序部分。可以按数据流的流向大体分为 左右 上下 两个方向

左右 方向上的数据流代表着外部网关的数据流,
从左往右看,是网关流入的数据,包括行情数据、订单响应数据、成交数据、账户与持仓数据,经过平台的统一处理与事件分发,最终传到策略层;
从右住左看,是策略层的操作指令数据,包括委托请求、撤单请求;

上下 方向上的数据流代表着与监控台交互的数据流,
从上往下看,是监控台发来的各种请求数据,包括网关、模组等配置信息的增删改查请求;
从下往上看,则是对应请求的响应。

#

源码目录结构

# 子项目说明

如图所示,northstar由多个子项目构成,其中:

  • northstar-api :是接口定义,凡是对外暴露的接口都会存放在这里。

  • northstar-external-archetype :是模板项目的元配置,用于生成模板项目;

  • northstar-gateway-common :是网关层的通用接口、抽象类定义;

  • northstar-gateway-xxx :是具体的网关适配,例如 northstar-gateway-ctp 代表CTP的网关适配。部分核心模块也会以网关的形式进行统一抽象,例如回放网关与模拟网关

  • northstar-main :是项目的核心代码。

  • northstar-monitor :是前端监控台应用代码;

  • northstar-strategy-example :是示例策略代码;

  • # 核心模块说明

    核心模块可以在架构图上找对一一对应关系:

  • account 对应账户层

  • module 对应模组层

  • event 对应事件引擎

  • data 对应数据层

  • indicator 对应指标框架

  • web 对应web容器

  • # 核心接口说明

    所有外部依赖的API都在核心接口中:

  • common 代表通用接口

  • gateway 代表网关接口

  • strategy 代表策略接口

  • data 代表数据接口

  • indicator 代表指标框架(为了简化复杂度,指标的具体算法也放置在此)

  • 三、产品功能介绍与页面

    用户UI界面是量化交易软件的监控台。由于程序化策略是自动化运行的,监控台只是提供一个可以监控程序与策略运行状态的可视化界面。

    监控台是否打开,并不影响程序化策略的运行。

    #

    登录页

  • LOGO后面的小字体是程序的版本号

  • 默认的用户名/密码: admin / 123456

  • # 行情管理

    行情管理界面是用于管理行情网关,目前可用的网关类型有以下几种:
    CTP : 是国内期货CTP网关,对接的是实盘数据,主要用于实际交易;
    SIM : 是本地随机行情网关,随机生成模拟数据,主要用于程序试运行;
    PLAYBACK : 是历史行情回放网关,对接的是实盘的历史行情数据,主要用于策略回测;
    TIGER : 是老虎证券行情网关,主要用于接收外盘股票行情;

    1. 网关类型 ,表示当前网关的类型。其中 PLAYBACK 行情网关可以有多个,其他行情网关只能有一个;

    2. 连接状态 ,表示当前网关的连线状态;

    3. 行情反馈 ,表示当前网关是否有接收到新行情数据。以 CTP 为例,停盘时段行情反馈为 - ;开盘时段行情反馈为 活跃

    4. 操作区 ,用于网关的增删改查、连线与断开。

    # 账户管理

    账户管理界面是用于管理交易账户,目前可用的账户类型有以下几种:
    CTP : 是国内期货CTP账户,对接的是实盘账户,主要用于实际交易;
    SIM : 是本地实现的模拟账户,对交易操作进行模拟撮合,主要用于验证交易策略与验证程序;
    TIGER : 是老虎证券交易网关,主要用于外盘股票交易;

    1. 账户类型 ,表示当前账户的类型。每种类型的账户都可以有多个;

    2. 连接状态 ,表示当前账户的连线状态;

    3. 关联网关 ,表示当前账户要绑定哪个行情网关的数据与合约信息,例如对于同一个模拟账户而言,当绑定一个CTP行情网关时,它进行模拟交易的数据源就是CTP的行情数据;当绑定一个PLAYBACK行情网关时,它进行模拟交易的数据源就是PLAYBACK网关所回放的行情数据;

    4. 操作区 ,用于账户的增删改查、连线与断开、以及模拟账户的出入金操作。

    # 模组管理

    模组管理界面是用于管理程序化交易模组。

    所谓模组,就是一个程序化策略运行单元。它定义了采用哪个 程序化策略 在哪个 交易账户 上交易哪个 合约

    1. 模组类型 ,表示当前模组的类型。目前可选的类型有两种: 投机 套利

    2. 模组用途 ,表示当前模组的用途,方便用户区分模组的应用阶段。目前可选的类型有三种:

  • 回测 ,仅能用于绑定了 PLAYBACK 行情网关、 SIM 账户网关的模组

  • 模拟盘 ,仅能用于绑定了 SIM 账户网关的模组

  • 实盘 ,仅能用于绑定了实盘账户与实盘行情的模组

  • 模组周期 ,表示当前模组所收到的Bar数据是基于多少分钟计算所得;

  • 交易策略 ,表示当前模组所使用的是哪一个自定义的程序化交易策略;

  • 平仓优化 ,表示当前模组所使用的平仓优化策略是哪个。目前可选的有三种:

  • 先开先平 ,策略平仓时会自动选择按时间顺序平仓;

  • 优先平今 ,策略平仓时会自动优先平仓当天开的仓位。通常适用于有平今优惠的品种;

  • 平昨锁今 ,策略平仓时会自动优先平仓非当天开的他们,对于当天开的仓位,采用锁仓对冲。通常适用于平今手续费特别贵的品种;

  • 绑定账户 ,表示当前模组所使用的交易账户是哪个,绑定账户可以有多个;

  • 绑定合约 ,表示当前模组所绑定的合约是哪个或者哪几个;

  • 当前状态 ,表示当前模组是否处于启用状态。

  • 操作区 ,用于对模组进行增删改查、启用与停用、以及监控模组的运行状态。

  • # 手工期货交易

    手工期货交易界面是用于对行情数据、模拟账户、交易接口进行手工验证的界面,同时也可以作为人工应急干预的手段。

    1. 交易账户 ,表示当前要交易的是哪个账户;

    2. 交易合约 ,表示当前要交易的是哪个合约;

    3. 合约数据延时 ,表示当前K线数据与本地时间之间的延时;

    4. 合约行情数据 ,用于显示交易合约的历史行情数据。
      特别说明:本程序的K线时间戳是取收盘时间值,坊间软件有部分是取开盘时间值,因此在对比行情数据时要注意此差异。

    # 日志跟踪

    日志跟踪界面是为了方便用户查看服务日志而设,它实际上是读取服务器的日志文件内容。日志跟踪界面设定了两种模式:

  • 系统日志模式 :系统日志指除策略模组外的系统日志;在Tabs标签页直接点击,则进入该模式。

  • 模组日志模式 :指以模组名为标识的日志文件;在模组管理页的模组中点击【日志跟踪】,则进入该模式。

  • # 邮件通知设置

    在任意页面点击右上角的【邮件通知设置】,可以设置相关的事件订阅,并以邮件的方式发送通知。以便于在不打开监控台的情况下收到事件推送。

    # 退出登录

    在任意页面点击右上角的【退出登录】按钮,可以退出当前登录。

    源代码下载地址:

    https://gitee.com/dromara/northstar.git

    看到最后,如果这个项目对你有用,一定要给我点个「 在看和赞 」。