linux python 调试_Python发邮件智能监控基金涨跌,教你何时买卖!「文末福利」

本文介绍了如何利用Python爬虫监控基金净值变化,并在达到预设阈值时通过邮件自动发送提醒。通过配置QQ邮箱获取授权码,设置定时任务(crontab)在交易日特定时间运行程序,实现基金涨跌监控。文章提供了代码示例和部署教程。
摘要由CSDN通过智能技术生成

导言

最近股市有点牛市的味道,没有投资股票的朋友,一般也会投资基金,那一般是定投的吧。

定投的好处就是不需要额外的时间去管理,自动扣款就好了。

然而基金投资有一句话叫做:“越低越投”,基金定投有一个不好的地方就是,如果某一天基金净值大跌了,但恰好这一天又不是你的定投日,那么这个时候加点仓也许是个不错的选择,比如上这周的周五(2020-07-24),大部分基金净值跌了超过 4% ,以这个为例。

08146fad93a290c0c80ca888e32d1fb0.png

那么,我们是否可以写一个程序,在交易日的时候自动采集基金的涨跌情况,设定阈值,然后通知我们,我们再手动决定是否加仓或者卖出

71e1c904c30815c7b0079f9722dfe191.png

笔者尝试了一下,所以形成了这篇文章,文末有本文代码获取的方法,或者大家可以留言告诉我你想关注的基金代码和你的邮箱(留言我会在后台看到,不会展示出来!),我会在交易日每天 14.50 的时候发邮件提醒你。

下面开始我的表演~~~~

邮箱配置

想要使用自动发邮件的功能,那么就必须有一个发件方,这个发件方的配置信息可以在 邮箱设置中进行配置(这里使用的是 QQ 邮箱,其他邮箱的配置类似)

配置过程如下所示:

44081bf00c720ab4b37de84a7254f573.png

生成授权码后复制下来,后面会用到

c225cc9bfa398fef5f4946c8f8362b27.png

这里说一个 QQ 邮箱的使用技巧,QQ 邮箱是可以一邮多号的,什么意思呢?就是同一个邮箱可以有不同的账号,但是最终收件的地方都是同一个,大家可以在 QQ 邮箱 / 设置 / 账户中进行配置,我就是 @qq.com 和 @foxmail.com 配合使用的,非常方便。

a4b5791b6941bfe7448464d276096d82.png

基金信息获取

配置好邮箱后,我们就来获取我们想要的信息,我们想要每天监控某个基金的涨跌幅信息,可以从基金网站上用爬虫获取,我们使用的是天天基金网 (https://fund.eastmoney.com/)

6b4c452a8e38df7a9ad2ae6f96c7992d.png

我们按 F12 进行调试,我们只需要涨跌幅信息,所以爬取起来也比较简单

b1b93500d7d8e18bd1c22aa580a9eb51.png

但是笔者用爬虫抓取的时候,发现解析后中文信息会出现乱码

1bef03ebbdaeda7aa9050fbf501aa088.png

所以我们只在这个网站上 https://fund.eastmoney.com/ 抓取基金的涨跌幅信息,要获取基金的其他信息,如基金的具体名称的话,我们使用这个网站:http://fund.eastmoney.com/js/fundcode_search.js ,里面涵盖大部分基金的文本信息

0c69965d06d8d3d6da6fc24d8f25946c.png

代码实现

代码的基本思路是,抓取若干个基金(可以进行配置)的涨跌幅信息,然后设置一个阈值(如涨或者跌超过 1%)就提醒我们。

文末获取本文代码。

服务器部署

写好程序后,我们自然想让他自动操作,所以,我们就把他部署到服务器中,在指定时间给我们发邮件就好了。

笔者本来打算使用 Docker 镜像进行部署的,但是基本的 Python 环境的 Dockers 镜像都好几百 M,运行我们这个程序实在有点浪费,再者,我们程序所用到的包都是基本的 Python 包,不会对我们的环境产生影响,所以,我们就只单纯的使用 Linux 命令来配置程序的定时运行。

笔者使用的是腾讯云服务器,本以为把程序上传到服务器运行就可以了,但是,发现自己还是太年轻 但笔者把程序放到服务器时,发现根本发不了邮件,找了一下原因,是因为发邮件的端口(25)被腾讯封了,如果要使用邮件系统的话,必须解封,其次,腾讯要求不能使用云主机之间 SMTP 发邮件,否则就永久封禁 25 端口,这不就是告诉大家不准在本地架邮件服务器吗。。。。

6e27a7fb28a9a28e1a5e3cc9abe35f3c.png

为了之前那么辛苦调试程序,我决定拿出我的另外一台服务器,秒秒钟解决问题

其实我们的部署步骤非常的简单,只需要在服务器上设置在 周一到周五 14.50 左右运行一下程序即可 (周一到周五才有交易,且 15 前交易为当天的净值)

首先,需要安装一下基本的 Python 包

pip install requestspip install bs4

其次,我们需要设置一下定时任务,使用到的命令是:crontab

一些基本命令如下

export EDITOR="/usr/bin/vim"  # 设置 Linux 环境下使用 vim 编辑器编辑 crontab 文件crontab -e # 创建定时任务crontab -l # 查看定时任务 service cron restart # 重启crontab 定时任务 sudo /etc/init.d/cron start # 开启定时任务sudo /etc/init.d/cron stop  # 停止定时任务service cron status  # 查看定时任务状态
  • 创建定时任务
crontab -e

然后修改下面的信息

50 14 * * 1-5 bash /root/fund/fund_code.sh > /root/fund/log.txt 2>&1  # 这句话的意思是 每周一到周五14点50运行一下脚本程序,并把输入写入 log 文件中
d1f0b070be7b8e5e6e3496924ce186c1.png

其中 fund_code.sh 是脚本命令,内容如下, fund_code.py 是我们爬取信息发邮件的程序,/root/anaconda3/bin/python3 的意思是使用 anaconda 的 python 环境来运行我们的程序

注意:设计脚本的时候,涉及到路径的,最好使用绝对路径

7c22b395bcaf37336ab15ad9021b2a0a.png

上面程序中 50 14 * * 1-5 每个值的含义如下:

*    *    *    *    *-    -    -    -    -|    |    |    |    ||    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)|    |    |    +---------- 月份 (1 - 12) |    |    +--------------- 一个月中的第几天 (1 - 31)|    +-------------------- 小时 (0 - 23)+------------------------- 分钟 (0 - 59)

同时我们也可以使用 网站 https://crontab.guru/ 来帮助我们设计合适的时间

f6596bce8ed5d35d93ce27758b801667.png
  • 重启一下定时任务
service cron restart

注意:笔者在调试的时候,遇到定时任务不执行,大家如果也遇到,首先看看 python 程序是否正确,还是不行的话,可以参考:https://blog.csdn.net/qfikh/article/details/78202449 进行解决

在公众号后台回复『基金』获取本文代码

喜欢的朋友给个三连啊

参考:

  • https://www.runoob.com/python/python-email.html
  • https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480
  • https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
  • https://crontab.guru/
  • https://blog.csdn.net/qfikh/article/details/78202449

机器视觉 CV

与你分享 AI 和 CV 的乐趣

分享数据集、电子书、免费 GPU

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值