本文作者:Python中文社区,它作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。
---正文---
4月30日比特币价格持续上涨,突破9400美元关口,24小时涨幅17.42%。比特币在2020年年内实现了26.33%的上涨,年初至今涨幅已超过黄金。事实上,自“312”大跌后,比特币的价格上涨了130%以上,价格回升远远超过了美股道琼斯工业平均指数(Dow)。
当比特币价格下跌时,需要收到价格提醒以便进行买多操作,下面我们来创建的一个简单的 Python 应用程序来实现这一功能,当该应用程序的比特币价格低于指定数量时,会向您发送一封比特币价格预警电子邮件。
在本教程中,您将学习:
用 Python 发送电子邮件
从 coinbase 交易所 API 中提取数据
用 Python 在终端中隐藏密码
在Time模块中使用超时功能
应用程序概述
1、要求您输入以下内容:姓名,电子邮件地址(仅gmail),密码,向其发送警报的电子邮件地址,以及要被预警的比特币价格。
2、接下来,它将检查Coinbase API的当前价格(每分钟更新一次)。
3、如果不低于您指定的价格,它将在5分钟内再次检查。
4、如果它低于您指定的价格,它将向您发送电子邮件警报,并在3分钟内再次检查。
代码实现原理
您必须在Google设置中允许使用不太安全的应用。只需将此功能设置为“开”。如果您有使用双重验证,则无法执行此操作。
现在开始,首先插入一些必需的 Python 模块:
requests – 获取 API 数据
time – 设置5分钟超时功能
email.mime & smtplib – 发送邮件
getpass – 输入密码时将其隐藏
import requests import time from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import getpass接下来,我们创建一个名为send_email()的函数来发送电子邮件,每个部分都有注释说明:
def send_email(): # 创建消息对象实例 msg = MIMEMultipart() # 消息的参数 password = your_password msg['From'] = your_email msg['To'] = send_email_to msg['Subject'] = "比特币价格预警!" # 邮件信息 message = your_name + "\n比特币价格现在是" + str(bitcoin_rate) + "!请执行加仓操作!\n" # 从前面的变量中添加消息 msg.attach(MIMEText(message, 'plain')) # 创建 gmail server server = smtplib.SMTP('smtp.gmail.com: 587') server.starttls() # 发送邮件的登录信息 server.login(msg['From'], password) # 发送消息 server.sendmail(msg['From'], msg['To'], message) server.quit() # 打印到控制台 print("成功发送邮件给%s:" % (msg['To'])) print("比特币价格为" + str(bitcoin_rate))接下来,我们创建用户输入以获取预期数据并将其保存到适当的变量中。
# 用户输入 your_name = input('输入您的名字: ') your_email = input('输入您的服务器邮件地址 (仅gmail): ') your_password = getpass.getpass() send_email_to = input('输入您发送的邮件地址: ') alert_amount = input('当比特币价格低于多少时执行预警: ')然后,我们可以创建一个while循环,它将进行以下操作:
1.检查当前的比特币价格。
2.如果超出您指定的价格,它将在5分钟后再次检查。
3.如果它低于您指定的价格,它将运行程序发送电子邮件并在3分钟内再次检查。
while True: url = "https://api.coindesk.com/v1/bpi/currentprice.json" response = requests.get( url, headers={"Accept": "application/json"}, ) data = response.json() bpi = data['bpi'] USD = bpi['USD'] bitcoin_rate = int(USD['rate_float']) if bitcoin_rate < int(alert_amount): send_email() print('将在3分钟后再次检查,按 Ctrl + C 退出!') time.sleep(180) else: time.sleep(300) print('比特币当前价格是' + str(bitcoin_rate) + '。将在5分钟后再次检查,按 Ctrl + C 退出!')完整代码
import requests import time from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import getpass def send_email(): # 创建消息对象实例 msg = MIMEMultipart() # 消息的参数 password = your_password msg['From'] = your_email msg['To'] = send_email_to msg['Subject'] = "比特币价格预警!" # 邮件信息 message = your_name + "\n比特币价格现在是" + str(bitcoin_rate) + "!请执行加仓操作!\n" # 从前面的变量中添加消息 msg.attach(MIMEText(message, 'plain')) # 创建 gmail server server = smtplib.SMTP('smtp.gmail.com: 587') server.starttls() # 发送邮件的登录信息 server.login(msg['From'], password) # 发送消息 server.sendmail(msg['From'], msg['To'], message) server.quit() # 打印到控制台 print("成功发送邮件给%s:" % (msg['To'])) print("比特币价格为" + str(bitcoin_rate)) # 用户输入 your_name = input('输入您的名字: ') your_email = input('输入您的服务器邮件地址 (仅gmail): ') your_password = getpass.getpass() send_email_to = input('输入您发送的邮件地址: ') alert_amount = input('当比特币价格低于多少时执行预警: ') while True: url = "https://api.coindesk.com/v1/bpi/currentprice.json" response = requests.get( url, headers={"Accept": "application/json"}, ) data = response.json() bpi = data['bpi'] USD = bpi['USD'] bitcoin_rate = int(USD['rate_float']) if bitcoin_rate < int(alert_amount): send_email() print('将在3分钟后再次检查,按 Ctrl + C 退出!') time.sleep(180) else: time.sleep(300) print('比特币当前价格是' + str(bitcoin_rate) + '。将在5分钟后再次检查,按 Ctrl + C 退出!')总结
本文用 Python 创建了一个发送比特币价格预警邮件的程序,后面可以对该程序进行一些改进:
用HTML和CSS装饰电子邮件
更改时间间隔
添加其他数字货币币种并设置预警
当发送邮件文本时发出报警声音
给大家推荐一个优质社区 --- Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。
欢迎扫码关注
