邮件提醒配置(需提前开启SMTP服务,如QQ邮箱/163邮箱)

admin1 2026-02-27 18:09

Python比特币价格自动提醒:实时掌握行情,不错过任何机会

在数字货币市场,比特币价格波动剧烈,短短几分钟内就可能上涨或下跌数个百分点,对于投资者而言,及时掌握价格变化至关重要——无论是抓住买入时机、把握卖出点,还是规避短期风险,手动刷新网页或APP显然效率太低。Python比特币价格自动提醒就成了高效解决方案:通过几行代码搭建自动化监控系统,让价格变动主动“通知”你,真正做到实时响应、决策先行。

为什么选择Python实现比特币价格提醒

Python作为当下最受欢迎的编程语言之一,凭借其简洁的语法、丰富的第三方库和强大的生态,成为自动化任务的首选工具,对于比特币价格监控场景,Python的优势尤为突出:

  • 数据获取便捷:通过requestsccxt等库,可轻松对接Coinbase、Binance、OKX等主流交易所API,或爬取财经网站数据;
  • 提醒方式灵活:支持邮件、短信、微信、Telegram、钉钉等多种通知渠道,满足不同使用习惯;
  • 自动化程度高:结合scheduleAPScheduler等库,可定时或实时触发监控,无需人工干预;
  • 扩展性强:可轻松集成技术指标分析(如MA、RSI)、价格突破检测等复杂逻辑,从“被动提醒”升级为“智能决策助手”。

实现步骤:从零搭建比特币价格提醒系统

第一步:环境准备

安装必要的Python库:

pip install requests schedule python-dotenv
  • requests:发送HTTP请求,获取价格数据;
  • schedule:定时任务调度(若需实时监控,可改用websockets库);
  • python-dotenv:管理API密钥等敏感信息,避免硬编码。

第二步:获取比特币价格数据

以Coinbase交易所为例,其公共API无需密钥即可获取实时价格,编写get_price.py

import requests
def get_btc_price():
    """获取比特币实时价格(USD)"""
    try:
        url = "https://api.coinbase.com/v2/prices/spot?currency=USD"
        response = requests.get(url, timeout=10)
        response.raise_for_status()  # 检查请求是否成功
        data = response.json()
        price = float(data['data']['amount'])
        return price
    except requests.RequestException as e:
        print(f"获取价格失败: {e}")
        return None
if __name__ == "__main__":
    current_price = get_btc_price()
    if current_price:
        print(f"当前比特币价格: ${current_price:,.2f}")

运行后,终端会输出类似“当前比特币价格: $43,256.78”的结果。

第三步:设置价格阈值与提醒逻辑

假设我们想在比特币价格上涨突破$45,000或下跌跌破$40,000时收到提醒,编写price_monitor.py

from get_price import get_btc_price
import smtplib
from email.mime.text import MIMEText
from dotenv import load_dotenv
import os
load_dotenv()  # 加载.env文件中的环境变量
EMAIL_SENDER = os.getenv("EMAIL_SENDER")  # 发件人邮箱
EMAIL_PASSWORD = os.getenv("EMAIL_PASSWORD")  # 邮箱授权码
EMAIL_RECEIVER = os.getenv("EMAIL_RECEIVER")  # 收件人邮箱
def send_email(subject, content):
    """发送邮件提醒"""
    try:
        msg = MIMEText(content, 'plain', 'utf-8')
        msg['Subject'] = subject
        msg['From'] = EMAIL_SENDER
        msg['To'] = EMAIL_RECEIVER
        server = smtplib.SMTP_SSL('smtp.qq.com', 465)  # 以QQ邮箱为例
        server.login(EMAIL_SENDER, EMAIL_PASSWORD)
        server.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.as_string())
        server.quit()
        print("邮件发送成功")
    except Exception as e:
        print(f"邮件发送失败: {e}")
def check_price():
    """检查价格并触发提醒"""
    price = get_btc_price()
    if not price:
        return
    high_threshold = 45000  # 上限阈值
    low_threshold = 40000   # 下限阈值
    if price > high_threshold:
        subject = "比特币价格上涨提醒!"
        content = f"当前价格: ${price:,.2f},已突破上限阈值 ${high_threshold:,},建议关注市场动态。"
        send_email(subject, content)
    elif price < low_threshold:
        subject = "比特币价格下跌提醒!"
        content = f"当前价格: ${price:,.2f},已跌破下限阈值 ${low_threshold:,},注意风险控制。"
        send_email(subject, content)
    else:
        print(f"当前价格 ${price:,.2f} 在阈值范围内,暂无提醒。")
