一、项目介绍
本项目是一款 面向程序化交易员的专业交易软件 。 它的设计初衷是为了解决商业付费软件扩展性不强、以及对入门级投资者而言费用门槛过高的问题。 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
: 是老虎证券行情网关,主要用于接收外盘股票行情;
网关类型
,表示当前网关的类型。其中PLAYBACK
行情网关可以有多个,其他行情网关只能有一个;连接状态
,表示当前网关的连线状态;行情反馈
,表示当前网关是否有接收到新行情数据。以CTP
为例,停盘时段行情反馈为-
;开盘时段行情反馈为活跃
;操作区
,用于网关的增删改查、连线与断开。
# 账户管理
账户管理界面是用于管理交易账户,目前可用的账户类型有以下几种:
CTP
: 是国内期货CTP账户,对接的是实盘账户,主要用于实际交易;
SIM
: 是本地实现的模拟账户,对交易操作进行模拟撮合,主要用于验证交易策略与验证程序;
TIGER
: 是老虎证券交易网关,主要用于外盘股票交易;
账户类型
,表示当前账户的类型。每种类型的账户都可以有多个;连接状态
,表示当前账户的连线状态;关联网关
,表示当前账户要绑定哪个行情网关的数据与合约信息,例如对于同一个模拟账户而言,当绑定一个CTP行情网关时,它进行模拟交易的数据源就是CTP的行情数据;当绑定一个PLAYBACK行情网关时,它进行模拟交易的数据源就是PLAYBACK网关所回放的行情数据;操作区
,用于账户的增删改查、连线与断开、以及模拟账户的出入金操作。
# 模组管理
模组管理界面是用于管理程序化交易模组。
所谓模组,就是一个程序化策略运行单元。它定义了采用哪个
程序化策略
在哪个
交易账户
上交易哪个
合约
。
模组类型
,表示当前模组的类型。目前可选的类型有两种:投机
,套利
;模组用途
,表示当前模组的用途,方便用户区分模组的应用阶段。目前可选的类型有三种:
回测
,仅能用于绑定了
PLAYBACK
行情网关、
SIM
账户网关的模组
模拟盘
,仅能用于绑定了
SIM
账户网关的模组
实盘
,仅能用于绑定了实盘账户与实盘行情的模组
模组周期
,表示当前模组所收到的Bar数据是基于多少分钟计算所得;
交易策略
,表示当前模组所使用的是哪一个自定义的程序化交易策略;
平仓优化
,表示当前模组所使用的平仓优化策略是哪个。目前可选的有三种:
先开先平
,策略平仓时会自动选择按时间顺序平仓;
优先平今
,策略平仓时会自动优先平仓当天开的仓位。通常适用于有平今优惠的品种;
平昨锁今
,策略平仓时会自动优先平仓非当天开的他们,对于当天开的仓位,采用锁仓对冲。通常适用于平今手续费特别贵的品种;
绑定账户
,表示当前模组所使用的交易账户是哪个,绑定账户可以有多个;
绑定合约
,表示当前模组所绑定的合约是哪个或者哪几个;
当前状态
,表示当前模组是否处于启用状态。
操作区
,用于对模组进行增删改查、启用与停用、以及监控模组的运行状态。
# 手工期货交易
手工期货交易界面是用于对行情数据、模拟账户、交易接口进行手工验证的界面,同时也可以作为人工应急干预的手段。
交易账户
,表示当前要交易的是哪个账户;交易合约
,表示当前要交易的是哪个合约;合约数据延时
,表示当前K线数据与本地时间之间的延时;合约行情数据
,用于显示交易合约的历史行情数据。
特别说明:本程序的K线时间戳是取收盘时间值,坊间软件有部分是取开盘时间值,因此在对比行情数据时要注意此差异。
# 日志跟踪
日志跟踪界面是为了方便用户查看服务日志而设,它实际上是读取服务器的日志文件内容。日志跟踪界面设定了两种模式:
系统日志模式
:系统日志指除策略模组外的系统日志;在Tabs标签页直接点击,则进入该模式。
模组日志模式
:指以模组名为标识的日志文件;在模组管理页的模组中点击【日志跟踪】,则进入该模式。
# 邮件通知设置
在任意页面点击右上角的【邮件通知设置】,可以设置相关的事件订阅,并以邮件的方式发送通知。以便于在不打开监控台的情况下收到事件推送。
# 退出登录
在任意页面点击右上角的【退出登录】按钮,可以退出当前登录。
源代码下载地址:
https://gitee.com/dromara/northstar.git
看到最后,如果这个项目对你有用,一定要给我点个「 在看和赞 」。