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

本文作者:Python中文社区,它作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、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中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

如何用Python玩转比特币?(附源码)_第1张图片

欢迎扫码关注

你可能感兴趣的:(如何用Python玩转比特币?(附源码))