pythonstock V1 项目简介

特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG。

PythonStock V1 是基于Python的pandas,tushare,bokeh,tornado,stockstats,ta-lib等框架开发的全栈股票系统。

1)可以直接使用docker直接本地部署运行,整个项目在docker hub上压缩后200BM,本地占用500MB磁盘空间。

2)使用Docker解决了Python库安装问题,使用Mariadb(MySQL)存储数据。借助tushare抓取数据(老API,后续使用tushare pro开发)

3)使用corn做定时任务,每天进行数据抓取计算,每天18点开始进行数据计算,计算当日数据,使用300天数据进行计算,大约需要15分钟计算完毕。

4)股票数据接口防止被封,按天进行数据缓存,储存最近3天数据,每天定时清除,同时使用read_pickle to_pickle 的gzip压缩模式存储。

5)使用tornado开发web系统,支持股票数据,沪深300成份股,中证500成份股,龙虎榜数据,每日股票数据,每日大盘指数行情等

6)数据展示系统,是通用数据展示系统,配置字典模板之后,页面自动加载数据,并完成数据展示,后续自己开发的指标数据可以加入进去。

7)增加曲线数据分析,在查看股票中,可以直接跳转到东方财富页面查看相关信息,点击指标之后使用Bokeh将多达 17 个指标的数据绘图,进行图表展示。

bokeh 绘图指标数据:

然后根据3个指标进行股票数据计算:

KDJ:

1,超买区:K值在80以上,D值在70以上,J值大于90时为超买。一般情况下,股价有可能下跌。投资者应谨慎行事,局外人不应再追涨,局内人应适时卖出。

2,超卖区:K值在20以下,D值在30以下为超卖区。一般情况下,股价有可能上涨,反弹的可能性增大。局内人不应轻易抛出股票,局外人可寻机入场。

RSI:

1.当六日指标上升到达80时,表示股市已有超买现象,如果一旦继续上升,超过90以上时,则表示已到严重超买的警戒区,股价已形成头部,极可能在短期内反转回转。

2.当六日强弱指标下降至20时,表示股市有超卖现象,如果一旦继续下降至10以下时则表示已到严重超卖区域,股价极可能有止跌回升的机会。

CCI

1、当CCI>﹢100时,表明股价已经进入非常态区间——超买区间,股价的异动现象应多加关注。

2、当CCI<﹣100时,表明股价已经进入另一个非常态区间——超卖区间,投资者可以逢低吸纳股票。

购买条件结果表:guess_indicators_lite_buy_daily

购买条件结果表:guess_indicators_lite_sell_daily

每日股票指标数据计算17个指标如下(数据表 guess_indicators_daily):

计算指标

说明

1,交易量delta指标分析

The Volume Delta (Vol ∆)

2,计算n天差

可以计算,向前n天,和向后n天的差。

3,n天涨跌百分百计算

可以看到,-n天数据和今天数据的百分比。

4, CR指标

http://wiki.mbalib.com/wiki/CR%E6%8C%87%E6%A0%87 价格动量指标 CR跌穿a、b、c、d四条线,再由低点向上爬升160时,为短线获利的一个良机,应适当卖出股票。 CR跌至40以下时,是建仓良机。而CR高于300~400时,应注意适当减仓。

5,最大值,最小值

计算区间最大值 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天的最大,最小值。

6, KDJ指标

http://wiki.mbalib.com/wiki/%E9%9A%8F%E6%9C%BA%E6%8C%87%E6%A0%87 随机指标(KDJ)一般是根据统计学的原理,通过一个特定的周期(常为9日、9周等)内出现过的最高价、 最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值RSV, 然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。 (3)在使用中,常有J线的指标,即3乘以K值减2乘以D值(3K-2D=J),其目的是求出K值与D值的最大乖离程度, 以领先KD值找出底部和头部。J大于100时为超买,小于10时为超卖。

7,SMA指标

http://wiki.mbalib.com/wiki/Sma 简单移动平均线(Simple Moving Average,SMA) 可以动态输入参数,获得几天的移动平均。

8, MACD指标