if __name__ == "__main__":
    check_price()

注意.env文件中需配置邮箱信息(示例):

EMAIL_SENDER=your_email@qq.com
EMAIL_PASSWORD=your_smtp_authorization_code
EMAIL_RECEIVER=receiver_email@qq.com

第四步:定时或实时监控

方案1:定时监控(适合低频检查)

使用schedule库每5分钟检查一次价格:

import schedule
import time
def job():
    print(f"开始检查价格... {time.strftime('%Y-%m-%d %H:%M:%S')}")
    check_price()
# 每5分钟执行一次
schedule.every(5).minutes.do(job)
# 若需每天固定时间执行(如早上9点)
# schedule.every().day.at("09:00").do(job)
print("价格监控已启动,按Ctrl+C停止...")
while True:
    schedule.run_pending()
    time.sleep(1)

运行后,程序每5分钟自动检查价格,若突破阈值则发送邮件。

方案2:实时监控(适合高频响应)

交易所通常提供WebSocket接口,可实现实时推送价格,以ccxt库为例:

import ccxt
import time
def real_time_monitor():
    """实时监控比特币价格"""
    exchange = ccxt.coinbase()  # 初始化Coinbase交易所
    symbol = 'BTC/USD'          # 交易对
    while True:
        try:
            ticker = exchange.fetch_ticker(symbol)
            price = ticker['last']
            print(f"实时价格: ${price:,.2f} (时间: {time.strftime('%H:%M:%S')})")
            # 这里可添加价格判断逻辑(调用check_price函数)
            if price > 45000 or price < 40000:
                check_price()  # 触发提醒
            time.sleep(1)  # 1秒刷新一次
        except Exception as e:
            print(f"实时监控出错: {e}")
            time.sleep(5)  # 出错后等待5秒重试
if __name__ == "__main__":
    real_time_monitor()

实时监控能第一时间捕捉价格变动,适合短线投资者或高频交易场景。

扩展功能:从“提醒”到“智能决策”

基础的价格提醒已能满足大部分需求,但通过Python的扩展能力,还可以实现更复杂的监控逻辑:

多交易所价格对比

不同交易所比特币价格可能存在微小价差,可编写脚本对比主流交易所价格,发现套利机会:

def get_multiple_prices():
    """获取多个交易所比特币价格"""
    exchanges = {
        'Coinbase': ccxt.coinbase(),
        'Binance': ccxt.binance(),
        'OKX': ccxt.okx()
    }
    prices = {}
    for name, exchange in exchanges.items():
        try:
            ticker = exchange.fetch_ticker('BTC/USD')
            prices[name] = ticker['last']
        except Exception as e:
            print(f"获取{name}价格失败: {e}")
    return prices
# 示例输出:{'Coinbase': 43250.00, 'Binance': 43248.50, 'OKX': 43252.00}

技术指标触发提醒

结合pandasnumpy计算移动平均线(MA)、相对强弱指数(RSI)等指标,在价格突破关键均线时提醒:

import pandas as pd
def calculate_ma(prices, period=20):
    """计算简单移动平均线"""
    df = pd.DataFrame(prices, columns=['price'])
    df['ma'] = df['
随机配图
;price'].rolling(window=period).mean() return df['ma'].iloc[-1] # 示例:若当前价格突破20日均线,则提醒 current_price = get_btc_price() ma20 = calculate_ma(historical_prices) # historical_prices为历史价格数据 if current_price > ma20: send_email("比特币突破20日均线提醒", f"当前价格 ${current_price:.2f} >
本文转载自互联网,具体来源未知,或在文章中已说明来源,若有权利人发现,请联系我们更正。本站尊重原创,转载文章仅为传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网站转载使用,请保留本站注明的文章来源,并自负版权等法律责任。如有关于文章内容的疑问或投诉,请及时联系我们。我们转载此文的目的在于传递更多信息,同时也希望找到原作者,感谢各位读者的支持!
最近发表
随机文章
随机文章