面面观 | 【股票系统设计】(1)
1,股票系统设计
股票数据抓取框架使用TuShare。 http://tushare.org/
数据分析清洗使用pandas,numpy。 http://pandas.pydata.org/
数据存储到磁盘上,不使用数据库。存储PyTabe,hdf5格式。 http://www.pytables.org/
web框架使用tornado http://www.tornadoweb.org/en/stable/
机器学习,当然使用最流行TensorFlow啦。 https://www.tensorflow.org/
数据展示使用 echarts http://echarts.baidu.com/
2,架构设计
全系使用python实现。因为都是python的类库,互相之间调用方便。 从数据抓取,数据处理,到数据展示数据运算都是python实现。
最终的数据都到前端展示出来。主要分为4个文件夹。
jobs 抓取数据并存储实现类。
libs 通用工具类。
web 前端展示框架。
tf 机器学习文件夹,推测数据。
项目使用hdf5 数据格式进行存储。如果要是单机跑数据。需要将服务部署到一起。 要是分布式部署需要使用 nfs 或者存储到,分布式的文件系统上。 将服务拆分。分开跑数据。
hdf5数据格式本身就是压缩的。所以会节省磁盘空间。 然后在安装年月日的目录进行拆分。初期估计也不会太多,完全可以单机跑起来。 所以数据可以存储为:/data/stock/yyyy/yyyMM/yyyyMMdd.hdf5
或者可以使用mysql+分区表存储数据。也可以实现存储股票数据。 并且速度也挺快的。
新智云 www.enncloud.cn 了解更多关注微信公众号“极客脑司机”
3,docker环境构建
最简单的办法就是使用docker 搭建这个复杂的。 这里面一点点搭建起来比较麻烦,直接用TensorFlow现成的,然后在这个基础镜像上面进行添加即可。
这样速度最快。而且本身折腾TensorFlow的安装也会出现一些问题。 比较麻烦。我再alpine上面试着安装TensorFlow总会遇到一些问题。
目测现在就一个缺点有点遗憾,就是环境是ubuntu 16的而且镜像比较大。 有1.3G,但是这个不算啥。毕竟要是用其他语言进行开发。 说不定要花更多的时间呢。
有个超级好的地方是TensorFlow 的镜像里面已经包括pandas,tornado了。 里面还有一个Jupyter 一个超级好用的python 页面调试工具。
构建dockerfile:
FROM docker.io/tensorflow/tensorflow:latest-py3
RUN echo -e "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse \n\
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse \n\
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse \n\
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse \n\
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse \n\
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse \n\
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse \n\
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse \n\
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse \n\
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse " > /etc/apt/sources.list
RUN echo "[global]\n\
trusted-host=mirrors.aliyun.com\n\
index-url=http://mirrors.aliyun.com/pypi/simple" > /etc/pip.conf
#timezone
RUN apt-get update && apt-get install -y tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone && \
apt-get clean
#install other lib
RUN apt-get update && apt-get install -y python3-dev libmysqlclient-dev libhdf5-dev && \
pip3 install mysqlclient && \
pip3 install sqlalchemy && \
pip3 install requests && \
apt-get install -y libxml2-dev && pip3 install lxml bs4 && \
pip3 install tushare && \
apt-get clean && apt-get remove -y python3-dev libmysqlclient-dev && \
pip3 install unittest2 && \
pip3 install --upgrade tables
其中一定要将镜像修改成阿里云的镜像。 会大大的加快安装速度。
4,总结
使用python进行股票系统开发,还是非常的方便的。 现在cpu,内存都是白菜价格。快速开发出一个系统用什么语言真的无所谓。 python开发出来的系统运行的也很稳定。运行的速度也非常的快。 除了代码没有括号,我还是非常的喜欢的。