前言
2025年4月7日,中国股市以一场惊心动魄的暴跌载入历史。清晨9点30分,当三大指数集体低开的数字跳上屏幕时,交易大厅里的空气仿佛凝固——沪指低开4.46%,深成指下探5.96%,创业板指更是以6.77%跌幅撕开交易日的序幕。这个周一,注定成为无数投资者记忆中的至暗时刻。有很多股民朋友觉得,自己对股市掌握的不足,是因为对信息掌握不足,对资金流量知晓不多导致的。如果有一个工具能够每天自动收集海量的股票数据,计算各种技术指标,并直观地展示出来,那无疑会大大提高股民的决策效率。今天,我要为大家介绍一款这样的自托管选股工具可以通过Docker轻松部署,让你拥有一个专属的股票分析平台。
一、系统部署
(一)安装Docker
在开始部署之前,确保你的系统已经安装了Docker。Docker是一个开源的应用容器引擎,它可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。 (RHEL |Docker 文档)
(二)安装数据库镜像
数据库用于存储股票数据。在这里,我们选择使用MariaDB作为数据库。MariaDB是MySQL的一个分支,具有高性能、高可用性和易用性等特点。安装MariaDB数据库镜像的命令如下:
docker run -d --name InStockDbService \
-v /data/mariadb/data:/var/lib/instockdb \
-e MYSQL_ROOT_PASSWORD=root \
library/mariadb:latest
-d表示以守护进程模式运行容器,让容器在后台运行。--name InStockDbService为容器指定一个名称,方便后续引用。-v /data/mariadb/data:/var/lib/instockdb将宿主机的/data/mariadb/data目录挂载到容器的/var/lib/instockdb目录,用于持久化数据库数据,即使容器被删除,数据也不会丢失。-e MYSQL_ROOT_PASSWORD=root设置MariaDB的root用户密码为root,你可以根据自己的需求修改密码。library/mariadb:latest指定使用Docker Hub上的最新版MariaDB镜像。
(三)安装Instock股票系统
在数据库安装完成后,接下来就是安装inStock股票系统。instock是一个基于Python开发的股票分析工具,它通过爬虫技术获取股票数据,并进行分析和展示。安装instock的命令如下:
docker run -dit --name InStock --link=InStockDbService \
-p 9988:9988 \
-e db_host=InStockDbService \
mayanghua/instock:latest
-dit表示以交互模式运行容器,并在后台运行。--name InStock为容器指定名称。--link=InStockDbService将instock容器与之前创建的数据库容器InStockDbService进行链接,使它们能够在同一个网络中通信。-p 9988:9988将容器的9988端口映射到宿主机的9988端口,这样我们就可以通过访问宿主机的9988端口来访问instock的Web界面。-e db_host=InStockDbService设置环境变量,指定instock连接数据库的主机地址为InStockDbService。mayanghua/instock:latest指定使用Docker Hub上最新的instock镜像。
二、系统使用
(一)查看日志
在instock运行过程中,可能会产生一些日志信息,这些日志可以帮助我们了解系统的运行状态。查看日志的命令如下:
# 查看数据库连接日志
docker logs InStock
# 查看web服务日志
docker logs InStockDbService
如果在运行过程中遇到问题,可以通过查看日志来排查原因。
(二)数据抓取与分析
instock提供了丰富的数据抓取和分析功能。通过编写Python脚本,可以实现股票数据的抓取、处理、分析、识别、回测等功能。例如,可以使用以下命令来执行数据抓取作业:
python execute_daily_job.py
该命令会抓取当天的股票数据,并进行分析处理。此外,还可以通过修改run_job.sh脚本来定制自己的作业计划,实现批量作业。
(三)Web端功能展示
instock的Web界面提供了丰富的功能,主要包括以下几个方面:
1. 综合选股
综合选股功能可以根据用户设定的条件,从海量股票中筛选出符合条件的股票。例如,可以根据股票的涨跌幅、成交量、换手率等指标进行筛选,帮助用户快速找到具有潜力的股票。
2. 股票每日数据
该功能展示了每只股票的每日数据,包括开盘价、收盘价、最高价、最低价、成交量等信息。用户可以通过图表和表格的形式查看股票的历史走势,了解股票的基本面情况。
3. 计算股票指标
instock提供了多种股票技术指标的计算功能,如均线、MACD、KDJ等。这些指标可以帮助用户分析股票的走势,判断股票的买卖时机。
基于talib、pandas 计算指标,计算高效准确。调整个别指标公式,确保结果和同花顺、通信达结果一致。 指标:
1、MACD 2、KDJ 3、BOLL 4、TRIX,TRMA 5、CR 6、SMA 7、RSI
8、VR,MAVR 9、ROC 10、DMI,+DI,-DI,DX,ADX,ADXR 11、W&R
12、CCI 13、TR、ATR 14、DMA、AMA 15、OBV 16、SAR 17、PSY
18、BRAR 19、EMV 20、BIAS 21、TEMA 22、MFI 23、VWMA
24、PPO 25、WT 26、Supertrend 27、DPO 28、VHF 29、RVI
30、FI 31、ENE 32、STOCHRSI
4. K线形态识别
K线形态是股票技术分析中的重要工具,instock可以识别多种常见的K线形态,如锤头线、上吊线、吞没形态等。通过识别K线形态,用户可以更好地把握股票的短期走势。
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时,表明股价已经进入另一个非常态区间——超卖区间,投资者可以逢低吸纳股票。
CR:
1、跌穿a、b、c、d四条线,再由低点向上爬升160时,为短线获利的一个良机,应适当卖出股票。
2、CR跌至40以下时,是建仓良机。
WR:
1、当%R线达到20时,市场处于超买状况,走势可能即将见顶。
2、当%R线达到80时,市场处于超卖状况,股价走势随时可能见底。
VR:
1、获利区域160-450根据情况获利了结。
2、低价区域40-70可以买进。
5. 策略选股
用户可以根据自己的投资策略,在instock中编写选股策略。例如,可以根据股票的财务指标、技术指标等条件,筛选出符合自己投资理念的股票。
三、总结
通过Docker部署instock,我们可以拥有一款功能强大的股票分析工具。它不仅可以帮助我们收集和分析股票数据,还可以根据我们的投资策略进行选股和验证。此外,instock的Web界面操作简单,功能丰富,即使是没有编程基础的股民也可以轻松上手。当然,股市有风险,投资需谨慎。instock只是一款工具,它不能保证投资的成功,但可以为我们提供更多的信息和分析手段,帮助我们做出更明智的投资决策。希望这篇文章能够对你有所帮助,如果你对instock感兴趣,不妨动手尝试一下,在投资的道路上迈出更稳健的一步。