社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用 Python 创建一个比特币价格预警应用

Python中文社区 • 3 年前 • 668 次点击  


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     send_email()
    print('将在3分钟后再次检查,按 Ctrl + C 退出!')

    time.sleep(180)
  else:
    time.sleep(300)
    print('比特币当前价格是' + str(bitcoin_rate) + '。将在5分钟后再次检查,按 Ctrl + C 退出!')

总结

本文用 Python 创建了一个发送比特币价格预警邮件的程序,后面可以对该程序进行一些改进:

  • 用HTML和CSS装饰电子邮件

  • 更改时间间隔

  • 添加其他数字货币币种并设置预警

  • 当发送邮件文本时发出报警声音


推荐阅读:

2020Python招聘内推渠道开启啦!

老司机教你5分钟读懂Python装饰器

用Python实现粒子群算法

抄底美股?用Python分析美股实际收益率


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62449
 
668 次点击