1 Star 0 Fork 240

panJoe/StockAnalysisSystem

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
# 软件配置
当软件没检测到配置文件,会自动弹出配置窗口,配置如下:
* NoSql相关
> 如果按默认安装,不需要改。否则根据实际情况修改mongodb配置。
* Ts Token
> 如果不需要更新可以随便乱填,需要更新的话:
> 注册一个tushare的账号:https://tushare.pro/register?reg=271027
> 想办法获取500以上的积分(如果没有,无法更新数据,但可以使用离线数据):https://tushare.pro/document/1?doc_id=13
> 获取你的token并填入配置界面:https://tushare.pro/document/1?doc_id=39
* MongoDB Bin
> 只和导入导出有关,选择本机的MongoDB的bin文件目录(默认目录大同小异,一般只是版本号不同)
> 从度盘下载离线数据(当前代码选择2.0的数据,唯一区别就是日数据每股一个表还是全部存在一个表中)并解压
> 挨个选择目录导入(StockAnalysisSystem,StockDaily,SasCache;顺序无关,后两个可选)
> 导入时下方会显示导入进度,如果没反映,请检查MongoDB目录是否正确
* Proxy
> 只是为了我使用方便,没有的话就别管了
* 以上步骤都做完后,建议重新程序(非必须),或手动刷新一下列表










# 使用方法及软件依赖与配置

### 不想运行,直接看结果
* 打开analysis_report.xlsx

### 从网盘下载打包好的程序
* 需要安装MongoDB,但不需要安装额外的python库
* 解压后直接运行main.exe
* 程序第一次启动时,会自动检查配置并弹出配置界面,请按照提示填写即可;如果没有Ts Token,可以胡乱填写
* 配置界面提供mongodb数据的一键导入功能(数据同样在网盘下载),请分别导入StockAnalysisSystem及StockDaily数据
* 如果不导入数据,可以通过数据管理界面下载(耗时较长),这种情况下需要正确填写Ts Token)

### 通过sas库运行程序
* 安装sas库
> pip install StockAnalysisSystem

* 导入库及运行
> import StockAnalysisSystem.api as sas_api
> sas_api.main(<your_project_path>)

* 关于<your_project_path>
> \# 需要指定一个目录用以存放程序所需的文件,默认为os.getcwd()
> <your_project_path>/config.json &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 配置文件
> <your_project_path>/Data &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 数据库目录
> <your_project_path>/plugin/Analyze &nbsp;&nbsp;&nbsp; # 插件目录 - Analyzer
> <your_project_path>/plugin/Collector &nbsp;&nbsp; # 插件目录 - Collector
> <your_project_path>/plugin/Extension &nbsp; # 插件目录 - Extension
> <your_project_path>/plugin/Factor &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 插件目录 - Factor

### 搭建环境并从源码运行
* 使用python3,推荐python3.7. IDE推荐pycharm:https://www.jetbrains.com/pycharm/download/#section=windows
* 依赖pandas,推荐使用anaconda的环境:https://www.anaconda.com/distribution/
* 需要安装mongodb(免费的社区版即可):https://www.mongodb.com/what-is-mongodb
* 当前数据采集依赖于tushare的pro接口(未来会加入其它采集方式)
> 1.1 在当前运行的python环境中安装tushare:pip install tushare
> 1.2 注册一个tushare的账号:https://tushare.pro/register?reg=271027
> 1.3 想办法获取500以上的积分(如果没有,无法更新数据,但可以使用离线数据):https://tushare.pro/document/1?doc_id=13
> 1.4 获取你的token并填入配置界面:https://tushare.pro/document/1?doc_id=39

* 安装其它依赖库(二种选一)
> build.bat -e
> pip install -r requirements.txt

* 运行根目录下的main.py






