Crypto Price Monitor

Polar Sponsor
爱发电 赞助
.NET 9.0

监控加密货币价格并在达到阈值时触发警报。支持 BTC、ETH、SOL 及 100 多种其他币种,使用 CoinGecko API。可配置价格上限和下限阈值。

加密价格警报 : 监控加密货币价格, 并在目标被击中时获得警告

功能概述

加密价格警报 : 监控加密货币价格, 并在目标被击中时获得警告是一项面向实际任务的技能,主要用于不需要 API 键, 使用 CoinGecko 的 API;检查 BTC 、 EH 、 SOL 和 SOL 的当前价格。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

加密货币价格提醒

监控加密货币价格,并在达到设定目标时接收提醒。无需 API 密钥 —— 使用 CoinGecko 的免费 API。

功能说明

  • 查询 BTC、ETH、SOL 及 100+ 种代币的当前价格
  • 与您配置的阈值进行比对
  • 当价格上穿/下破目标值时触发提醒
  • 支持百分比变动检测(例如:“若 BTC 在 1 小时内下跌 5%,则发出提醒”)
  • 可单次运行,也可按计划(cron)定时执行

快速开始

查询单个价格

# 直接调用 API(无需认证)
curl "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_24hr_change=true"

获取更详细信息

curl "https://api.coingecko.com/api/v3/coins/bitcoin?localization=false&tickers=false&community_data=false&developer_data=false&sparkline=false"

提醒配置

创建一个 crypto-alerts.json 文件:

{
  "alerts": [
    {
      "coin": "bitcoin",
      "symbol": "btc",
      "condition": "below",
      "price": 85000,
      "message": "BTC 跌破 $85K!"
    },
    {
      "coin": "bitcoin",
      "symbol": "btc",
      "condition": "above",
      "price": 100000,
      "message": "BTC 上穿 $100K!🚀"
    },
    {
      "coin": "ethereum",
      "symbol": "eth",
      "condition": "below",
      "price": 3000,
      "message": "ETH 跌至 $3K 以下"
    },
    {
      "coin": "solana",
      "symbol": "sol",
      "condition": "above",
      "price": 200,
      "message": "SOL 突破 $200!"
    }
  ],
  "telegram_bot_token": "YOUR_BOT_TOKEN",
  "telegram_chat_id": "YOUR_CHAT_ID"
}

Python 提醒脚本

保存为 crypto_alert.py:

#!/usr/bin/env python3
import requests
import json
import sys
import os
from datetime import datetime

COINGECKO_API = "https://api.coingecko.com/api/v3"

def get_price(coin_id):
    url = f"{COINGECKO_API}/simple/price"
    params = {
        "ids": coin_id,
        "vs_currencies": "usd",
        "include_24hr_change": "true",
        "include_last_updated_at": "true"
    }
    r = requests.get(url, params=params, timeout=10)
    r.raise_for_status()
    data = r.json()
    return data[coin_id]["usd"], data[coin_id].get("usd_24h_change", 0)

def check_alerts(alerts_config):
    triggered = []
    for alert in alerts_config.get("alerts", []):
        coin = alert["coin"]
        condition = alert["condition"]
        target = alert["price"]
        message = alert["message"]
        
        try:
            price, change_24h = get_price(coin)
        except Exception as e:
            print(f"Error fetching {coin}: {e}")
            continue
        
        should_fire = False
        if condition == "above" and price >= target:
            should_fire = True
        elif condition == "below" and price <= target:
            should_fire = True
        
        if should_fire:
            triggered.append({
                "coin": coin,
                "price": price,
                "target": target,
                "condition": condition,
                "message": message,
                "change_24h": change_24h,
                "time": datetime.now().isoformat()
            })
            print(f"🚨 ALERT: {message} (Current: ${price:,.2f})")
        else:
            print(f"  {coin.upper()}: ${price:,.2f} (24h: {change_24h:+.2f}%) — {condition} ${target:,.2f}: {'✓' if should_fire else 'not triggered'}")
    
    return triggered

def send_telegram(message, bot_token, chat_id):
    if not bot_token or not chat_id:
        return
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    payload = {"chat_id": chat_id, "text": message, "parse_mode": "HTML"}
    requests.post(url, json=payload, timeout=10)