http://wiki.mbalib.com/wiki/MACD 平滑异同移动平均线(Moving Average Convergence Divergence,简称MACD指标),也称移动平均聚散指标 MACD 则可发挥其应有的功能,但当市场呈牛皮盘整格局,股价不上不下时,MACD买卖讯号较不明显。 当用MACD作分析时,亦可运用其他的技术分析指标如短期 K,D图形作为辅助工具,而且也可对买卖讯号作双重的确认。

10, RSI指标

http://wiki.mbalib.com/wiki/RSI 相对强弱指标(Relative Strength Index,简称RSI),也称相对强弱指数、相对力度指数 2)强弱指标保持高于50表示为强势市场,反之低于50表示为弱势市场。 (3)强弱指标多在70与30之间波动。当六日指标上升到达80时,表示股市已有超买现象,如果一旦继续上升,超过90以上时,则表示已到严重超买的警戒区,股价已形成头部,极可能在短期内反转回转。

12, CCI指标

http://wiki.mbalib.com/wiki/%E9%A1%BA%E5%8A%BF%E6%8C%87%E6%A0%87 顺势指标又叫CCI指标,其英文全称为“Commodity Channel Index”, 是由美国股市分析家唐纳德·蓝伯特(Donald Lambert)所创造的,是一种重点研判股价偏离度的股市分析工具。 1、当CCI指标从下向上突破﹢100线而进入非常态区间时,表明股价脱离常态而进入异常波动阶段, 中短线应及时买入,如果有比较大的成交量配合,买入信号则更为可靠。 2、当CCI指标从上向下突破﹣100线而进入另一个非常态区间时,表明股价的盘整阶段已经结束, 将进入一个比较长的寻底过程,投资者应以持币观望为主。 CCI, default to 14 days

13, TR、ATR指标

http://wiki.mbalib.com/wiki/%E5%9D%87%E5%B9%85%E6%8C%87%E6%A0%87 均幅指标(Average True Ranger,ATR)均幅指标(ATR)是取一定时间周期内的股价波动幅度的移动平均值,主要用于研判买卖时机。

14, DMA指标

http://wiki.mbalib.com/wiki/DMA DMA指标(Different of Moving Average)又叫平行线差指标,是目前股市分析技术指标中的一种中短期指标,它常用于大盘指数和个股的研判。 DMA, difference of 10 and 50 moving average stock[‘dma’]

15, DMI,+DI,-DI,DX,ADX,ADXR指标

http://wiki.mbalib.com/wiki/DMI 动向指数Directional Movement Index,DMI) http://wiki.mbalib.com/wiki/ADX 平均趋向指标(Average Directional Indicator,简称ADX) http://wiki.mbalib.com/wiki/%E5%B9%B3%E5%9D%87%E6%96%B9%E5%90%91%E6%8C%87%E6%95%B0%E8%AF%84%E4%BC%B0 平均方向指数评估(ADXR)实际是今日ADX与前面某一日的ADX的平均值。ADXR在高位与ADX同步下滑,可以增加对ADX已经调头的尽早确认。 ADXR是ADX的附属产品,只能发出一种辅助和肯定的讯号,并非入市的指标,而只需同时配合动向指标(DMI)的趋势才可作出买卖策略。 在应用时,应以ADX为主,ADXR为辅。

16, TRIX,MATRIX指标

http://wiki.mbalib.com/wiki/TRIX TRIX指标又叫三重指数平滑移动平均指标(Triple Exponentially Smoothed Average)

17, VR,MAVR指标

http://wiki.mbalib.com/wiki/%E6%88%90%E4%BA%A4%E9%87%8F%E6%AF%94%E7%8E%87 成交量比率(Volumn Ratio,VR)(简称VR),是一项通过分析股价上升日成交额(或成交量,下同)与股价下降日成交额比值, 从而掌握市场买卖气势的中期技术指标。

使用方法(依赖docker)

使用 mariadb 和 stock 两个镜像

mkdir -p /data/mariadb/data

docker pull pythonstock/pythonstock:latest

docker pull mariadb:latest

