• Stars
    star
    186
  • Rank 207,316 (Top 5 %)
  • Language
    Scala
  • Created almost 8 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SQuant是使用scala语言编写的量化开发工具箱,提供开箱即用的A股股票数据和外汇数据(docker镜像),以及高效的回测框架与交易模块。方便Java/Scala爱好者进行量化投资研究。 QQ群:281599099,微信公众号:Python量化交易实战。对,我已经转python了。。。

TODO

  1. 计算和展示portfolio
  2. 接入外汇数据
  3. 验证在外汇上做回测
  4. 更新wiki,介绍数据更新及使用方法

功能介绍

squant主要分成数据服务、回测引擎、交易模块三部分,下面就各个部分实现的主要功能做简要介绍:

数据服务

数据模块包括数据的采集、清洗,全量和增量更新,以及提供数据访问接口。数据分类包括股票和外汇数据,具体数据类别如下:

股票数据:

  • 股票基本信息数据
  • 股票历史逐笔数据
  • 股票和指数k线数据(5分钟、15分钟、30分钟、60分钟、日线)
  • 股票和板块资金流数据
  • 股票分类数据(行业、概念、地区)
  • 财务报表数据
  • 龙虎榜数据(开发中)

外汇数据:

  • EUR/USD
  • GBP/USD
  • USD/JPA
  • USD/CHF
  • AUD/USD
  • USD/CAD
  • NZD/USD
  • EUR/GBP

注意:数据更新支持全量更新好增量更新,具体操作方式请参考 快速上手

回测引擎

通过继承策略类 com.squant.cheetah.strategy.Strategy 并实现 handle() 函数来开发策略

abstract class Strategy(context: Context, broker: Broker) extends LazyLogging with Broker {
  def init()

  def handle()

常用策略示例请参考examples目录

可视化的图表分析工具

TODO

丰富的交易接口支持

快速上手

定时下载股票数据到指定目录

  1. 创建数据保存的目录

sudo mkdir /data

  1. 拉取squant的docker镜像

sudo docker pull registry.cn-hangzhou.aliyuncs.com/eryk/squant:1.1

  1. 启动squant镜像,任务会定时下载各类股票数据

sudo docker run --name squant -v /data:/data -d registry.cn-hangzhou.aliyuncs.com/eryk/squant:1.1

注意:数据更新任务配置文件点这里

  1. 手动执行下载任务
sudo docker exec -t -i **CONTAINER_ID** /bin/bash
cd /home/squant/
java -cp squant-assembly-1.1.jar:conf com.squant.cheetah.Main

squant 1.x
Usage: squant [source|test|run] [options]

  -h, --help               display this help and exit
Command: source [options]
init or download data source
  -t, --type <value>       set datasource to be downloaded,
							support: 
								all: all kind of datasource,
								basic: stock list with basic info,
								category: stock category data,
								daily: stock day bar,
								finance: Financial Statements,
								minute: stock minute bar,include 5/15/30/60 minutes,
								moneyflow: stock money flow data,
								tick: stock tick data
  --init <value>           if true,init data from source, default:false
  --start <value>          format:yyyyMMdd, set download start time
  --stop <value>           format:yyyyMMdd, set download stop time
  --clear <value>          if true,clean data dir before download, default:true
Command: test

Command: run

例如:

  1. 下载股票基本信息数据

java -cp squant-assembly-1.1.jar:conf com.squant.cheetah.Main source -t basic --init true

  1. 下载日线级别股票数据可以执行如下命令

java -cp squant-assembly-1.1.jar:conf com.squant.cheetah.Main source -t daily -init true