前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python股票实时查看告警工具

Python股票实时查看告警工具

作者头像
逝兮诚
发布2019-10-30 19:44:45
3K0
发布2019-10-30 19:44:45
举报
文章被收录于专栏:代码人生代码人生

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/luo4105/article/details/89257924

需求设计

源码地址:https://github.com/programluo/stock_tool

股票实时查看告警工具

需求

每次想看股票的时候都要拿出手机,或者打开股票软件,这个过程一般都比较长,很容易打断连贯的代码思路,并且股票软件都有太多广告信息,诱惑信息,让人忍不住去点,浪费很长时间,同时也杂多的信息,容易让人陷入FOLO的心态,活生生成了韭菜。第二个需要一个告警通知,某某股票到了我设定的告警值,我可以加仓或者斩仓了。

功能

  1. 查看实时自选股票价格
  2. 股票阀值告警

实时自选股票价格

终端输入指定命令:stock

显示自选股票信息

代码语言:javascript
复制
name      - now      - max_today      - min_today   
中兴       - 32.14    - 33.41         32

标题空格6个

值第二个间隔4个空格,第三个间隔9个空格

标题空格的10-name.length

阀值告警

调用mac系统通知,右上角

在这里插入图片描述
在这里插入图片描述

解决方案

决定使用Python语言来完成这些功能,原因是python简单,易用,包多,适合做个人语言。

实时自选股票价格

http去请求股票实时接口,解析返回体,在终端格式化输出。并设置自定义命令去执行这个python文件。

采用urllib来做http请求,方式

代码语言:javascript
复制
urllib.request.urlopen("http://xxxxx.com")

配置mac的自定义命令方式,将以下代码放入到~/bash_profile

代码语言:javascript
复制
alias stock = 'python3 /Users/marx_luo/xx/stock.py'

股票实时接口调用新浪的http://hq.sinajs.cn/list=sz000063,解析如下信息

代码语言:javascript
复制
var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";

0:”大秦铁路”,股票名字; 1:”27.55″,今日开盘价; 2:”27.25″,昨日收盘价; 3:”26.91″,当前价格; 4:”27.55″,今日最高价; 5:”26.20″,今日最低价; 6:”26.91″,竞买价,即“买一”报价; 7:”26.92″,竞卖价,即“卖一”报价; 8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百; 9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万; 10:”4695″,“买一”申请4695股,即47手; 11:”26.91″,“买一”报价; 12:”57590″,“买二” 13:”26.90″,“买二” 14:”14700″,“买三” 15:”26.89″,“买三” 16:”14300″,“买四” 17:”26.88″,“买四” 18:”15100″,“买五” 19:”26.87″,“买五” 20:”3100″,“卖一”申报3100股,即31手; 21:”26.92″,“卖一”报价 (22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况” 30:”2008-01-11″,日期; 31:”15:05:32″,时间;

阀值告警

定时2分钟请求接口,判断是否超过阀值,如果超过,使用pync做系统通知,定时器使用linux自带的

具体实现

实时自选股票

  1. 编写一个python文件,通过urllib调用新浪股票数据接口并解析,规则打印。
  2. 设置mac命令别名alias,stock=python3 /…/stock_show.py

代码

代码语言:javascript
复制
import urllib.request

stockNos = ["sz000063","sh000016"]
stockNames = ["中兴通讯","上证50"]
print("name      - now      - max_today      - min_today")
for ind, stockNo in enumerate(stockNos):
    response = str(urllib.request.urlopen(f"http://hq.sinajs.cn/list={stockNo}").read())
    stockData = response.split("\"")[1].split(",")
    stockName = stockData[0]
    openPrice = stockData[1]
    openPriceYesterday = stockData[2]
    priceNow = stockData[3]
    priceHighest = stockData[4]
    priceLowest = stockData[5]
    print(f"{stockNames[ind]}    {priceNow}    {priceHighest}         {priceLowest}")

当终端输入stock时,结果打印

MacBook-Pro:stock$ stock name - now - max_today - min_today 中兴通讯 29.980 30.300 29.500 上证50 2951.9848 2959.5898 2921.2037

系统阀值通知

  1. 通过urllib调用新浪实时接口并获得当前报价,判断报价是否高于/低于警戒值,如果是,调用pync完成mac系统通知调用。
  2. 使用mac系统定时任务crontab设置告警通知的执行时间。

crontab设置过程

  1. 输入crontab -e进入设置文本。
  2. 填写*/3 9-12,13-15 * * 1-5 /usr/local/bin/python3 /Users/marx_luo/PythonWorkspace/stock/stock_alarm.py,即周一到周五,上午9点到12点,下午1点到3点,每三分钟执行阀值告警。

代码

代码语言:javascript
复制
import urllib.request
import pync

stocks = [{"code":"sz000063","name":"中兴通讯","min_threshold":"26","max_threshold":"38"},{"code":"sh000016","name":"上证50"}]

for ind, stock in enumerate(stocks):
    response = str(urllib.request.urlopen(f"http://hq.sinajs.cn/list={stock['code']}").read())
    stockData = response.split("\"")[1].split(",")
    priceNow = stockData[3]
    if stock.__contains__('min_threshold') and stock.__contains__('max_threshold'):
        if stock['min_threshold'] > priceNow:
            pync.notify(f'{stock["name"]}当前价格{priceNow}', title=f'{stock["name"]}股票已低于设定值{stock["min_threshold"]}')
        if stock['max_threshold'] < priceNow:
            pync.notify(f'{stock["name"]}当前价格{priceNow}', title=f'{stock["name"]}股票已高于设定值{stock["max_threshold"]}')

crontab踩坑说明

crontab -e会生成一个基于当前用户的临时的定时任务文件,重启之后也会存在,重启之后自动执行。

crontab中的命令,必须使用全路径,它是拿不到系统的环境配置的。比如我在.bash_profile中自定义了一个命令,在crontab中是不能执行的。包括python3也是不能执行的,因为拿不到系统环境,必须使用python3的全路径。

如何找到python3这个执行文件在哪里,通过which查找

代码语言:javascript
复制
which python3

有时候,可能因为crontab的任务写错了,导致没有执行成功,去哪里看日志呢?

crontab会把每次执行错误的情况发到本地邮件,去本地邮件可以查看执行错误原因

mail打开邮件列表,输入邮件编号就能看到邮件内容。

mail存在/var/mail/$user文件下,vim /var/mail/$user就可以看到所有邮件内容,删除文件就可以清空邮件

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求设计
    • 实时自选股票价格
      • 阀值告警
      • 解决方案
        • 实时自选股票价格
          • 阀值告警
          • 具体实现
            • 实时自选股票
              • 系统阀值通知
                • crontab踩坑说明
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档