if __name__ == "__main__":
    config_path = os.path.join(os.path.dirname(__file__), "crypto-alerts.json")
    
    if len(sys.argv) > 1:
        config_path = sys.argv[1]
    
    if os.path.exists(config_path):
        with open(config_path) as f:
            config = json.load(f)
    else:
        print("No crypto-alerts.json found. Using default BTC/ETH/SOL check.")
        config = {
            "alerts": [
                {"coin": "bitcoin", "symbol": "btc", "condition": "above", "price": 0},
                {"coin": "ethereum", "symbol": "eth", "condition": "above", "price": 0},
                {"coin": "solana", "symbol": "sol", "condition": "above", "price": 0}
            ]
        }
    
    triggered = check_alerts(config)
    
    if triggered:
        summary = "🚨 Crypto Alert Triggered\n\n"
        for t in triggered:
            summary += f"{t['message']}\n"
            summary += f"Price: ${t['price']:,.2f} | 24h: {t['change_24h']:+.2f}%\n\n"
        
        bot_token = config.get("telegram_bot_token")
        chat_id = config.get("telegram_chat_id")
        if bot_token and chat_id:
            send_telegram(summary, bot_token, chat_id)
        
        with open("/tmp/crypto_alerts_triggered.json", "a") as f:
            f.write(json.dumps({"triggered": triggered, "time": datetime.now().isoformat()}) + "\n")

使用示例

单次运行

python3 crypto_alert.py

定时运行(Cron)

# 每 15 分钟执行一次
*/15 * * * * cd /path/to/skill && python3 crypto_alert.py >> /tmp/crypto_alerts.log 2>&1

# 每小时第 0 分钟执行一次
0 * * * * cd /path/to/skill && python3 crypto_alert.py >> /tmp/crypto_alerts.log 2>&1

查询特定代币

# Bitcoin
curl "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd&include_24hr_change=true"

# 多个代币
curl "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana,cardano,polkadot,avalanche-2,chainlink&vs_currencies=usd&include_24hr_change=true"

支持的代币(常用 ID)

符号 CoinGecko ID
BTC bitcoin
ETH ethereum
SOL solana
ADA cardano
DOT polkadot
AVAX avalanche-2
LINK chainlink
XRP ripple
DOGE dogecoin
MATIC polygon
ARB arbitrum
OP optimism

完整列表请访问:curl https://api.coingecko.com/api/v3/coins/list?per_page=250

提醒条件

  • above — 当价格 >= 目标值时触发
  • below — 当价格 <= 目标值时触发
  • percent_up — 当 24 小时涨跌幅 > X% 时触发(需添加 percent_threshold 字段)
  • percent_down — 当 24 小时涨跌幅 < -X% 时触发(需添加 percent_threshold 字段)

速率限制

CoinGecko 免费 API 限制:

  • 约 10–30 次请求/分钟
  • 每月 10,000–50,000 次请求
  • 如需高频检查,请启用缓存
  • 为确保安全,可在请求之间添加 sleep(1.2)

依赖要求

  • requests Python 库(pip install requests)
  • CoinGecko API(免费,无需密钥)
  • 可选:Telegram Bot 用于推送通知
  • 可选:cron 实现定时监控

使用建议

  1. 避免频繁轮询 —— 对大多数场景而言,15 分钟间隔已足够
  2. 缓存价格数据 —— 保存上次检查结果,避免重复调用 API
  3. 支持多重条件 —— 同一代币可同时配置多个提醒(例如“上穿”和“下破”)
  4. 记录日志 —— 务必写入日志文件,便于后续回溯触发事件

基于真实加密货币监控实践构建。CoinGecko API 免费开放,但请合理、尊重地使用。

相关专题

更多
PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

0

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

0

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

0

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

0

32

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

2026.10.10

0

16

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

2026.10.10

0

15

C++条件判断语句怎么写
C++条件判断语句怎么写

C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

2026.10.10

0

13

C++变量怎么声明和赋值
C++变量怎么声明和赋值

C++变量是编写程序和存储数据的基础。本专题围绕变量声明、定义、初始化、赋值和类型选择等内容展开,帮助初学者理解不同变量的用法,并掌握在实际代码中定义和使用变量的方法。

2026.10.10

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习