Skip to content

Commit

Permalink
修改 发布版本。
Browse files Browse the repository at this point in the history
  • Loading branch information
yhy committed Oct 11, 2021
1 parent e85fc87 commit 745253b
Showing 1 changed file with 103 additions and 107 deletions.
210 changes: 103 additions & 107 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ sh /data/stock/jobs/cron.daily/run_daily
> http://localhost:9999 股票系统

### 1,股票系统设计
### 股票系统设计

相关博客资料:
https://blog.csdn.net/freewebsys/category_9285317.html
Expand All @@ -159,7 +159,7 @@ tornado web系统
http://docs.pythontab.com/tornado/introduction-to-tornado/


### 2,架构设计
### 架构设计
全系使用python实现。因为都是python的类库,互相之间调用方便。
从数据抓取,数据处理,到数据展示数据运算都是python实现。

Expand All @@ -174,7 +174,7 @@ http://docs.pythontab.com/tornado/introduction-to-tornado/
> supervisor 进程管理工具。

### 3,应用部署
### 应用部署

需要mysql数据库启动。项目放到/data/stock 目录。
```
Expand All @@ -185,93 +185,72 @@ CREATE DATABASE IF NOT EXISTS `stock_data` CHARACTER SET utf8 COLLATE utf8_gener

http://docs.sqlalchemy.org/en/latest/core/reflection.html

### 3,web使用datatable显示报表
## 更新日志

通用数据配置,在 libs/stock_web_dic.py 配置数据之后,可以实现动态加载菜单,根据数据库表的行列显示数据。

不用一个表一个表进行开发,通用数据展示。

### 4,使用pandas处理重复数据

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html

```python
data = get_data(year, quarter)
# 处理重复数据,保存最新一条数据。
data.drop_duplicates(subset="code", keep="last")
```

### 5,增加多字段排序

> 1,点击是单个字段进行排序。
>
> 2,按照【shift】,点击多个,即可完成多字段排序。
>
> 3,服务端分页排序。
>
> 4,按照多个字段进行筛选查询。
### 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 也是没有用。占空间影响下载心情。将镜像进一步减小。

### 6,开发环境执行

```
sh startStock.sh 1
```

### 9,解决跑数据问题
### 14 bokeh 升级到 2.4.0 版本

```
# 通过数据库链接 engine。
def conn():
try:
db = MySQLdb.connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, charset="utf8")
# db.autocommit = True
except Exception as e:
print("conn error :", e)
db.autocommit(on=True)
return db.cursor()
```

之前升级过代码,造成 db.cursor() 问题。

### 8,解决日志打印问题
目录
/usr/local/lib/python3.7/site-packages
使用脚本进行升级。

```
### 13 升级ak到v1.0.80 做好每日东方财经数据

配置 main.py
tornado.options.parse_command_line()
https://www.akshare.xyz/zh_CN/latest/data/stock/stock.html#id1
限量: 单次返回所有 A 股上市公司的实时行情数据

然后启动配置参数:
/usr/local/bin/python3 /data/stock/web/main.py -log_file_prefix=/data/logs/web.log
600开头的股票是上证A股,属于大盘股,其中6006开头的股票是最早上市的股票,
6016开头的股票为大盘蓝筹股;900开头的股票是上证B股;
000开头的股票是深证A股,001、002开头的股票也都属于深证A股,
其中002开头的股票是深证A股中小企业股票;200开头的股票是深证B股;
300开头的股票是创业板股票;400开头的股票是三板市场股票。

```
过滤包括:600,6006,601,000,001,002,且不包括ST的股票数据。

### 10,升级 bokeh 到 2.1.1 版本
增加数据库utf8 参数 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

```

https://pypi.org/project/bokeh/#files
### 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,解决 Bokeh JS兼容问题。

> 升级 bokeh 到 2.1.1 版本
>
> https://pypi.org/project/bokeh/#files
>
> 升级JS,因为 lib 包升级导致问题。
### 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 股上市公司的实时行情数据

