基于Python3 的 简单股票 可转债 提醒逻辑

概述

通过本地的定时轮训,结合本地建议数据库。检查股票可转债价格的同事,进行策略化提醒

详细

前言

为什么会有这么个东西出来呢,主要是因为炒股软件虽然有推送,但是设置了价格之后,看到推送也未必那么及时,毕竟正常的超贵软件推送是很多的。所以我们利用简单的接口,来实现跟踪几个特别在意的股票,再进行简单的策略定制,用发邮件的方式提醒,毕竟。。一般人是不会有太多邮件进来的。会比较重视

详细

一. Shares

简介

Shares 接口


如上图所示,我们的 Shares 功能主要有

  1. 初始化
  2. 创建相关的用户数据库 createUserDB
  3. 创建股票数据库 createSharesDB
  4. 登录一个用户,用户名就是要接受邮件的邮箱 createUser,这个方法的返回值,就是当前用户的 uid。其他接口要用到这个参数
  5. 购买股票
  6. 卖出股票
  7. 检查接口,会定时触发(这里,可以根据用户自己的需求,进行价格触发策略上的定制)
  8. 获取股票/可转债信息的接口

这里因为需求对数据库的要求很低,所以直接使用了最简单 Sqlite3 ,是不需要额外设置什么东西,就会在脚本的同级目录产生一个名为 testShares.sqlite 的数据库文件。可见最下方运行的效果图

检查接口设置

 

    ret = self.cursor.execute("select code,uid,averagePrice,targetReturn,allowEmail,lastSendEmailTime from shares").fetchall()if len(ret) > 0:codeArray = []for temp in ret:code = temp[0]codeArray.append(code)messageDict = {}codeInfoDict = self.getShareInfo(codeArray)for temp in ret:code = temp[0]uid = temp[1]avaPrice = temp[2]targetReturn = temp[3]allowEmail = temp[4]lastSendEmailTime = temp[5]if allowEmail < 1:continueinfo = codeInfoDict[code]# print(info)name = info[1]newPrice = info[2]message = ""if newPrice < avaPrice*0.95:message = "请注意加仓 "+name+str(code)+"\n现价相对持仓成本 跌幅已经超过 5%"elif newPrice > avaPrice*(1+targetReturn):message = "请注意止盈 "+name + \str(code)+"\n现价已经打到目标收益"+" 当前收益率" + \str((newPrice-avaPrice)/avaPrice)

使用方法

    s = Shares()# 创建用户 用来接收提醒邮件的邮箱uid = s.createUser("12345678@qq.com")print("uid",uid)# 由于每次运行,都会根据 buy 和 sell 接口,操作本地的数据库。所以,在运行过一次之后,请自行把已经记录下来的 buy 和 sell 操作注释掉,以免影响 check  函数的运行# buy# 记录当前用户买入 128062 亚药转债 ,价格 96.8 20 股s.buyShares(uid,"128062",96.8,20) # 亚药转债# sell# 记录当前用户卖出 10 股 128062s.sellShares(uid,"128062", 10)

二. EmailSender

一个用来发送邮件的类,需要进行配置STMP服务,我们以 QQ邮箱为例。获取STMP服务的授权码
登录完成后,点击 设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
帮助系统

其他类型的邮箱也是差不多的操作,不再赘述。

使用

    content = '''崔东山玩笑道:“陪了你这么久的小铜板儿、小碎银子和神仙钱,你舍得它们离开你的香囊小窝儿?这么一离别分开,可能就这辈子都再也见不着它们面儿了,不心疼?不伤心?”'''# 设置发件人邮箱地址EmailSender.sender = "" # 邮箱的 smtp 授权码EmailSender.pwd = ""# 设置 要发送邮件的 标题,文本正文,收件人地址列表ret = EmailSender().sendEmail("第六百零一章 裴钱的小钱袋子", content,["******@qq.com"])

三. 运行

要正常运行 Demo,需要正常配置好 邮箱名授权码(虽然不配置邮箱也能运行,但是不会有提醒的邮件发出去)。至少记录买入一只可转债/股票。然后运行 autoSharesAdvice.py 文件即可

下面是一个以 128062 亚药转债,进行的测试,出于隐私考虑,并没有设置邮箱和授权码,还请谅解。

    s = Shares()# 创建用户 用来接收提醒邮件的邮箱uid = s.createUser("11111111test@qq.com")print("uid",uid)# buys.buyShares(uid,"128062",96.832,20) # 亚药转债# 开盘时间内每 1 min 检查一次while True:timeF = float(time.strftime("%H.%M"))print("time ", timeF)if 9.25 < timeF < 11.31 or 13.00 <= timeF <= 15.00:s.check()time.sleep(60)

