如何用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萬開發者關注。

歡迎掃碼關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章