最近玩起了股票,但是由于要上班,没办法实时盯盘,有时候比较忙也没办法做到每个交易日都挂单,因此突发奇想自己搞了个python程序来实时盯盘,有什么风声邮件接收即可,废话不多说直接上代码:
环境需求:Window、Linux都可以,需要安装python3环境。
from typing import Dict
import efinance as ef
import pandas as pd
import time
from datetime import datetime
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# 网易163邮件SMTP服务
mail_host = "smtp.163.com" # SMTP服务器
mail_user = "XXXXXXXXXXX@163.com" # 输入你的邮箱用户名
mail_pass = "XXXXXXXXXXXXXXXX" # 163授权密码,非登录密码
sender = 'XXXXXXXXXXX@163.com' # 发件人邮箱,与mail_user一致
receivers = ['XXXXXXX @qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
title = '股票监控买卖提示' # 这里定义邮件主题
def sendEmail(content):
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
# 获取股票价格并发邮件
while True:
#df = ef.stock.get_quote_history('002415', klt=1)
df = ef.stock.get_realtime_quotes()
#DF转化为列表
list1 = df.values.tolist()
for num1 in list1:
#海康威视
if num1[0] == '002415':
temp1=float(num11[3])
if temp1<=32.5:
content1 = '当前海康威视的价格是:'+str(temp1) +',已达到买点,抄底啊!'
print(content11)
sendEmail(content11)
elif temp1 >=50:
content1 ='当前海康威视的价格是:'+ str(temp1) +',已达到卖点,赶紧抛!'
print(content1)
sendEmail(content1)
else:
print('当前海康威视的价格是:' + str(temp1) +'耐心观察ing')
print("================================")
time.sleep(60)
演示效果,运行程序。
收到邮件提醒
搞定,无尽无休,又到6点,落班!