设置完成之后,执行 python3 autoSharesAdvice.py

 

效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/83994.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud学习笔记(四)_ZooKeeper注册中心

基于Spring Cloud实现服务的发布与调用。而在18年7月份&#xff0c;Eureka2.0宣布停更了&#xff0c;将不再进行开发&#xff0c;所以对于公司技术选型来说&#xff0c;可能会换用其他方案做注册中心。本章学习便是使用ZooKeeper作为注册中心。 本章使用的zookeeper版本是 3.6…

Ansible 自动化安装软件

例子如下&#xff1a; 创建一个名为/ansible/package.yml 的 playbook : 将 php 和 mariadb 软件包安装到 dev、test 和 prod 主机组中的主机上 将 RPM Development Tools 软件包组安装到 dev 主机组中的主机上 将 dev 主机组中主机上的所有软件包更新为最新版本 --- - name:…

Python自动化测试代理程序可用性

在网络爬虫和数据采集过程中&#xff0c;代理服务器扮演着重要的角色。然而&#xff0c;代理服务器的可用性经常会受到影响&#xff0c;给爬虫工作带来一定的挑战。本文将介绍如何使用Python自动化测试代理程序的可用性&#xff0c;为您提供具备实际操作价值的解决方案。让我们…

【业务功能篇83】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-应用层实战

五、ElasticSearch应用 1.ES 的Java API两种方式 Elasticsearch 的API 分为 REST Client API&#xff08;http请求形式&#xff09;以及 transportClient API两种。相比来说transportClient API效率更高&#xff0c;transportClient 是通过Elasticsearch内部RPC的形式进行请求…

Maven的超级POM

对于我们创建的一个maven工程&#xff0c;即便我们自己的pom.xm文件中没有明确指定一个父工程&#xff08;父POM&#xff09;&#xff0c;其实也默认继承了超级POM&#xff0c;就好比JAVA类继承Object类一样。 maven官网关于超级POM的介绍&#xff1a; https://maven.apache.o…

咸鱼之王俱乐部网站开发

我的俱乐部 最新兑换码 *注意区分大小写&#xff0c;中间不能有空格&#xff01; APP666 HAPPY666 QQ888 QQXY888 vip666 VIP666 XY888 app666 bdvip666 douyin666 douyin777 douyin888 happy666 huhushengwei888 taptap666 周活动 宝箱周 宝箱说明 1.木质宝箱开启1个…

大数据 算法

什么是大数据 大数据是指数据量巨大、类型繁多、处理速度快的数据集合。这些数据集合通常包括结构化数据&#xff08;如数据库中的表格数据&#xff09;、半结构化数据&#xff08;如XML文件&#xff09;和非结构化数据&#xff08;如文本、音频和视频文件&#xff09;。大数据…

mysql-sql性能分析工具

一、sql执行频率 MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令&#xff0c;可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次&#xff1a; -- session 是查看当前会话 ; -- global 是查询全…

Adobe Media Encoder软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Adobe Media Encoder是一款由Adobe公司开发的视频和音频后期制作软件&#xff0c;它集成了多种编码格式和输出选项&#xff0c;可以帮助用户将视频和音频文件转换成适合各种用途的格式。该软件可以与Adobe Premiere Pro、After …

stm32读写片内flash项目总结(多字节读写tongxindu)

1.flash操作驱动程序 a头文件 #ifndef FLASH_H #define FLASH_H #include “stm32f4xx.h” #define BOARD_NUM_ADDR 0x0800C000 #define STM32_FLASH_BASE 0x08000000 //STM32 FLASH的起始地址 #define FLASH_WAITETIME 50000 //FLASH等待超时时间 //FLASH 扇区的起始地址…

excel中如果A列中某项有多条记录,针对A列中相同的项,将B列值进行相加合并统计

excel中如果A列中某项有多条记录&#xff0c;针对A列中相同的项&#xff0c;将B列值进行相加合并统计。注意&#xff1a;B列的数据类型要为数字 如&#xff1a; 实现方法&#xff1a; C1、D1中分别输入公式&#xff0c;然后下拉 IF(COUNTIF($A$1:A1,A1)1, A1,"") …

层叠上下文、层叠顺序

原文合集地址如下&#xff0c;有需要的朋友可以关注 本文地址 什么是层叠上下文 层叠上下文&#xff08;Stacking Context&#xff09;是指在 HTML 和 CSS 中&#xff0c;用于控制和管理元素层叠顺序以及呈现的一种机制。在一个网页中&#xff0c;许多元素&#xff08;例如文…