50 行代码实现微信股价提示(更新)

2020年10月15日

update:2017-02-25

再次更新了这个库,最多可支持 30 支股票同时推送,具体用法戳:GitHub – ipreacher/Stock_WeChat: 微信股价预警提示

# ==============================

update:2017-02-22

更新了这个库,在原本推送模式的基础上增加了提醒模式,具体用法戳:GitHub – ipreacher/Stock_WeChat: 微信股价预警提示

# ==============================

update:2017-02-16

早上把这个小脚本打包传到 pypi 上,也算是个“库”了,23333333。

不单独发专栏污染大家的 tl 了,戳这里看吧:Stock_WeChat 上线啦

# ==============================

昨晚上想做一个股价提示,一旦指定的股价到达预警价格就向自己的微信发一条信息,于是早上就把这东西搞定了。但也没想到原来只需要 50 行代码就搞定了。

据此操作的一切交易后果与本人无关,但如果这些对你有帮助,不妨通过 微信 或 支付宝 对我捐助。

实现功能

微信端截图:

微信股票代码

微信股票代码

Terminal 截图:

微信股票代码

微信股票代码

起因

前些天卖飞了一支股票,原因是没有一直盯盘,把单子一挂就忘了这事,到收盘才发现原来卖飞了。很多 app 不是支持买卖价格预警吗?但问题是,我并不会留心去打开这些 app,特别是在我习惯于把所有 app 的提示全关了的情况下。而微信提示就很有优势,下面这张截图应该很能说明问题:

微信股票代码

微信股票代码

所以推送到微信来提示我买卖价格已经到位,是一个非常不错的选择。

思路

最开始的思路是用新浪股票的接口,爬下来之后再推送到手机上。但是转念一想,股票价格的接口,当然是现成的轮子最好——那就不用说了微信股票代码,用 tushare 吧。

然后怎么推送到微信上呢?还有个轮子很实用,那就是 ItChat。

有了这两个轮子,想实现“微信股价提示”也就并不难了。

具体代码

其实注释里把具体的代码思路都写得蛮清楚的了:

__author__ = 'ipreacher'
import time
import itchat
import datetime
import tushare as ts
stock_symbol = input('请输入股票代码 \n>  ')
price_low = input('请输入最低预警价格 \n>  ')
price_high = input('请输入最高预警价格 \n>  ')
# 登陆微信
def login():
    itchat.auto_login()
# 获取股价并发送提醒
def stock():
    time = datetime.datetime.now()    # 获取当前时间
    now = time.strftime('%H:%M:%S') 
    data = ts.get_realtime_quotes(stock_symbol)    # 获取股票信息
    r1 = float(data['price'])
    r2 = str(stock_symbol) + ' 的当前价格为 ' + str(r1)
    content = now + '\n' + r2
    itchat.send(content, toUserName='filehelper')
    print(content)
    # 设置预警价格并发送预警信息
    if r1 <= float(price_low):
        itchat.send('低于最低预警价格', toUserName='filehelper')
        print('低于最低预警价格')
    elif r1 >= float(price_high):
        itchat.send('高于最高预警价格', toUserName='filehelper')
        print('高于最高预警价格')
    else:
        itchat.send('价格正常', toUserName='filehelper')
        print('价格正常')
# 每 3 秒循环执行
if __name__ == '__main__':
    login()
    while True:   
        try:   
            stock()
            time.sleep(3)
        except KeyboardInterrupt:
            itchat.send('Stock_WeChat 已执行完毕!\n'
                '更多有意思的小玩意,请戳---->\n'
                '[https://github.com/ipreacher/tricks]', 
                toUserName='filehelper')
            print('Stock_WeChat 已执行完毕!\n'
                '更多有意思的小玩意,请戳---->\n'
                '[https://github.com/ipreacher/tricks]')
            break

最后一段实现的,是每 3 秒循环执行上面这个微信股价提示——其实我还写了一个可以定时循环执行的脚本,但实际执行的时候发现这个脚本开销大,而且并不稳定。这个测试版的脚本在这里:Stock_WeChat_timer.py,欢迎大家提供改进意见。

实际上大家可以稍微修改一下代码,使得其只在超出预警价位的时候才发送提示,而不是像我这样每 3 秒就推送一次。

待解决问题

这里其实还是有不少东西没有完善:

拓展前景

目前尚未看到有类似功能的东西(也可能只是我自己没看到过),其实上面这个脚本做一个 GUI 出来,应该是有实用前景的。

理论上说,只要是 tushare 能搞得到的数据,都可以通过 itChat 设置微信提示,我想甚至可以是在 Terminal 里将数据可视化,然后推送给微信端。也就是说,理论上完全可以定制自己的微信股价提示,而且是功能极其强大的定制提示。

tricks

源代码在这里:tricks/Stock_WeChat at master · ipreacher/tricks · GitHub

更多有意思的小玩意,请戳—->[ipreacher/tricks: 一些 Python 方面的小东西]

(Photo credit:USDCAD 2016/10/31)