docker run --name mariadb -v /data/mariadb/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=mariadb -p 3306:3306 -d mariadb:latest

docker run -itd --link=mariadb --name stock \

-v /data/notebooks:/data/notebooks \

-p 8888:8888 \

-p 9999:9999 \

pythonstock/pythonstock:latest

直接启动stock ,使用其他 mysql 数据库,需要配置变量方式:

docker run -itd --name stock \

-v /data/notebooks:/data/notebooks \

-p 8888:8888 \

-p 9999:9999 \

-e MYSQL_HOST=127.0.0.1 \

-e MYSQL_USER=root \

-e MYSQL_PWD=mariadb \

-e MYSQL_DB=stock_data \

pythonstock/pythonstock:latest

进入镜像:

docker exec -it stock bash

sh /data/stock/jobs/cron.daily/run_daily

说明,启动容器后,会调用。run_init.sh 进行数据初始化,同时第一次执行后台执行当日数据。

以后每日18点(只有18点左右才有今日的数据)进行股票数据抓取并计算。

本地访问端口

查看jupyter的密码:

docker exec -it stock bash

查看登录 token 问题:

jupyter notebook list

# 就可以看到 token 了,然后可以登录了。

1,股票系统设计

2,架构设计

全系使用python实现。因为都是python的类库,互相之间调用方便。

从数据抓取,数据处理,到数据展示数据运算都是python实现。

最终的数据都到前端展示出来。主要分为4个文件夹。

jobs 抓取数据并存储实现类。

libs 通用工具类。

web 前端展示框架。

supervisor 进程管理工具。

3,应用部署

需要mysql数据库启动。项目放到/data/stock 目录。

CREATE DATABASE IF NOT EXISTS `stock_data` CHARACTER SET utf8 COLLATE utf8_general_ci;

使用 :

3,web使用datatable显示报表

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

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

4,使用pandas处理重复数据

data = ts.get_report_data(year, quarter)

# 处理重复数据,保存最新一条数据。

data.drop_duplicates(subset="code", keep="last")

5,增加多字段排序

1,点击是单个字段进行排序。

2,按照【shift】,点击多个,即可完成多字段排序。

3,服务端分页排序。

4,按照多个字段进行筛选查询。

6,开发环境执行

sh startStock.sh 1

9,解决跑数据问题

# 通过数据库链接 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,解决日志打印问题

配置 main.py

tornado.options.parse_command_line()

然后启动配置参数:

/usr/local/bin/python3 /data/stock/web/main.py -log_file_prefix=/data/logs/web.log

10,升级 bokeh 到 2.1.1 版本

https://pypi.org/project/bokeh/#files

11,解决 Bokeh JS兼容问题。

升级 bokeh 到 2.1.1 版本

升级JS,因为 lib 包升级导致问题。