## Stock Memo(股票笔记)
表格形式
标签:为股票选择标签(黑/白/灰名单,短线/长线,以及自定义各种标签),以便区分操作策略
基准:将当天或某个价格作为基准,显示基于此价格的涨跌幅
笔记:和History功能配合,将笔记显示在时间轴上
历史:打开该股票的历史(或者与笔记一起,混合显示)
搜索:名字/部分名字,代码/部分代码,行业,产品
仪表盘:打开仪表盘,其中有直达各种第三方工具的链接
更新:仅更新此股票数据
分析:调用分析器针对这一只股票进行分析并立即展现结果

### Discovery(股票发现)
依赖以下信息:
    股票基本信息(曾用名)
    行业数据
    股票概念及分类数据
    公司产品数据
当用户输入关键字时,依次搜索和匹配以下内容:
    股票代码
    股票名称
    自定义标签
    产品
    概念
    行业
    经验系统
联想推理(经验系统):
    用户可以通过输入关联信息添加经验数据,例如:
        疫情->口罩->无纺布
        新基建->数据中心->UPS, 电力设施
    继而发现[产品]或[概念]相关的公司







* 更新相应文档

# 更新计划:

* 软件已达到最初的目的,为了思考后面怎么做,闭关修炼中,更新减慢
> 研究类似开源框架
> 看看阿布的书
> 学习并尝试引入其它库,例如ta-lib

* StockMemo
> 主界面:
> 1.笔记列表 - 20200721: DONE
> 2.智能搜索,用以过滤列表中的股票 - 20200721: DONE
> 3.黑名单
> 4.数据存储 - 20200721: DONE
>
> 笔记列表:StockMemo的主界面应当列出包含笔记的的所有证券,并包含如下列:
>   1.代码,名字 - 20200721: DONE
>   2.标签 - 显示标签,以逗号分隔,双击打开标签编辑窗口 - 20200721: DONE
>   3.笔记 - 显示最后一条笔记,双击打开笔记编辑窗口 - 20200721: DONE
>   4.K线图表 - 双击打开K线图表,并在上面按时间列出笔记 - 20200721: DONE
>   5.盯盘相关(TBD)
>   6.分析 - 显示此证券的分析结果 - 20200721: DONE
>   7.工具 - 双击打开工具面板
>
> - K笔记编辑界面:
>   1.应应用智能搜索功能 - 20200721: DONE
>
> - K线图表:
>     1.打开时自动更新数据到当日最新数据
>
> - 工具面板:
>   1.能够配置URI及参数
>   2.点击对应项直达第三方网站工具
>
> 智能搜索:软件应能根据用户的输入猜测并列出所有可能的证券
>   1.输入匹配证券部分名字或曾用名 - 20200721: DONE
>   2.输入大于三位数字的情况下,匹配证券代码 - 20200721: DONE
>
> 黑名单:
>   1.保存到用户目录下black_list.csv中
>   2.执行分析并将两类股票打上黑名单标签:财报非标,立案调查
>   3.如果文件不存在,应复制一份系统的黑名单列表
>
> 数据存储:
>   1.默认保存到“系统用户目录/StockAnalysisSystem”下(上下文中简称为“用户目录”) - 20200721: DONE
>   2.用户可选择保存路径,文件转移由用户自己处理,用户选择的目录会保存到config.json中 - 20200721: DONE
>   3.所有StockMemo保存到同一个csv文件 - 20200721: DONE
>   4.StockMemo在每次保存时应创建一个备份,默认保留30个备份,多余的备份自动删除
>   5.标签及工具面板等少量配置统一保存到customer_config.json中
>
* 已有功能持续改进
> 缓存因子计算结果到数据库,加速因子访问
> 其它在使用中需要改进的地方
> 尝试一些量价算法
> 加入交易方法并提示交易(如网格等)
> 加入连续运行功能
> 加入盯盘功能




----------------------------------------------------------------------------------------------------------------------
# 任务回收站

* 从vnpy移植K线图表,重做Stock Memo功能

### History(股市史)
1. 为History加入Horizon轴支持 -> Done
2. 增加显示折线图的Track -> Done
3. 集成到StockAnalysisSytem -> Done
4. 股票历史的录入
5. Stock Memo在时间轴上的显示

