计算区间最大值 volume max of three days ago, yesterday and two days later stock[“volume_-3,2,-1_max”] volume min between 3 days ago and tomorrow stock[“volume_-31_min”] 实际使用的时候使用 -22 可计算出5天的最大,最小值。
http://wiki.mbalib.com/wiki/DMA DMA指标(Different of Moving Average)又叫平行线差指标,是目前股市分析技术指标中的一种中短期指标,它常用于大盘指数和个股的研判。 DMA, difference of 10 and 50 moving average stock[‘dma’]
pythonstock V3.0 项目简介,2025.02.28更新
特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG。
github/gitee是项目地址
github地址: https://github.com/pythonstock/stock
gitee地址: https://gitee.com/pythonstock/stock
视频地址: https://space.bilibili.com/52280367/lists/1923758?type=season
相关博客资料: https://blog.csdn.net/freewebsys/category_9285317.html
数据分析清洗使用pandas,numpy。 http://pandas.pydata.org/
数据存储到磁盘上,使用Mysql数据库。存储股票数据。 https://pypi.python.org/pypi/mysqlclient
web框架使用tornado http://www.tornadoweb.org/en/stable/
tornado web系统 http://docs.pythontab.com/tornado/introduction-to-tornado/
版本3.0 说明
然后根据3个指标进行股票数据计算:
每日股票指标数据计算17个指标如下(数据表 guess_indicators_daily):
1_min”] 实际使用的时候使用 -22 可计算出5天的最大,最小值。项目部署放到docker-compose
进入镜像:
说明,启动容器后,会调用。run_init.sh 进行数据初始化,同时第一次执行后台执行当日数据。 以后每日18点(只有18点左右才有今日的数据)进行股票数据抓取并计算。
本地访问端口
架构设计
全系使用python实现。因为都是python的类库,互相之间调用方便。 从数据抓取,数据处理,到数据展示数据运算都是python实现。
最终的数据都到前端展示出来。主要分为4个文件夹。
应用部署
需要mysql数据库启动。项目放到/data/stock 目录。
使用 :
http://docs.sqlalchemy.org/en/latest/core/reflection.html
更新日志
18 修改bug,前端使用编译nginx方式部署,修改数据库字段,解决定时任务BUG 2025-02-28
存储数据格式为 double 方便进行排序,decimal 类型转换出问题。 拆分生产部署,切换成nginx,前端进行编译构建。提高前端加载速度。 nginx的html影射到./data/html目录,前端编译完成需要拷贝文件到html,等待完成即可。 解决定时任务问题,需要设置权限,才可以。
17 v3.0发布,前端分离,项目和部署整合到一起 2025-01-10
修改接口展示空。修改数据库脚本。 解决预测数据买和卖的脚本。 进行缩减、计算相关添加操作。 修改启动脚本、接口路径及配置。 设置分页数据。增加联合主键判断。 解决分页问题并执行查询语句。 增加日期查询方法。 进行数据搜索相关添加操作。 添加配置。修改路由地址。 解决端口映射问题及修改端口测试。 拆分前后端,用 dockerfile 构建镜像并解决前端编译问题。 修改开发者模式,解决本地开发启动问题。 增加地址。增加前端开发者模式启动。 增加每天数据跑批。进行猜工作相关添加操作。 增加日志跑数据。升级增加展示。 架构升级并使用 vue 的 ui 开发。 增加 install docker 说明。 添加 vue api。
16 更新发布 2.1 版本进行镜像升级 2023-06-03
使用新方式打包镜像,镜像大小从本地的 852MB 缩小到 597MB。 为了支持更多 AKShare 特性,请尽快升级 Python 到 3.8 以上版本
1,numpy从【 1.21.5 】升级到了【 1.21.6 】版本 2,akshare从【 1.3.50 】升级到了【 1.10.5 】版本 3,bokeh从【 2.4.2 】升级到了【 2.4.3 】版本
根据 https://www.akshare.xyz/changelog.html 修改方法:
1.7.99 替换 stock_sina_lhb_ggtj 成:stock_lhb_ggtj_sina
15 发布一个 2.0 的版本 - 2021-10-11
构建基础版本 pythonstock/pythonstock:base-2021-09 在这个镜像的基础上使用 akshare 1.1.9 折腾几个月,终于把2.0 弄好了,为啥弄2.0 因为之前发现 tushare的数据不能抓取了。需要注册成 pro 版本,但是pro 还有积分限制。 诸多不便吧,于是换成了 akshare 库了,大改了,需要找到相关的新库。然后在些代码。 删除掉了 ta-lib 安装了之后从来没有用到,jupyter 也是没有用。占空间影响下载心情。将镜像进一步减小。
14 bokeh 升级到 2.4.0 版本
目录 /usr/local/lib/python3.7/site-packages 使用脚本进行升级。
13 升级ak到v1.0.80 做好每日东方财经数据
https://www.akshare.xyz/zh_CN/latest/data/stock/stock.html#id1 限量: 单次返回所有 A 股上市公司的实时行情数据
600开头的股票是上证A股,属于大盘股,其中6006开头的股票是最早上市的股票, 6016开头的股票为大盘蓝筹股;900开头的股票是上证B股; 000开头的股票是深证A股,001、002开头的股票也都属于深证A股, 其中002开头的股票是深证A股中小企业股票;200开头的股票是深证B股; 300开头的股票是创业板股票;400开头的股票是三板市场股票。
过滤包括:600,6006,601,000,001,002,且不包括ST的股票数据。
增加数据库utf8 参数 –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
12 升级基础镜像到3.7 python,保障 akshare 0.6.10 以上版本支持
发现 akshare 要求升级python 3.7 以上版本才可以,需要升级基础镜像。 然后 akshare 就可以升级到 0.9.65 的最新版本了。 新版本就可以按照日期进行查询,解决 TypeError: stock_zh_a_daily() got an unexpected keyword argument ‘start_date’ 这个问题了。
11 使用 akshare 做相关股票数据抓取
中国的股市开盘时间为:每周一至周五的上午9:30——11:30, 下午13:00——15:00。中国股市收盘时间为:每周一至周五的下午3点。
实时行情数据 接口: stock_zh_a_spot 目标地址: http://vip.stock.finance.sina.com.cn/mkt/#hs_a 描述: A 股数据是从新浪财经获取的数据, 重复运行本函数会被新浪暂时封 IP, 建议增加时间间隔 限量: 单次返回所有 A 股上市公司的实时行情数据
历史行情数据 日频率 接口: stock_zh_a_daily 目标地址: https://finance.sina.com.cn/realstock/company/sh600006/nc.shtml(示例) 描述: A 股数据是从新浪财经获取的数据, 历史数据按日频率更新; 注意其中的 sh689009 为 CDR, 请 通过 stock_zh_a_cdr_daily 接口获取 限量: 单次返回指定 A 股上市公司指定日期间的历史行情日频率数据
10 增加东方财经弹窗窗口、增加指标计算弹窗窗口
发现了一个东方财富的页面,是给pc端用的。 可以做个弹出框放到系统中。不进行调整了,长宽高可以做的小点。使用iframe引入界面。否则有跨域和样式问题。
修改指标页面,改成窗口弹窗,做页面适配,方便查看。
9,增加日历
https://www.bootcss.com/p/bootstrap-datetimepicker/ 不是使用jQuery的时间。
8,发现MariaDb 版本不兼容问题,最后切换成mysql,使用 mysql:5.7 镜像
相关数据执行只支持到10.5.4,版本可以使用,但是10.5.8 就有问题了。 限制死了版本。看来软件也不能瞎升级,都用最新的有问题。可以解决数据问题。 使用 mysql:5.7 镜像,更通用些,不折腾mariaDb了。
7,解决 Bokeh JS兼容问题。
6,升级 bokeh 到 2.1.1 版本
5,解决日志打印问题
4,解决跑数据问题
之前升级过代码,造成 db.cursor() 问题。
3,增加多字段排序
2,使用pandas处理重复数据
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html
1,web使用datatable显示报表
通用数据配置,在 libs/stock_web_dic.py 配置数据之后,可以实现动态加载菜单,根据数据库表的行列显示数据。
不用一个表一个表进行开发,通用数据展示。