### 12,发现MariaDb 版本不兼容问题
历史行情数据
日频率
接口: stock_zh_a_daily
目标地址: https://finance.sina.com.cn/realstock/company/sh600006/nc.shtml(示例)
描述: A 股数据是从新浪财经获取的数据, 历史数据按日频率更新; 注意其中的 sh689009 为 CDR, 请 通过 stock_zh_a_cdr_daily 接口获取
限量: 单次返回指定 A 股上市公司指定日期间的历史行情日频率数据

相关数据执行只支持到10.5.4,版本可以使用,但是10.5.8 就有问题了。
限制死了版本。看来软件也不能瞎升级,都用最新的有问题。可以解决数据问题。
### 10 增加东方财经弹窗窗口、增加指标计算弹窗窗口

发现了一个东方财富的页面,是给pc端用的。
可以做个弹出框放到系统中。不进行调整了,长宽高可以做的小点。使用iframe引入界面。否则有跨域和样式问题。

修改指标页面,改成窗口弹窗,做页面适配,方便查看。

### 13,增加日历
### 9,增加日历

```
古老的jquery 代码:
Expand All @@ -290,65 +269,82 @@ https://pypi.org/project/bokeh/#files
https://www.bootcss.com/p/bootstrap-datetimepicker/
不是使用jQuery的时间。

### 14 增加东方财经弹窗窗口、增加指标计算弹窗窗口
### 8,发现MariaDb 版本不兼容问题,最后切换成mysql

发现了一个东方财富的页面,是给pc端用的
可以做个弹出框放到系统中。不进行调整了,长宽高可以做的小点。使用iframe引入界面。否则有跨域和样式问题
相关数据执行只支持到10.5.4,版本可以使用,但是10.5.8 就有问题了
限制死了版本。看来软件也不能瞎升级,都用最新的有问题。可以解决数据问题

修改指标页面,改成窗口弹窗,做页面适配,方便查看。

### 7,解决 Bokeh JS兼容问题。

### 15 使用 akshare 做相关股票数据抓取
> 升级 bokeh 到 2.1.1 版本
>
> https://pypi.org/project/bokeh/#files
>
> 升级JS,因为 lib 包升级导致问题。

中国的股市开盘时间为:每周一至周五的上午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 股上市公司指定日期间的历史行情日频率数据
### 6,升级 bokeh 到 2.1.1 版本

### 16 升级基础镜像到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' 这个问题了。
https://pypi.org/project/bokeh/#files
```

### 17 升级ak到v1.0.80 做好每日东方财经数据
### 5,解决日志打印问题

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开头的股票是三板市场股票。
配置 main.py
tornado.options.parse_command_line()
过滤包括:600,6006,601,000,001,002,且不包括ST的股票数据。
然后启动配置参数:
/usr/local/bin/python3 /data/stock/web/main.py -log_file_prefix=/data/logs/web.log
增加数据库utf8 参数 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
```

### 4,解决跑数据问题

### bokeh 升级到 2.4.0 版本
```
# 通过数据库链接 engine。
def conn():
try:
db = MySQLdb.connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, charset="utf8")
# db.autocommit = True
except Exception as e:
print("conn error :", e)
db.autocommit(on=True)
return db.cursor()
```

目录
/usr/local/lib/python3.7/site-packages
使用脚本进行升级。
之前升级过代码,造成 db.cursor() 问题。

### 发布一个2.0 的版本
### 3,增加多字段排序

构建基础版本 pythonstock/pythonstock:base-2021-09 在这个镜像的基础上使用 akshare 1.1.9
> 1,点击是单个字段进行排序。
>
> 2,按照【shift】,点击多个,即可完成多字段排序。
>
> 3,服务端分页排序。
>
> 4,按照多个字段进行筛选查询。
### 2,使用pandas处理重复数据

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html

```python
data = get_data(year, quarter)
# 处理重复数据,保存最新一条数据。
data.drop_duplicates(subset="code", keep="last")
```

### 1,web使用datatable显示报表

通用数据配置,在 libs/stock_web_dic.py 配置数据之后,可以实现动态加载菜单,根据数据库表的行列显示数据。

不用一个表一个表进行开发,通用数据展示。


0 comments on commit 745253b

Please sign in to comment.