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

概述

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

详细

前言

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

详细

一. Shares

简介

基于Python3 的 简单股票 可转债 提醒逻辑_第1张图片


如上图所示,我们的 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:
                            continue
                        info = 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("[email protected]")
    print("uid",uid)
    # 由于每次运行,都会根据 buy 和 sell 接口,操作本地的数据库。所以,在运行过一次之后,请自行把已经记录下来的 buy 和 sell 操作注释掉,以免影响 check  函数的运行
    # buy
    # 记录当前用户买入 128062 亚药转债 ,价格 96.8 20 股
    s.buyShares(uid,"128062",96.8,20) # 亚药转债
    # sell
    # 记录当前用户卖出 10 股 128062
    s.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("[email protected]")
    print("uid",uid)
    # buy
    s.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

 

基于Python3 的 简单股票 可转债 提醒逻辑_第2张图片

你可能感兴趣的:(大数据,oracle,数据库)