量化投资系列之《可编程量化环境构建》
选取股票数据获取和存储
数据获取
对于个人量化数据的获取,我们一般选用免费的,开源数据源有 Tushare、akShare,国内最大量化平台聚宽数据(JQData)。为了快速获取,试用 JQData 数据源,但是试用请求条目数一下子就用完了,所以选取 akShare,这不是重点。
数据本地化
获取完数据后,为了回测数据来验证一些策略模型,需要将数据本地化,一般有 csv 文件格式,数据库两种模式。csv 文件格式虽然易于人读,但是对于大量数据,管理起来并不友好。数据库有关系型数据库,列如:MySql 。还有非关系数据库类型,NoSQL 类型。网络调查过,为了方便管理和查询速度,直接弃用 csv 文件格式和关系数据库类型,选用 NoSQL 非关系型的数据库。
NoSQL 非关系型的数据库中,网络调查后,得出的结论是,由于股票日行情数据基于时间时序,所以选用专业时序数据库,有商业的KDB,开源的 InfluxDB,Clikhouse。商业的不用想了,贵,最后选用战斗民族开源的 Clikhouse。
综上所述,股票数据获取选用 akShare ,数据本地化使用 Clikhouse [1]。
Clikhouse介绍: Clikhouse文档网址[1]
window 版本安装 Clikhouse
clickhouse 并不支持 window 平台的直接安装,所以需要虚拟化安装,安装方法有两种,注意这两种安装要求 window 10 以上的系统,如果不是,升级下系统吧。
- 安装 Docker 容器来安装 clickhouse。可以看这篇文章 window 版本安装教程网址[2],本人测试过,安装完后,要启动 docker ,再启动 clickhouse - server,不知咋的,CPU 占用率高,高达 30% ,并且链接不上数据库,所以不推荐。
- 安装 window 子系统 Ubuntu 来安装 clickhouse。非常推荐这种安装方式,兼容性很好,一次性就安装通过,并且链接数据库成功。安装参考教程
window 10 系统下 Ubuntu 安装 clickhouse 教程
下面介绍下 window 系统通过 ubuntu 安装 ckickhouse
window 功能开启
- 开启windows的开发者模式
打开“设置“—>”更新和安全“—>”开发者选项“选择”开发人员模式”
- 安装适用于 Linux 的 windows 子系统
打开“控制面板” -> “程序” -> “启用或关闭windows功能”,勾选适用于 Linux 的 windows 子系统,勾选 Hyper-V 功能,开启虚拟化
下载环境软件
- 安装 Ubuntu,打开微软应用商店,搜索 Ubuntu,点击获取并且自动安装。
稍等片刻,安装之后启动 Ubuntu,会有一个短暂的初始化过程,然后出入用户名和密码,如下图,就安装成功了。
- 设置管理员权限
使用 Linux 系统经常需要用管理员权限操作。所以这里先设置好,以免后面麻烦。
ubuntu 默认不允许使用 root 登录,因此初始 root 账户是不能使用的,需要在普通账户下利用 sudo 权限修改 root 密码。
Ubuntu 安装路径在:
C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\home
前期工作准备好,就可以进入Clickhouse的安装了。
安装Clickhouse
1、获取安装文件
下载三个安装程序包,官网地址[4]
clickhouse-common-static_20.9.2.20_amd64
clickhouse-server_20.9.2.20_all
clickhouse-client_20.9.2.20_all
2、执行安装文件
将下载好的三个文件复制到 Ubuntu 安装目录下,创建一个文件夹 clickhouse
cd 到三个安装文件的目录下,不然下面的安装命令找不到文件
依次执行下面安装命令,等待安装完毕
sudo dpkg -i clickhouse-common-static_20.9.2.20_amd64.deb
sudo dpkg -i clickhouse-server_20.9.2.20_all.deb
sudo dpkg -i clickhouse-client_20.9.2.20_all.deb
如图所示就已经安装成功了。要注意的是,安装clickhouse-server的时候,提示了输入密码。我这里面输入的sykent(很重要),如果不输入密码直接回车似乎是可以的。
回退到上层文件夹,在 etc 文件夹下看到了安装的 clickhouse
3、启动 Clickhouse 服务
操作到这里可以说已经成功一半了,这里可以启动Clickhouse服务了。但是,在启动服务的时候会报错,解决思路就是修改配置文件内容。这里我们先直接启动服务,看都会报什么错误。(重点)
可以运行如下命令在后台启动服务,可以在 /var/log/clickhouse-server/目录中查看日志。
如果服务没有启动,请检查配置文件 /etc/clickhouse-server/config.xml。
sudo service clickhouse-server start
4、启动/停止/重启服务
执行命令
sudo service clickhouse-server start #启动
sudo service clickhouse-server stop #停止
sudo service clickhouse-server restart #重启服务,其实就是先stop,然后再start
5、连接Clickhouse服务器
执行命令
clickhouse-client
注意:如果设置了密码,会有这样的提示
设置密码执行完整命令
clickhouse-client --port 9000 --host 127.0.0.1 --password sykent --multiline
6、用数据库工具连接 clickhouse
安装 Python 环境和 PyCharm,至于这两个软件怎么安装,就不介绍了,自行上网一搜,一大堆。
打开 PyCharm ,新建一个工程,点击右边 Database ,点击 + 号,选中数据库 Clikhouse
新建数据库,填写信息,用户名默认 default ,密码是安装时设置的密码,点击测试,可以看到链接成功,点击 ok。
7、创建股票日行情表
链接数据库后,可以看到新建的数据库,然后执行创建表命令
CREATE TABLE stock.stock_daily_price
(
`date` Date,
`code` String,
`open` Float32,
`high` Float32,
`low` Float32,
`close` Float32,
`volume` Float64,
`amount` Float64
-- `adj_factor` Int32,
-- `st_status` Int16,
-- `trade_status` Int16
) ENGINE = ReplacingMergeTree()
ORDER BY (javaHash(code), date)
点击执行,可以看到数据库 stock 创建了股票日行情表 stock_daily_price。
下篇预告
到此,我们具备了数据存储环境,下一步就可以获取日行情数据,存储到数据库。日行情数据获取并存储到数据库已经完成,欲知后事如何,且看下篇介绍。
下篇介绍获取沪深 A 股,20050101 - 20200820 的日行情数据并存储到 clickhouse 时间序列数据库中,一共 10652812 行数据,1100 万行左右,有了日行情数据,量化体系又进了一步。
引用链接
[1] Clikhouse文档:https://clickhouse.com/docs/zh/
[2] Clikhouse win 安装教程(docker 版):https://www.cnblogs.com/huang...
[3] Clikhouse win 安装教程(Ubuntu 版): https://blog.csdn.net/qq_3429...
[4] Clickhouse 安装文件网址: https://repo.yandex.ru/clickh...
[5] Clickhouse win 环境参考网址:https://blog.csdn.net/qq_3429...
写于 2022 年 08 月 21 日。
本文由mdnice多平台发布