最近全球股市开始回暖,之前清仓的股民现在又陆续开始建仓。股市交易时间,一般也是上班时间,频繁的查看股票软件不仅会影响工作效率,也容易被老板以为工作不饱和。所以,我们就借助python的强大功能,把提前设置好的股票信息推送到「钉钉」上,毕竟钉钉是一个办公软件,老板看见了还会以为你在认真工作。
1、通过接口获取股市实时信息
我们使用的是新浪股市提供的接口,这个接口是这样的:
http://hq.sinajs.cn/list=sz300287
等于号后面的就是我们想要监控的股票代码,如果是上海交易所的股票就是「sh+股票代码」,如果是深圳交易所的股票就是「sz+股票代码」,通过python的requests模块可以获取信息:
import requestsr = requests.get('http://hq.sinajs.cn/list=sz300287')
res = r.text
print(res)
得到的结果是这样的:
var hq_str_sz300287="飞利信,4.320,4.320,4.430,4.470,4.320,4.420,4.430,50815817,
224559304.490,1717400,4.420,374700,4.410,537700,4.400,110400,4.390,258800,
4.380,176600,4.430,364100,4.440,344900,4.450,198600,
4.460,360547,4.470,2020-04-30,15:00:03,00";
上面这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,我们按照顺序号从0开始,看一下各个字符串的意义:
0:”飞利信”,股票名字;
1:”4.320″,今日开盘价;
2:”4.320″,昨日收盘价;
3:”4.430″,当前价格;
4:”4.470″,今日最高价;
5:”4.320″,今日最低价;
6:”4.420″,竞买价,即“买一”报价;
7:”4.430″,竞卖价,即“卖一”报价;
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:”2020-04-30″,日期;
31:”15:05:32″,时间;
这样我们就拿到了所需股票的实时信息。
2、计算股票涨跌幅,并判断是否需要报警
我们假设,当股票涨幅或者跌幅超过 3% 的时候才触发报警,毕竟对于价值投资者来说,微小的波动不足以引起重视。那么我们首先要算一下,今天的涨跌幅,如果超过了设定值,就引发报警:
r = requests.get('http://hq.sinajs.cn/list=sz300287')
res = r.text
result = res.split('=')[1] # 截取等号之后的数据部分name = result.split(',')[0].replace('"', '') # 股票名称
start_price = float(result.split(',')[2]) # 昨日收盘价
now_price = float(result.split(',')[3]) # 当前价格
rate = (now_price-start_price)/start_price * 100 # 涨跌幅度if abs(rate) > 0.02:content = "股票报警:当前股票「{0}」, 涨幅「{1:.2f}%」, 请注意!".format(name, rate)print(content)
看一下打印的结果:
现在结果已经出来了,下一步就要发送到钉钉了。
3、配置钉钉接口,发送报警信息
首先,给钉钉群添加机器人,报警信息就是由机器人发送:
设置机器人名称和报警内容关键词:
获得机器人接口,之后我们把上一步获得的报警信息,通过这个接口发送出去:
if abs(rate) > 0.02:content = "股票报警:当前股票「{0}」, 涨幅「{1:.2f}%」, 请注意!".format(name, rate)print(content)json_data = {"msgtype": "text","text": {"content": content, # 发送内容},"at": {"atMobiles": [],"isAtAll": False # 是否要@某位用户}}ding_url = 'https://oapi.dingtalk.com/robot/send?access_token=' 'dfb241394310aeb3a94d32f1b359b7382429f4b435f9f0eb605979f50b21e857'requests.post(url=ding_url, json=json_data)print('报警信息发送成功。')
最终发送完成:
以上就是使用python发送报警信息的流程,代码还有很多可以定制的地方,比如说:多久监控一次、涨幅超过多少会报警、报警是否要”@“ 某位用户等等。之后我会把代码放到服务器上,有需要的朋友可以在评论区说一下你想监控哪只股票。
欢迎关注「趣谈数据分析」微信公号号,学习更多数据分析内容。