# 3.1版:更改了获取数据的url,精简了代码
# 可根据需要自行增加股票池,可针对不同股票池设置对应警报范围进行监控
# 股票监控报警系统-for Tencent
# 可设置股票池监控多支股票,可根据涨幅范围自动报警
import requests
from bs4 import BeautifulSoup
import win32api,win32con
import re
import time
import sys
class stock:
def star(self):
# 无限循环监控,直到警报拉起
while True:
ID = [id_0, id_1,id_2,id_3]
message = []
show=[]
for i in ID:
for id in i:
try:
url = 'http://sqt.gtimg.cn/utf8/q=' + id
respon = requests.get(url)
respon.encoding = "utf-8"
stock_info = respon.text.split("~")
# print(stock_info)
stock_name = stock_info[1] #股票名称
realtime_price = stock_info[3] #股票现价
zhangdie_price = "%.2f"%(float(stock_info[3]) - float(stock_info[4])) #股票涨跌价格
zhangdie_percent = stock_info[32] #股票涨跌%
# print(zhangdie_percent)
except Exception as a:
print('Exception:',a)
if stock_name == "上证指数" or stock_name == "深证成指" or stock_name == "创业板指":
show.append( '\033[1;31m'+ stock_name + ' ' + realtime_price + ' ' + zhangdie_price + ' ' + zhangdie_percent + "%" +'\033[0m')
else:
show.append('\033[1;34m' + stock_name+' '+ realtime_price+' '+zhangdie_price+' '+ zhangdie_percent+"%" +'\033[0m')
if id in id_0:
if float(zhangdie_percent)>set_range_a[0] or float(zhangdie_percent)<=set_range_a[1] :
message.append(time.strftime('%Y-%m-%d %H:%M:%S'))
message.append("\n%s:\n最新价:%s 涨跌额:%s 涨跌幅:%s \n " % (stock_name,realtime_price, zhangdie_price,zhangdie_percent+"%"))
continue
elif id in id_1:
if float(zhangdie_percent)>set_range_b[0] or float(zhangdie_percent)<=set_range_b[1] :
message.append(time.strftime('%Y-%m-%d %H:%M:%S'))
message.append("\n%s:\n最新价:%s 涨跌额:%s 涨跌幅:%s \n" % (stock_name,realtime_price, zhangdie_price,zhangdie_percent+"%"))
elif id in id_2:
if float(zhangdie_percent) > set_range_c[0] or float(zhangdie_percent) <= set_range_c[1]:
message.append(time.strftime('%Y-%m-%d %H:%M:%S'))
message.append("\n%s:\n最新价:%s 涨跌额:%s 涨跌幅:%s \n" % (stock_name, realtime_price, zhangdie_price, zhangdie_percent+"%"))
elif id in id_3:
if float(zhangdie_percent) > set_range_d[0] or float(zhangdie_percent) <= set_range_d[1]:
message.append(time.strftime('%Y-%m-%d %H:%M:%S'))
message.append("\n%s:\n最新价:%s 涨跌额:%s 涨跌幅:%s \n" % (
stock_name, realtime_price, zhangdie_price, zhangdie_percent + "%"))
if message !=[]:
# print('--------------------------------------')
message=''.join(message)
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print('股票名称 当前价 涨跌价 涨跌幅 ')
for n in show:
print(n)
win32api.MessageBox(0,message,'股价警报系统3.0-按涨跌幅超过设定范围查询:' , win32con.MB_OK)
sys.exit()
else:
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print('股票名称 当前价 涨跌价 涨跌幅 ')
for n in show:
print(n)
print('--------------------------------------')
# 闹钟
if time.strftime('%Y-%m-%d %H:%M:%S') >= clock_settime:
win32api.MessageBox(0, "闹钟响了!\n%s"%clock_settime, '闹钟', win32con.MB_OK)
sys.exit()
time.sleep(3)
# 股票池:
dict={
"上证大盘":"sh000001","深圳成指":"sz399001","创业板指":"sz399006","北方稀土":"sh600111",
"晨曦航空":"sz300581","西部牧业":"sz300106","中远海控":"sh601919","士兰微":"sh600460",
"润禾材料":"sz300727","广发证券":"sz000776",
}
# 设置警报范围-涨跌幅:range[0]~range[1]
id_0=[dict["上证大盘"],dict["深圳成指"],dict["创业板指"] ] #大盘
id_1=[dict["润禾材料"],] #普通1组
id_2=[dict["西部牧业"],] #普通2组
id_3=[dict["士兰微"],] #普通3组
set_range_a=[2,-1]
set_range_b=[5,-6]
set_range_c=[5,-4]
set_range_d=[5,-3]
# 闹钟时间
clock_settime = "2023-11-29 14:45:00"
stock=stock()
stock.star()
按股票涨跌幅设置报警范围,运行后效果如下: