如何用Python玩转比特币?(附源码)

    技术2026-08-04  25

    本文作者: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万开发者关注。

    欢迎扫码关注

    Processed: 0.047, SQL: 9