有时候我们做股票投资,需要实时盯盘。而盯盘的任务我们完全可以交给计算机,因此当信号出现的时候知会自个是很有必要的,但是前提是获取实时数据并判断是否发送短信提醒,这块作者在网上找了一写资料,算是留个记录,方便日后用到。
1、qcloudsms_py发送短信
作者购买了腾讯云的短信服务,大概买了1000条短信,腾讯云发送短信要用其提供的qcloudsms发送短信,所以我们就用pip或者idea自带的包管理工具都可以安装,这块我们主要贴一下发送短信的代码。
代码语言:javascript复制from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError
import ssl
# 发送短信
class Qsms:
# 短信应用SDK AppID
appid = ******** # SDK AppID是1400开头
# 短信应用SDK AppKey
appkey = "********"
# 需要发送短信的手机号码
default_phone = ["******"]
# 短信模板ID,需要在短信应用中申请
template_id = 123123
# 签名
sms_sign = "*****"
# 发送短信
def sendSms(self, phones, code, price, operation):
ssl._create_default_https_context = ssl._create_unverified_context
ssender = SmsSingleSender(self.appid, self.appkey)
# 当模板没有参数时,`params = []`
params = []
params.append(code)
params.append(price "-" operation)
if phones == None or phones == "":
phonesTemp = self.default_phone
else:
phonesTemp = phones.split(",")
for item in phonesTemp:
try:
# 签名参数不允许为空串
ssender.send_with_param(86, item, self.template_id, params, sign=self.sms_sign, extend="", ext="")
print("send to:" item)
except HTTPError as e:
print(e)
except Exception as e:
print(e)
Qsms().sendSms("11111111","000009.sz","15.56","buy")
我们看一下发送短信的效果吧,这块作者购买了小米手环,方便提醒,由于短信模板的审核比较难,所以作者采用直接采用了登陆的模板,能看懂即可。
2、easyquotation实时获取股票数据
作者找了小半天,首先想到的是解析html,然后发现页面渲染是异步。没办法找到了东方财富web网站的一个ajax接口,如获至宝呀,结果发现请求的ur中有加密串,所以是没办法用到额,github上一顿搜都不好使。无奈最后去知乎上一搜,发现了easyquotation这个工具。尝试了一下发现这才是yyds呀。而且这个工具获取股票数据的姿势很强,能够弥补之前我遍历获取全网股票数据的耗时问题,当然这个还有待探索。今天发现easyquotation提供获取实时股票价格的能力,这才是我今天的核心目标。顺手还发现了一个开源交易工具easytrader(https://github.com/shidenggui/easytrader)看起来可以直接自动化交易了,以后有机会了再尝试吧。这块主要介绍如何获取实时股票数据。
easyquotation提供sina和tencent的财经数据源。通过对比发现tencent的数据返回了我必须要用到的换手率,为我大腾讯打call!废话不说了,直接上代码吧~
easyquotation的安装也是比较容易的,用pip或者idea自带的包管理工具都可以安装。
代码语言:javascript复制import easyquotation
# 建议用tencet,因为其返回完了touver字段
quotation = easyquotation.use('tencent') # 新浪 ['sina'] 腾讯 ['tencent', 'qq']
#单只股票
b=quotation.real('sz000009') # 支持直接指定前缀,如 'sh000001'
print(b)
#多只股票
c=quotation.stocks(['sz000009', '162411'])
print(c)
应该说所需要的数据tencet都给我们提供了,再此感谢小马哥~
本次文章就写到这里了~