用go语言开发简易量化框架(二)--框架概要设计
- 一、模块划分
- 二、模块通信
- 三、技术选型
- 四、注意事项
一、模块划分
本系统概要设计如下,分为四大模块:
模块 | 说明 |
---|---|
Web Server | 接受用户输入,展示系统状态 |
Market Center | 行情中心,根据web server发来的命令,收集交易所行情 |
Strategy Manager | 策略管理器,管理策略的运行 |
Analyzer | 统计分析模块,主要是策略统计,报表等 |
四大模块分别为独立的进程,必要时可做横向扩容,下图为模块概要设计图:
二、模块通信
模块间通信,采用GRPC,需要通信的模块如下
客户模块 | 服务模块 | 说明 |
---|---|---|
Web Server | Market Center | 下发行情收集命令 |
Web Server | Strategy Manager | 启动/停止策略,查询策略执行状况 |
Strategy Runner | Strategy Manager | 上报策略执行状态给策略管理器 |
Web Server | Analyzer | 按要求统计分析策略执行结果 |
三、技术选型
子模块 | 说明 |
---|---|
web前端 | web前端使用vue-admin-template后台模板 |
web服务器 | web服务器框架使用gin |
数据库orm | 使用gorm,支持mysql和sqlite,可选择切换 |
kv缓存 | 封装基本kv缓存功能,支持redis和boltdb,可切换 |
配置文件 | 配置文件使用viper,支持toml,yaml,json,ini |
日志文件 | 使用uber的zap |
模块通信 | 内部通信使用grpc |
指标库 | 支持talib库,所有指标 |
js解析器 | 使用otto |
绘图库 | go目前没发现比较好用的绘图库,暂定gosl吧 |
四、注意事项
1 数据库支持sqlite和boltdb,是想搞一个单机版,不需要依赖其他软件
2 模块暂时不考虑微服务,定位个人量化系统,先不要复杂化了
3 边学边练,整个系统不求一步到位,先搞一个出来,后面再优化重构