* 重新组织程序文件结构,使其能够打包成库
> 现在本程序可以通过pip install StockAnalysisSystem获取
> 详情请见下方说明

> 将数据描述(Prob)从UniversalDataTable中提取出来,使数据加入,更新和检查更加自动化

将分析过程用到的参数抽取为因子 -> 20200507: Done

5.加入扩展(Extension)功能 -> 20200323:Done
> History -> 效果不佳,考虑使用vnpy的K线图库
> Chart Lab -> 20200331: Partly Done
> 因子图表 -> Done

#### History:
> 入口:上方菜单 Extension -> History
> 在时间轴下方显示笔记,上方显示对应日期的的K线
> 设计目标:
>   1.按时间节点记录事件及研究笔记
>   2.今后的回测功能可以在时间轴上显示关键点,以供参考
> 缺陷:
>   1.尽管进行过优化,然而对于大量数据的显示(比如上证指数,约9000+交易日)效率依然不佳
>   2.界面效果没达到预期,后期边用边改进吧

#### 年报下载:
> 入口:上方菜单 Extension -> 年报下载
> 用以从巨潮上下载指定股票对应报告期间的年报
> 主要代码来自:https://github.com/gaodechen/cninfo_process
> 暂时仅支持年报下载
> 请谨慎进行大批量下载

4.加入《手把手教你读财报》的分析方法 -> 20200406: Done
> 现金流画像 -> 20200328:Done
> 货币资金分析 -> 20200328:Done
> 应收预付分析 -> 20200329:Done
> 资产构成分析 -> 20200405: Done
> 利润表分析 -> 20200406: Done

> 股东人数和十大股东 -> 20200305: Done
1. 生成EXCEL格式的报告 -> 20200129: Done
2. 编写数据更新的管理界面  -> 20200130: Done
> 硬编码过多,待重构数据结构解决  -> 20200201: Partly done
> data_update_ui: 将线程任务打包,并正确显示各个项目的进度  -> 20200212: Done
3. 编写策略选择界面  -> 20200131: Done
4. 策略运行进度显示  -> 20200131: Done
5. 界面集成  -> 20200201: Done
6. 完善设计文档  -> 2020.2.2: Partly done
7. 加入配置界面,而非写入config.py,使程序便于打包成EXE  -> 20200203: Done
8. 加入配置检查功能  -> 20200203: Done
9. 加入打包功能,使程序能打包成EXE直接执行  -> 20200204: Done
10. 改善mongodb读写性能和内存使用  ->20200214: Done
> 加入connection计数与限制,超过后关闭client以释放连接及内存  ->20200214: Done
> 为nosql数据库加入索引,提升查询和upsert速度  ->20200214: Done
> 使用bulk减少IO操作 -> 20200222: Done
> 使用多线程同时下载数据和写入数据库 -> 20200305: Done
11. 接入更多财务数据
> 股权质押数据 -> 20200212: Done
12. 接入股东数据
> 股权质押数据 -> 20200221: Done
> 股东人数和十大股东: 20200227: Done
12. 接入交易数据 -> 20200221: Done
13. 加入更多分析算法
> 存贷双高  -> 20200206: Done
> 股权质押过高  -> 20200223: Done
> 商誉过高 -> 2200223: Done
14. 将数据迁移到MongoDB
> UpdateTable -> 20200209: Done
15. 废弃旧仓库,重新建立仓库以减少空间占用,并同时迁移数据到gitee(今后代码会同时提交到两个仓库)  -> 20200218: Done

* 完善Stock Memo功能
> 改进股票选择器,更好用的智能匹配
> 支持输入部分内容智能搜索
> Stock Memo相关数据保存在用户目录而非工程目录下
> 可以通过插件形式扩展Stock Memo的功能
> 当前支持的扩展:笔记,标签,分析器,图表,通过双击对应的格式进入
> TIPS:标签功能会在今后的功能中发挥重要作用
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/panjoe/StockAnalysisSystem.git
git@gitee.com:panjoe/StockAnalysisSystem.git
panjoe
StockAnalysisSystem
StockAnalysisSystem
master

搜索帮助