从零开始制作币行情报价机器人,完整实战指南

随着加密货币市场的持续发展,越来越多的投资者和开发者希望能够实时掌握行情动态,手动查询价格不仅繁琐,还容易错过关键的市场波动,制作一个币行情报价机器人,可以让你随时获取实时价格、涨跌幅、成交量等关键信息,甚至可以推送到微信、Telegram 或钉钉等聊天工具中,本文将从零开始,手把手教你打造一个属于自己的行情报价机器人。

从零开始制作币行情报价机器人,完整实战指南

什么是币行情报价机器人?

币行情报价机器人是一种自动化程序,它的核心功能包括:

  • 实时价格查询:获取 BTC、ETH 等数字货币的最新价格
  • 涨跌幅统计:展示 24 小时涨跌幅、7 日涨跌幅等数据
  • 定时推送:按设定的时间间隔主动推送行情快照
  • 预警提醒:价格突破设定阈值时发送提醒
  • 交互查询:在聊天软件中输入指令即可查询指定币种

前期准备

在动手开发之前,需要准备以下内容:

  1. 编程环境:推荐使用 Python 3.8 及以上版本
  2. 相关依赖库
    • requests:用于调用行情 API
    • python-telegram-botwechatpy:用于对接聊天平台
    • APScheduler:用于定时任务调度
  3. 数据源 API 账号:大部分行情 API 免费可用
  4. 一台服务器(可选):用于 24 小时运行机器人

选择行情数据源

数据源是机器人的核心,常见的免费或低成本数据源包括:

数据源 特点
CoinGecko API 免费额度充足,支持全球币种
Binance API 数据实时性强,适合交易用户
OKX API 文档完善,接入简单
火币 API 中文文档友好

建议初学者从 CoinGecko 入手,无需注册即可调用基础接口。

核心代码实现

获取行情数据

import requests
def get_price(coin_id="bitcoin"):
    url = f"https://api.coingecko.com/api/v3/simple/price"
    params = {
        "ids": coin_id,
        "vs_currencies": "usd",
        "include_24hr_change": "true",
        "include_24hr_vol": "true"
    }
    response = requests.get(url, params=params, timeout=10)
    data = response.json()
    price = data[coin_id]["usd"]
    change = data[coin_id]["usd_24h_change"]
    volume = data[coin_id]["usd_24h_vol"]
    return price, change, volume
# 测试输出
price, change, volume = get_price("bitcoin")
print(f"BTC 当前价格: ${price:,.2f}")
print(f"24小时涨跌: {change:+.2f}%")
print(f"24小时成交量: ${volume:,.0f}")

格式化报价消息

def format_message(coin_name, price, change, volume):
    # 根据涨跌添加表情符号
    emoji = "🔴" if change < 0 else "🟢"
    message = (
        f"{emoji} {coin_name} 行情快报\n"
        f"━━━━━━━━━━━━━━\n"
        f"💰 当前价格: ${price:,.2f}\n"
        f"📊 24H涨跌: {change:+.2f}%\n"
        f"📈 24H成交量: ${volume:,.0f}\n"
        f"━━━━━━━━━━━━━━\n"
        f"⏰ 更新时间: 实时"
    )
    return message

定时推送功能

from apscheduler.schedulers.blocking import BlockingScheduler
coins = {
    "bitcoin": "BTC",
    "ethereum": "ETH",
    "solana": "SOL"
}
def push_daily_report():
    for coin_id, name in coins.items():
        price, change, volume = get_price(coin_id)
        msg = format_message(name, price, change, volume)
        send_message(msg)  # 对接你的推送渠道
scheduler = BlockingScheduler()
# 每小时推送一次
scheduler.add_job(push_daily_report, "interval", hours=1)
scheduler.start()

价格预警功能

import json
# 加载预警配置
def load_alerts():
    try:
        with open("alerts.json", "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return {}
def check_alerts():
    alerts = load_alerts()
    for coin_id, config in alerts.items():
        price, _, _ = get_price(coin_id)
        if price >= config["high"]:
            send_message(f"⚠️ {coin_id} 已突破 {config['high']} 美元!")
        elif price <= config["low"]:
            send_message(f"⚠️ {coin_id} 已跌破 {config['low']} 美元!")

对接消息推送渠道

机器人做好后,需要选择一个推送渠道:

  • Telegram Bot:创建流程简单,全球通用,推荐首选
  • 钉钉/企业微信机器人:国内访问稳定,适合个人或团队使用
  • Server酱:直接推送到微信,配置极简
  • 邮件推送:适合每日行情日报

以钉钉机器人为例,只需要一个 Webhook 地址即可完成推送:

def send_message(msg):
    webhook = "你的钉钉机器人Webhook地址"
    data = {"msgtype": "text", "text": {"content": msg}}
    requests.post(webhook, json=data)

部署上线

要让机器人 24 小时运行,推荐以下部署方案:

  1. 云服务器:购买入门级云主机(1核1G即可),使用 systemdsupervisor 守护进程
  2. Docker 容器化:编写 Dockerfile,方便迁移和管理
  3. Serverless 方案:使用云函数定时触发,无需维护服务器,成本极低

部署时的注意事项:

  • 添加异常处理和重试机制,避免网络波动导致程序崩溃
  • 记录日志,方便排查问题
  • 遵守 API 的调用频率限制,避免被封禁
  • 不要在代码中硬编码密钥,使用环境变量管理

进阶功能拓展

基础版本稳定运行后,可以考虑添加更多功能:

  • K线图推送:使用 matplotlib 生成图表并发送
  • 多币种自选组合:支持用户自定义关注的

关键词:开发实战教程