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

什么是币行情报价机器人?
币行情报价机器人是一种自动化程序,它的核心功能包括:
- 实时价格查询:获取 BTC、ETH 等数字货币的最新价格
- 涨跌幅统计:展示 24 小时涨跌幅、7 日涨跌幅等数据
- 定时推送:按设定的时间间隔主动推送行情快照
- 预警提醒:价格突破设定阈值时发送提醒
- 交互查询:在聊天软件中输入指令即可查询指定币种
前期准备
在动手开发之前,需要准备以下内容:
- 编程环境:推荐使用 Python 3.8 及以上版本
- 相关依赖库:
requests:用于调用行情 APIpython-telegram-bot或wechatpy:用于对接聊天平台APScheduler:用于定时任务调度
- 数据源 API 账号:大部分行情 API 免费可用
- 一台服务器(可选):用于 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核1G即可),使用
systemd或supervisor守护进程 - Docker 容器化:编写 Dockerfile,方便迁移和管理
- Serverless 方案:使用云函数定时触发,无需维护服务器,成本极低
部署时的注意事项:
- 添加异常处理和重试机制,避免网络波动导致程序崩溃
- 记录日志,方便排查问题
- 遵守 API 的调用频率限制,避免被封禁
- 不要在代码中硬编码密钥,使用环境变量管理
进阶功能拓展
基础版本稳定运行后,可以考虑添加更多功能:
- K线图推送:使用 matplotlib 生成图表并发送
- 多币种自选组合:支持用户自定义关注的