使用Python写一个量化股票提醒系统
作者:菜鸟学Python 发布时间:2022-04-19 14:35:42
大家在没有阅读本文之前先看下python的基本概念,
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python由Guido van Rossum于 * 底发明,第一个公开发行版发行于1991年。
像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议。
本文是小兵使用万能的Python写一个量化股票系统!下面是一个小马的迷你量化系统。
这个小迷小量化系统,麻雀虽小但是五脏俱全,我们今天先从实时提醒这个模块做起,提醒系统分下面几个部分:
实时获取股票数据
连接邮件服务器
预警配置管理
监控数据并发送邮件
希望通过实时提醒,来提高交易的收益率,试试看,万一有用呢,反正写代码对码农来说,so easy!
01.
实时获取股票价格
为了更准确的获取股票的价格,我们这里用比较有名的金融库tushare来获取,里面封装了大量的股票的数据Api,非常好用!
1).首先设计一个stock类,这个类第一件大事:
查询股票的实时价格和k线数据比如(5min,15min),然后把数据返回出来,为了提高效率,我们肯定是用并发出来,所以start_run函数会成为一个线程函数
2).第二件大事:
我们获取的实时的数据,需要传递给外边的模块调用,子线程和主线程间通信的话,最简单的方法用queue来搞定,所以我们stock类会init里面传入一个queue
3).控制线程:
这个stock我们希望外边能控制它的运行和停止,在stock类的入口,我们加入了一个_terminal变量
4).神奇的tushare库
利用tushare这个神奇的API,构造两个类函数分布query_stock_real_price和get_kline_data获取数据:
def query_stock_real_price(self):
df = ts.get_realtime_quotes(self.stock_num)
df=df[['price','time']]
price=df['price'].values[0]
time=df['time'].values[0]
return price,time
def get_kline_data(self, ktype='ma5'):
today=datetime.now().strftime('%Y-%m-%d')
df = ts.get_hist_data(self.stock_num, start='2018-08-08', end=today)
return (df[[ktype]])
02.
邮件系统
简单实时提醒系统,我们用邮件,比如你的qq邮箱,是可以实时的收到一些邮件提醒的信息,我们这里用Python自带的 SMTP和EMAIL模块处理:
1). 连接邮件服务器
为了方便扩展和复用,也用一个类来封装邮件server!构造一些邮件服务器的地址和密码,然后连接就可以了,非常简单。
2).构造邮件内容
服务器连接好了,之后我们需要发送邮件,需要写一个邮件标题和内容,比如 xx股票,现在价格多少之类的。
1).为了更好的封装数据,用类装饰器对titel和content进行封装,这样外边无法直接访问这两块内容。
2).mail类会初始化一些信息,比如要发送到邮件地址,而且要把前面构造好的SMTP服务器对象传进来,方便发送邮件。
3).初始化一个MIMEText对象,填充一些邮件的内容比如from,to,subject等等。为了有时间性,我们在邮件的开头加一个时间戳。
03.
预警系统
我们需要有一个配置文件,里面不停的修改我们对股票的价格的设置, 比如到了你的止损或者止盈的位置,或者到了你的一些量化策略的地方 ,需要提醒你注意等等。这里我们只是简单的说明,只写最大和最小的股价预警,示例一下:
setting 文件:
{
"high_price": 15,
"low_price": 10
}
1).死循环监控数据
我们启动一个线程,用一个死循环来不停的从队列里面获取股票的数据,然后进行一些监听的逻辑判断,先看一下核心代码:
因为股票有交易时间,我们这里简单粗暴的让程序只在交易时间运行,当然如果要把程序放在远端服务器上的话,需要进一步优化,不然每一天都要启动一下!
死循环里面会不停的读区预警 设置里面的股价的涨到多少最高价和最低价 ,一旦触达这个价格,立刻发送邮件提醒!
写了这么久,看一下效果吧:
好了,上面是 一个简单的股票实时提醒程序 ,利用了一些Python自带的邮件库和一个金融库,算是一个综合小练习!
总结
以上所述是小编给大家介绍的使用Python写一个量化股票提醒系统网站的支持!
来源:https://ask.hellobi.com/blog/caoniao_xueyuan/15440
猜你喜欢
- ASPJPEG组件是Persits出品的共享软件,试用期为30天,您可以在这里下载:http://www.persits.com/aspjp
- 通过百度云API接口抽取得到产品评论的观点,也掠去了很多评论中无用的内容以及符号,为后续进行文本主题挖掘或者规则的提取提供基础。工具 1、百
- 一、tooltip(提示框) 源码文件: Tooltip.jsTooltip.scss实现原理: 1、获取当前
- 在处理css的机制上,IE总是有很多让人吐血的举动,但对于他们现在的改进力度还是值得高兴的。就拿对伪类:hover的支持来说,IE7+终于添
- 与抓取预定义好的页面集合不同,抓取一个网站的所有内链会带来一个 挑战,即你不知道会获得什么。好在有几种基本的方法可以识别页面类型。通过URL
- 摘要:在本篇博客中,我们将介绍如何在YOLOv5车牌识别的基础上进一步实现字符分割与识别。我们将详细介绍字符分割方法,如投影法和轮廓法,以及
- 前言上一篇博客我们知道的Mysql事务的隔离机制和实现,以及锁的详细解析链接: MySQL脏读幻读不可重复读及事务的隔离级别和MVCC、LB
- 本文实例讲一下如何用thinkphp实现数据的删除和批量删除吧。预期效果图: 原谅博主对照片的处理是如此的草率吧。。。仍然是 通过
- 本文为大家分享了mysql 8.0.20 winx64安装配置方法,记录如下。MySQL官网:链接直接点击链接也可以下载:mysql 8.0
- 爬取”顶点小说网“《纯阳剑尊》代码import requestsfrom bs4 import BeautifulSoup# 反爬heade
- 在Internet上我们每天都会遇到数不清的表单,也看到其中大部分并没有限制用户多次提交同一个表单。缺乏这种限制有时候会产生某些预料不到的结
- 工具与图书馆Python-3.xCV2-4.5.2矮胖-1.20.3人脸识别-1.3.0若要安装上述软件包,请使用以下命令。pip inst
- 改变conda虚拟环境的默认路径conda环境默认安装在用户目录C:\Users\username.conda\envs下,如果选择默认路径
- Flask 本身相当于一个内核,比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库
- 安装环境:CentOS7 64位 MINI版,安装MySQL5.71、配置YUM源在MySQL官网中下载YUM源rpm安装包:http://
- 本文实例讲述了Python实现两个list求交集,并集,差集的方法。分享给大家供大家参考,具体如下:在python中,数组可以用list来表
- springboot数据库查询时出现的时区差异最近项目中使用到多数据源将MySQL库中的数据迁移到mongo库中,发现取出后的数据与原数据时
- PyCharm IDE 窗口布局PyCharm 调试代码实例(这里我以自己的代码为例)__author__ =&nbs
- kali中angr的安装方式在Linux中安装各种依赖python的软件时,最头疼的问题之一就是各个软件的python版本不匹配的问题,an
- 自动依赖注入在 AbpBase.Web 的 AbpBaseWebModule 中,添加一个函数:此函