python做股票系统_GitHub - hetingqin/stock: stock,股票系统。使用python进行开发。相关推荐

  1. 0基础学python做什么工作好-写给0基础小白:Python能干什么?就业前景好不好?怎么开始学?...

    原标题:写给0基础小白:Python能干什么?就业前景好不好?怎么开始学? 今天,我们深度了解一下Python这门语言,它到底是什么,都能用来干什么,为什么这么火? 首先,普及一下编程语言的基础知识. ...

  2. python做日历牌_中秋节到了,送你一个Python做的Crossin牌“月饼”

    明天是难得一见的国庆中秋双节合一,在这里除了祝大家节日快乐之外,我们还要送上一个"月饼"--当然这个月饼是不能吃的,因为它是用python做的.先给大家看一下效果图. 图1. 月饼 ...

  3. python做毕业设计选题_软妹子的毕业设计:用Python制作防盗门系统!

    原标题:软妹子的毕业设计:用Python制作防盗门系统! 源 /PythonerCN文 /木易小光 背景 毕业季又要到了,而这次我加入了毕业季的大军,在外面租了房子.但是不知道为什么,每天上班我都会担 ...

  4. 用python做毕业设计多少钱_我的毕业设计是利用Python做一个淘淘购物系统!

    此篇文章是纯代码!更多精彩案例加群:626017123 #首页 def tao_first(): t1 = '欢迎进入淘淘购物'.center(110) print(t1) print('~' * 1 ...

  5. python做脚本语言要了解什么_你真的了解Python吗?本文可以让你对Python了解更深入...

    人们为什么使用Python? 之所以选择Python的主要因素有以下几个方面:软件质量:在很大程度上,Python更注重可读性.一致性和软件质量,从而与脚本语言世界中的其他工具区别开发.此外,Pyth ...

  6. 0基础学python做什么工作好-转行零基础该如何学习python?很庆幸,三年前的我选对了...

    这似乎是一个如荼如火的行业,对于一直在思考着转行的我,提供了一个不错的方向. 这个行业当然就是python程序员,真正开始决定转行是在24岁的时候,到现在已经有三年多了,我从零开始,每天用业余两个小时 ...

  7. 3dmax和python做3d动画_maya三维动画师和程序员(python)哪个前景好一些?

    我是个做游戏开发的前端程序员,回答这个问题再适合不过.因为我的工作,既需要做动画,又需要写代码. Python只是动态语言(脚本语言),它根本不适合搞开发,只适合当成辅助语言使用.要想当程序员,光靠P ...

  8. python做灰色关联度分析_【数学建模】通过python实现灰色关联度计算

    1.关联分析 关联分析主要作用为对系统的因素进行分析,其主要作用为分辨因素中哪些因素对系统的影响是显著的,哪些影响是次要的.通常而言因素分析的主要方式为回归分析等,但其存在数据量要求大,计算量大等诸多 ...

  9. python做excel自动化可视化-简直出神入化,教你用Python控制Excel实现自动化办公...

    1.安装 简直出神入化,教你用Python控制Excel实现自动化办公 2.操作一个简单的Excel文档 操作注释及代码: 简直出神入化,教你用Python控制Excel实现自动化办公 操作完成后,数 ...

最新文章

  1. 字符类型(Java)
  2. 外包 银行数字签名U盘的用法
  3. Python 数据结构视频教程五
  4. [笔记]C#基础入门(五)——算法:交换
  5. 成功解决Exception: Graph file doesn't exist, path=F:\File_Python\Python_example\Human_Posture_Detection\
  6. 什么是I帧,P帧,B帧
  7. UVA - 1368 ​​​​​​​DNA Consensus String
  8. 搜狗输入法为什么按空格出字 搜狗输入法按空格出字怎么设置
  9. git回滚命令reset、revert的区别
  10. python武器代码_程序员需要掌握的七种 Python 代码更易维护的武器
  11. ES6学习笔记六(新增数据结构)
  12. RTX与其他实时操作系统的比较
  13. ionic之自动生成app图标和启动页面
  14. ArcGIS API For JavaScript 利用GP服务生成等值线、等值面(一)之生成等值线
  15. ligerui 用html 来初始化 ligerform
  16. 泰坦尼克号乘客获救预测
  17. 利用JWT安全验证(前后端分离,单点登录,分布式微服务)
  18. 不支持多拨的无线路由 一号多拨+无线
  19. 数独游戏技巧从入门到精通_从入门到精通八讲 | 高效氮化镓电源设计第六讲—EMC优化和整改技巧...
  20. brk系统调用和copy-on-write机制

热门文章

  1. 未定义标识符 stringc/c++(20)_Python 标识符命名规则
  2. 惠斯通电桥信号调理芯片_瑞萨推出集成LIN输出接口的传感器信号调理芯片,适用于电动/混动汽车HVAC系统...
  3. keyshot手机渲染教程_keyshot灯光渲染基础入门教程【英】
  4. css 样式三元运算_20条书写CSS代码的建议
  5. linux 命令rsss,[译] linux内存管理之RSS和VSZ的区别
  6. JAVA之获取JavaSwing复选框JCheckBox选中的值(内容)
  7. C - Line-line Intersection Gym - 102220C(线段相交)
  8. RecyclerView 显示不全的问题.
  9. N-Gram的数据结构
  10. SpringBoot入门:新一代Java模板引擎Thymeleaf(实践)