需求设计

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

股票实时查看告警工具

需求

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

功能

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

实时自选股票价格

终端输入指定命令:stock

显示自选股票信息

name      - now      - max_today      - min_today
中兴       - 32.14    - 33.41         32

标题空格6个

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

标题空格的10-name.length

阀值告警

调用mac系统通知,右上角

解决方案

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

实时自选股票价格

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

采用urllib来做http请求,方式

urllib.request.urlopen("http://xxxxx.com")

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

alias stock = 'python3 /Users/marx_luo/xx/stock.py'

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

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

代码

import urllib.requeststockNos = ["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点,每三分钟执行阀值告警。

代码

import urllib.request
import pyncstocks = [{"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查找

which python3

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

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

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

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

Python股票实时查看告警工具相关推荐

  1. python 股票实时数据接口_获取股票实时数据的接口

    记录下获取股票实时数据的接口,记录下. 以基金兴和500018为例 ****************************** 新浪的接口: http://hq.sinajs.cn/list=sh5 ...

  2. python中实时查看GPU状况 GPUtil

    我在Colab中找不到可以直接实时使用watch -n 1 nvidia-smi的地方,所以可以在python中实时输出使用gputil pip install gputil GPUtil.showU ...

  3. 如何使用python股票实时接口查出股票信息?

    如何使用Python查出某只股票的这些信息呢?答案是使用Python的baostock接口,示例代码如下: import baostock as bs import pandas as pd # 登陆 ...

  4. 安装实时查看日志工具 log.io

    官网:http://logio.org/ 一.环境 [root@centos ~]# cat /etc/system-release CentOS release 6.5 (Final) [root@ ...

  5. 远端服务器日志实时查看工具 Web-tailf

    tailf 一个类似linux tail的web版本日志滚动查看工具 码云(https://gitee.com/aqu415/tailf) CSDN(https://blog.csdn.net/Aqu ...

  6. 浏览器实时查看日志log.io

    前言 最近找到了一个可以实时查看日志工具 操作如下 CentOS安装log.io http://logio.org/ log.io是运行在node.js之上的 可通过浏览器访问服务器日志 类似于tai ...

  7. python爬取股票大单历史记录_python爬取股票实时数据,python爬虫与股票分析

    内容导航: Q1:怎么学python爬取财经信息 本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自动根据预设的股票代码列表,从Yahoo Finance抓取列表 ...

  8. 使用C#编写一个读取和判断股票实时成交数据的小工具

    使用vs2019预览版,.net4.5进行编写,定位为一个数据分析的小工具,对个股的每笔成交进行分析判断,目前想到的就这些功能,并且还存在很多问题,不断完善中. 本身不是专业写程序的,只是处于爱好在闲 ...

  9. 用python读取股票价格_借助Python获取股票实时价格的操作方法

    今天和大家分享一下使用Python获取股票实时价格的操作方法. 工具/原料 Python软件 可以联网的电脑 方法/步骤 1 要想获取股票数据,我们需要借助第三方模块.我们首先需要打开开始菜单. 2 ...

最新文章

  1. C++ string字符串的比较是否相等
  2. 超声波传感器特性测量:发送与接收传感器之间的差异
  3. mysql条件填充命令_mysql的简单命令
  4. 在VS中如保快速查看DLL或exe的已导出的函数
  5. Duplicate entry ‘211‘ for key ‘PRIMARY‘异常解决
  6. 信用评分卡—信贷准入A卡(逻辑回归)
  7. Java路径问题最终解决方案使用演示
  8. Linux简单命令集——head
  9. 手机客户端和服务器端通信
  10. java学习避免死锁
  11. 部署Ceph分布式高可用集群中篇
  12. It was in 2006, and as a desktop computer
  13. 统计学中RR OR AR HR的区别
  14. 红帽Red Hat Linux镜像下载
  15. 2021年1月PMP考试改版
  16. linux多媒体音频架构
  17. Mat 转 IplImage
  18. 大屏可视化之适配和布局
  19. OJ一元二次方程的根*易错点
  20. Unity URP Reflection

热门文章

  1. Ardunio、simulink分别控制继电器吸合的小程序
  2. python脚本文件变量设置_Python环境变量设置方法
  3. Windows 下的免费 SSH 客户端工具
  4. c语言不用strcpy复制字符串,C语言不使用strcpy函数如何实现字符串复制功能
  5. 研讨会 | “数据星河”系列活动—大数据人才培养现状和思考
  6. Iterative Pruning
  7. MLK | 模型评估的一些事
  8. 免费版小程序证件照源码
  9. numpy的axis
  10. java http 401 域登录_HTTP 401错误