新年伊始,国家鼓励居民资产配置像权益类资产转移。首个交易日新发基金一日售罄,大量资金进入二级市场。本韭菜也不甘寂寞,再次进入股市为国接盘。
由于一直盯盘太浪费精力,所以想着通过Python来监控股价波动,并在触发阈值时微信通知我。
本来是考虑通过一些量化平台实现的,但是觉得打开量化平台(比如优矿)还是比较麻烦,还不如直接打开网站看,而且简单看了一下,量化平台主要是为了开发量化策略,主要是利用历史数据进行回测,获取实时数据相对比较麻烦。
经过调研还是选择了tushare进行财经数据的获取,优点是教程简单明了,而且接口丰富,使用简单,安装方便。更重要的tushare pro的使用需要注册并获取积分,而学生可以免费获取2000积分,足够我们使用了。
注册链接:https://tushare.pro/register?reg=415230
接口文档如下
接下来介绍我自己写的Python例程
df = ts.get_realtime_quotes(code)
e = df[['code','name','price','time']]
p = df[u'price']
print (e)
tushare提供的接口get_realtime_quotes可以得到某只股票的实时股价以及买卖盘。输出参数列表如下:
# 0:name,股票名字
# 1:open,今日开盘价
# 2:pre_close,昨日收盘价
# 3:price,当前价格
# 4:high,今日最高价
# 5:low,今日最低价
# 6:bid,竞买价,即“买一”报价
# 7:ask,竞卖价,即“卖一”报价
# 8:volume,成交量 maybe you need do volume/100
# 9:amount,成交金额(元 CNY)
# 10:b1_v,委买一(笔数 bid volume)
# 11:b1_p,委买一(价格 bid price)
# 12:b2_v,“买二”
# 13:b2_p,“买二”
# 14:b3_v,“买三”
# 15:b3_p,“买三”
# 16:b4_v,“买四”
# 17:b4_p,“买四”
# 18:b5_v,“买五”
# 19:b5_p,“买五”
# 20:a1_v,委卖一(笔数 ask volume)
# 21:a1_p,委卖一(价格 ask price)
# …
# 30:date,日期;
# 31:time,时间;
整个程序的逻辑是用户自定义想要监控的股票代码 以及 设置是否开盘标志位(如果已经开盘就以当前实时价格作为初始价格,如果未开盘就以开盘价作为初始价格)
stocks_pool = ['601012','002460']
token = 'ec11b2ae74dc7de2ec18xxxxxxxxxxxxxxxxxxxxxd6dd9cfb9d9391'
rate = 0.2
b_open = True
token是有tushare提供的标志用户身份的信息,需要注册tushare账户获得。注册链接看上文。
然后通过while循环检测每只股票的实时价格是否突破了初始价格的2%波动值
如果突破了就想qq邮箱发送邮件,因为qq邮箱可以绑定微信账号,所以变相实现微信通知的功能。
如果没有突破就继续检测。
b_run = Truewhile b_run:for stock in code:time.sleep(2)up_threshold = ref[stock]*(1+rate)down_threshold = ref[stock]*(1-rate)if check2(stock, down_threshold, up_threshold):time.sleep(2)print('have noticed you by wechat!')b_run = False
if float(p[0]) > high or float(p[0]) < low:user = 'xxxxxx@163.com' # 发件人,这里为163邮箱了pwd = '' # 163邮箱的SMTP授权码to = '51111111111@qq.com' # 可以设置多个收件人,英文逗号隔开,如:'***@qq.com, ***@163.com'# 1.邮件正文内容msg = MIMEText('股票价格达到设定的价格')# 2.设置邮件主题、发件人、收件人msg['Subject'] = '股票价格达到设定的价格!'msg['From'] = usermsg['To'] = to# 3.发送邮件s = smtplib.SMTP_SSL('smtp.163.com', 465) # 选择163邮箱服务,默认端口为465s.login(user, pwd) # 登录163邮箱s.send_message(msg) # 发送邮件s.quit()return Trueelse :return False
完整代码有需要可以私信我。私信我的人太多,我上传到了csdn(https://download.csdn.net/download/jerryzhai26/14141857),代码需要自行配置Python开发环境以及pip install tushare