# 数据源接入完整指南(扩展版) > 本文档在原版(12 个数据源)基础上大幅扩展,覆盖 **28 个数据源**,重点补充**社交媒体情绪数据**(X/Twitter、Reddit、Telegram)的**免费方案**,以及衍生品、链上替代方案、新闻情绪、宏观经济等新类别。 > > 返回:[Go 迭代系统主文档](./Go量化知识迭代系统完整架构.md) | [原版数据源指南](./数据源接入完整指南.md) --- ## 一、数据源全景总览(28 个) | 类别 | 数据源 | 免费层 | 核心数据 | |------|--------|--------|---------| | **CEX(3)** | Binance | ✅ 完全免费 | K 线、资金费率、未平仓量 | | | OKX | ✅ 完全免费 | K 线、期权、资金费率 | | | Bybit | ✅ 完全免费 | K 线、资金费率、持仓量 | | **期权衍生品(3)** | Deribit | ✅ 完全免费 | 期权链、IV、DVOL | | | Laevitas | ✅ 有限免费 | GEX、期权流、资金费率聚合 | | | Coinalyze | ✅ 有限免费 | 未平仓量、清算、资金费率 | | **链上数据(4)** | Glassnode | ⚠️ 付费 | MVRV、SOPR、NVT | | | CoinGlass | ⚠️ 付费 | 清算、多空比、资金费率 | | | Dune Analytics | ✅ 免费 SQL | 链上自定义查询 | | | Arkham Intelligence | ✅ 免费 | 巨鲸追踪、地址标签 | | **DeFi 数据(3)** | DeFiLlama | ✅ 完全免费 | TVL、协议数据 | | | The Graph | ✅ 有限免费 | DEX 链上数据 | | | Token Terminal | ✅ 有限免费 | 协议收入、P/E 比率 | | **综合市场(3)** | CoinMarketCap | ✅ 免费层 | 市值、排名 | | | CoinGecko | ✅ 完全免费 | 市值、价格、社交数据 | | | Messari | ⚠️ 付费 | 研究报告、链上指标 | | **社交媒体(5)** | X/Twitter | ⚠️ 见方案 | KOL 情绪、热词 | | | Reddit | ✅ 免费 API | r/Bitcoin 社区情绪 | | | Telegram | ✅ 免费 | 公开频道消息 | | | LunarCrush | ✅ 有限免费 | 综合社交情绪指数 | | | Alternative.me | ✅ 完全免费 | 恐惧贪婪指数 | | **新闻情绪(3)** | CryptoPanic | ✅ 免费层 | 加密新闻聚合 | | | Santiment | ⚠️ 付费 | 社交趋势、开发活跃度 | | | Finnhub | ✅ 免费层 | 新闻情绪、基本面 | | **宏观经济(4)** | FRED | ✅ 完全免费 | 利率、CPI、M2 | | | 美联储官网 | ✅ 完全免费 | FOMC 会议纪要 | | | 世界银行 | ✅ 完全免费 | 全球宏观数据 | | | Yahoo Finance | ✅ 完全免费 | 股指、外汇、大宗商品 | --- ## 二、社交媒体数据源(重点补充) ### 2.1 X/Twitter:免费方案全解析 X(原 Twitter)是加密货币 KOL 最集中的平台,但 2023 年后官方 API 已全面付费,最低档 **$42,000/年**,对个人量化研究者完全不可行。以下是经过验证的**免费替代方案**: **方案一:Nitter 镜像站抓取(推荐,完全免费)** Nitter 是 X 的开源前端镜像,通过 RSS/HTML 方式提供推文数据,无需 API Key。 ```python # Python 实现(ntscraper 库) # pip install ntscraper from ntscraper import Nitter scraper = Nitter() # 抓取特定 KOL 的最新推文 tweets = scraper.get_tweets("CryptoKaleo", mode="user", number=20) # 抓取关键词搜索结果 btc_tweets = scraper.get_tweets("BTC bullish", mode="search", number=50) for tweet in tweets["tweets"]: print(tweet["date"], tweet["text"], tweet["stats"]["likes"]) ``` ```go // Go 实现(HTTP 抓取 Nitter RSS) package twitter import ( "encoding/xml" "fmt" "net/http" "time" ) // Nitter 公开实例列表(任选其一) var NitterInstances = []string{ "https://nitter.net", "https://nitter.privacydev.net", "https://nitter.poast.org", } type NitterRSS struct { Channel struct { Items []struct { Title string `xml:"title"` PubDate string `xml:"pubDate"` Link string `xml:"link"` } `xml:"item"` } `xml:"channel"` } // GetUserTweets 通过 Nitter RSS 获取用户推文 func GetUserTweets(username string) ([]Tweet, error) { for _, instance := range NitterInstances { url := fmt.Sprintf("%s/%s/rss", instance, username) resp, err := http.Get(url) if err != nil || resp.StatusCode != 200 { continue // 尝试下一个实例 } defer resp.Body.Close() var rss NitterRSS xml.NewDecoder(resp.Body).Decode(&rss) tweets := make([]Tweet, len(rss.Channel.Items)) for i, item := range rss.Channel.Items { tweets[i] = Tweet{ Text: item.Title, CreatedAt: item.PubDate, URL: item.Link, } } return tweets, nil } return nil, fmt.Errorf("所有 Nitter 实例均不可用") } ``` **Nitter 方案的局限性**: - 实例可用性不稳定(X 会封锁 IP),需维护多个备用实例列表 - 无法获取推文的精确互动数据(点赞/转发数可能不准确) - 搜索功能受限(无法按时间范围精确搜索) - 不适合高频抓取(每分钟不超过 10 次请求) **方案二:twitterapi.io(免费额度,推荐)** twitterapi.io 提供 **100,000 免费积分**(约 1000 次 API 调用),适合低频量化研究: ```python import requests headers = {"X-API-Key": "YOUR_FREE_API_KEY"} # 注册免费获取 # 搜索加密货币相关推文 response = requests.get( "https://api.twitterapi.io/twitter/tweet/advanced_search", headers=headers, params={ "query": "BTC bullish -is:retweet lang:en", "queryType": "Latest", "max_results": 20 } ) tweets = response.json()["tweets"] ``` **方案三:X 官方免费层(Basic Plan)** X 官方 Basic Plan 提供每月 **10,000 次读取请求**,适合极低频监控: ``` 价格:$100/月(相对可接受) 限制:10,000 次读取/月,约 333 次/天 适用:监控 10-20 个核心 KOL 账号的日更新 ``` **X/Twitter 数据接入策略总结**: | 方案 | 费用 | 数据量 | 稳定性 | 推荐场景 | |------|------|--------|--------|---------| | Nitter RSS | 完全免费 | 低(每用户最新 20 条)| 中(实例不稳定)| 监控 5-10 个 KOL | | twitterapi.io | 免费额度 | 中(1000 次/月)| 高 | 低频情绪监控 | | X Basic Plan | $100/月 | 中(10000 次/月)| 高 | 专业量化研究 | | X Pro Plan | $5000/月 | 高 | 高 | 机构级使用 | **重点监控的加密 KOL 列表**: | 账号 | 方向 | 特点 | |------|------|------| | @CryptoKaleo | BTC/ETH 技术分析 | 图表分析,准确率较高 | | @PlanB | BTC S2F 模型 | 长期价值投资视角 | | @Pentosh1 | 技术分析 | 短期交易信号 | | @CryptoCred | 技术分析教育 | 系统性分析框架 | | @WhalePanda | 市场情绪 | 反向指标参考 | | @glassnode | 链上数据 | 官方链上分析 | | @ki_young_ju | 链上数据 | CryptoQuant 创始人 | --- ### 2.2 Reddit:完全免费的社区情绪数据 Reddit 提供官方免费 API(PRAW),r/Bitcoin 和 r/CryptoCurrency 是最重要的散户情绪来源。 **Python 接入(PRAW 库)**: ```python # pip install praw import praw reddit = praw.Reddit( client_id="YOUR_CLIENT_ID", # Reddit App 免费注册 client_secret="YOUR_CLIENT_SECRET", user_agent="QuantKnowledge/1.0" ) # 获取 r/Bitcoin 热门帖子 subreddit = reddit.subreddit("Bitcoin") hot_posts = list(subreddit.hot(limit=25)) for post in hot_posts: print(f"标题: {post.title}") print(f"评分: {post.score}") print(f"评论数: {post.num_comments}") print(f"情绪词: {'bullish' if 'bull' in post.title.lower() else 'bearish'}") ``` **Go 接入(REST API)**: ```go package reddit import ( "encoding/json" "fmt" "net/http" ) const RedditBaseURL = "https://www.reddit.com" type RedditPost struct { Title string `json:"title"` Score int `json:"score"` NumComments int `json:"num_comments"` Created float64 `json:"created_utc"` URL string `json:"url"` } // GetHotPosts 获取指定 subreddit 的热门帖子 func GetHotPosts(subreddit string, limit int) ([]RedditPost, error) { url := fmt.Sprintf("%s/r/%s/hot.json?limit=%d", RedditBaseURL, subreddit, limit) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("User-Agent", "QuantKnowledge/1.0") // Reddit 要求 User-Agent client := &http.Client{} resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() var result struct { Data struct { Children []struct { Data RedditPost `json:"data"` } `json:"children"` } `json:"data"` } json.NewDecoder(resp.Body).Decode(&result) posts := make([]RedditPost, len(result.Data.Children)) for i, child := range result.Data.Children { posts[i] = child.Data } return posts, nil } ``` **Reddit 情绪指标构建**: ```python def calculate_reddit_sentiment(subreddit="Bitcoin", limit=100): """ 基于 Reddit 帖子构建情绪指标 返回值:-1(极度悲观)到 +1(极度乐观) """ posts = get_hot_posts(subreddit, limit) bullish_keywords = ["bull", "moon", "pump", "buy", "long", "ATH", "breakout"] bearish_keywords = ["bear", "dump", "sell", "short", "crash", "rekt", "dead"] total_score = 0 weighted_sentiment = 0 for post in posts: text = (post["title"] + " " + post.get("selftext", "")).lower() bull_count = sum(1 for kw in bullish_keywords if kw in text) bear_count = sum(1 for kw in bearish_keywords if kw in text) post_sentiment = (bull_count - bear_count) / max(bull_count + bear_count, 1) weight = post["score"] + post["num_comments"] # 高互动帖子权重更高 weighted_sentiment += post_sentiment * weight total_score += weight return weighted_sentiment / max(total_score, 1) ``` **关键 Subreddit 列表**: | Subreddit | 规模 | 特点 | 量化意义 | |-----------|------|------|---------| | r/Bitcoin | 700 万+ | BTC 长期持有者 | 散户情绪基准 | | r/CryptoCurrency | 900 万+ | 综合加密讨论 | 市场整体情绪 | | r/ethtrader | 200 万+ | ETH 交易者 | ETH 情绪 | | r/SatoshiStreetBets | 50 万+ | 高风险交易 | 极端情绪信号 | | r/algotrading | 150 万+ | 量化交易者 | 专业视角 | --- ### 2.3 Telegram:公开频道免费抓取 Telegram 是加密货币信号频道最集中的平台,通过 Telethon 库可以免费抓取公开频道消息。 **Python 接入(Telethon 库)**: ```python # pip install telethon from telethon.sync import TelegramClient from telethon import functions, types import asyncio # 需要注册 Telegram App 获取 api_id 和 api_hash(完全免费) # 注册地址:https://my.telegram.org/apps api_id = YOUR_API_ID api_hash = "YOUR_API_HASH" async def get_channel_messages(channel_username, limit=100): async with TelegramClient("quant_session", api_id, api_hash) as client: messages = [] async for message in client.iter_messages(channel_username, limit=limit): if message.text: messages.append({ "id": message.id, "date": message.date.isoformat(), "text": message.text, "views": message.views or 0, "forwards": message.forwards or 0 }) return messages # 使用示例 messages = asyncio.run(get_channel_messages("@whale_alert")) ``` **Go 接入(MTProto 协议,需要第三方库)**: ```go // 使用 gotd/td 库(Go 的 Telegram MTProto 实现) // go get github.com/gotd/td package telegram import ( "context" "github.com/gotd/td/telegram" "github.com/gotd/td/tg" ) // 注意:Go 的 Telegram 库较为复杂,建议此模块保留 Python 实现 // Go 层通过 HTTP 调用 Python 微服务获取 Telegram 数据 ``` **推荐监控的 Telegram 频道**: | 频道 | 类型 | 内容 | 量化意义 | |------|------|------|---------| | @whale_alert | 链上巨鲸 | 大额转账提醒 | 即时巨鲸动向 | | @CryptoQuantFund | 量化信号 | 技术分析信号 | 信号参考 | | @Bitcoin_signals | 交易信号 | BTC 交易信号 | 散户信号聚合 | | @glassnode_alerts | 链上数据 | Glassnode 关键指标触发 | 链上预警 | | @coinglass_alert | 衍生品 | 大额清算预警 | 清算风险 | | @CryptoNewsFlash | 新闻 | 实时加密新闻 | 事件驱动 | **Telegram 数据处理流程**: ``` Telethon 抓取公开频道消息 ↓ 文本预处理(去除链接、表情符号) ↓ 关键词提取(BTC/ETH/价格/信号词) ↓ 情绪分类(多头/空头/中性) ↓ 写入 MySQL(channel_messages 表) ↓ Go 服务读取并聚合为情绪指标 ↓ 更新 MD 文档中的社交情绪区块 ``` --- ### 2.4 LunarCrush:综合社交情绪指数 LunarCrush 聚合 X、Reddit、YouTube 等平台数据,提供标准化的社交情绪指数,免费层可访问基础数据。 **基础 URL**:`https://lunarcrush.com/api4/public` **免费层可用端点**: | 端点 | 说明 | 数据内容 | |------|------|---------| | `/coins/list/v2` | 币种社交排名 | AltRank、Galaxy Score | | `/coins/{coin}/v1` | 单币种社交数据 | 社交量、情绪、互动量 | | `/coins/{coin}/time-series/v2` | 历史社交数据 | 时序社交指标 | **核心指标说明**: | 指标 | 说明 | 量化意义 | |------|------|---------| | Galaxy Score | 综合社交健康评分(0-100)| > 70 = 社交热度高 | | AltRank | 山寨币社交排名 | 排名上升 = 关注度增加 | | Social Volume | 社交提及量 | 急增 = 市场关注 | | Social Engagement | 社交互动量 | 高互动 = 情绪强烈 | | Social Sentiment | 情绪极性(-1 到 +1)| > 0.5 = 偏多头情绪 | ```python import requests # 免费层无需 API Key(有速率限制) def get_lunarcrush_data(coin="BTC"): url = f"https://lunarcrush.com/api4/public/coins/{coin}/v1" resp = requests.get(url, headers={"Authorization": "Bearer FREE_TOKEN"}) data = resp.json()["data"] return { "galaxy_score": data.get("galaxy_score"), "alt_rank": data.get("alt_rank"), "social_volume": data.get("social_volume"), "social_sentiment": data.get("sentiment") } ``` --- ### 2.5 Alternative.me 恐惧贪婪指数:完全免费 Alternative.me 的加密货币恐惧贪婪指数是最广泛使用的市场情绪指标,**完全免费,无需 API Key**。 **API 端点**:`https://api.alternative.me/fng/` ```python import requests def get_fear_greed_index(limit=30): """获取最近 30 天的恐惧贪婪指数""" url = f"https://api.alternative.me/fng/?limit={limit}&format=json" resp = requests.get(url) data = resp.json()["data"] return [ { "value": int(d["value"]), "classification": d["value_classification"], # "Extreme Fear"/"Fear"/"Neutral"/"Greed"/"Extreme Greed" "timestamp": d["timestamp"] } for d in data ] ``` ```go // Go 接入 package alternativeme import ( "encoding/json" "net/http" ) const FearGreedURL = "https://api.alternative.me/fng/?limit=30&format=json" type FearGreedData struct { Value int `json:"value,string"` Classification string `json:"value_classification"` Timestamp string `json:"timestamp"` } func GetFearGreedIndex() ([]FearGreedData, error) { resp, err := http.Get(FearGreedURL) if err != nil { return nil, err } defer resp.Body.Close() var result struct { Data []FearGreedData `json:"data"` } json.NewDecoder(resp.Body).Decode(&result) return result.Data, nil } ``` **恐惧贪婪指数解读**: | 数值范围 | 分类 | 市场含义 | 量化操作 | |---------|------|---------|---------| | 0-24 | 极度恐惧 | 市场恐慌性抛售 | 逆向思维买入区 | | 25-44 | 恐惧 | 市场悲观 | 谨慎观望 | | 45-55 | 中性 | 市场平衡 | 跟随趋势 | | 56-74 | 贪婪 | 市场乐观 | 减仓区 | | 75-100 | 极度贪婪 | 市场狂热 | 逆向思维卖出区 | --- ## 三、新闻情绪数据源 ### 3.1 CryptoPanic:加密新闻聚合(免费层) CryptoPanic 聚合 200+ 个加密新闻源,提供免费 API(每天 1000 次请求)。 **基础 URL**:`https://cryptopanic.com/api/v1` **注册**:https://cryptopanic.com/developers/api/ (免费注册获取 API Key) **核心端点**: | 端点 | 说明 | 关键参数 | |------|------|---------| | `/posts/` | 新闻列表 | `currencies=BTC,ETH&filter=hot` | | `/posts/` | 按情绪过滤 | `filter=bullish` 或 `filter=bearish` | ```python import requests CRYPTOPANIC_API_KEY = "YOUR_FREE_API_KEY" def get_crypto_news(currencies="BTC,ETH", filter_type="hot", limit=20): url = "https://cryptopanic.com/api/v1/posts/" params = { "auth_token": CRYPTOPANIC_API_KEY, "currencies": currencies, "filter": filter_type, # hot/rising/bullish/bearish/important "public": "true" } resp = requests.get(url, params=params) results = resp.json()["results"] return [ { "title": r["title"], "source": r["source"]["title"], "published_at": r["published_at"], "votes": r.get("votes", {}), "currencies": [c["code"] for c in r.get("currencies", [])] } for r in results[:limit] ] # 情绪分析:统计看涨/看跌新闻比例 def get_news_sentiment_ratio(currency="BTC"): bullish = len(get_crypto_news(currency, "bullish", 50)) bearish = len(get_crypto_news(currency, "bearish", 50)) total = bullish + bearish if total == 0: return 0 return (bullish - bearish) / total # -1 到 +1 ``` --- ### 3.2 Finnhub:新闻情绪 + 基本面(免费层) Finnhub 提供加密货币新闻情绪分析,免费层每分钟 60 次请求。 **基础 URL**:`https://finnhub.io/api/v1` **核心端点**: | 端点 | 说明 | 参数 | |------|------|------| | `/news` | 加密新闻 | `category=crypto&token=YOUR_KEY` | | `/news-sentiment` | 新闻情绪分析 | `symbol=BINANCE:BTCUSDT&token=YOUR_KEY` | | `/crypto/candle` | K 线数据 | `symbol=BINANCE:BTCUSDT&resolution=10` | ```go package finnhub import ( "encoding/json" "fmt" "net/http" ) const FinnhubBaseURL = "https://finnhub.io/api/v1" type NewsSentiment struct { BullishPercent float64 `json:"buzz"` BearishPercent float64 `json:"bearishPercent"` BullishPercent2 float64 `json:"bullishPercent"` Score float64 `json:"companyNewsScore"` SectorAvg float64 `json:"sectorAverageBullishPercent"` } func GetNewsSentiment(symbol, apiKey string) (*NewsSentiment, error) { url := fmt.Sprintf("%s/news-sentiment?symbol=%s&token=%s", FinnhubBaseURL, symbol, apiKey) resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() var sentiment NewsSentiment json.NewDecoder(resp.Body).Decode(&sentiment) return &sentiment, nil } ``` --- ## 四、扩展链上数据源 ### 4.1 Dune Analytics:免费 SQL 链上查询 Dune 允许用 SQL 查询以太坊、Solana 等主流链的原始数据,免费层提供 API 访问。 **基础 URL**:`https://api.dune.com/api/v1` **认证**:`X-Dune-API-Key: YOUR_API_KEY`(免费注册获取) **工作流程**: 1. 在 Dune 网站编写 SQL 查询(如 Uniswap V3 BTC 交易量) 2. 获取查询 ID(URL 中的数字) 3. 通过 API 定期执行查询并获取结果 ```python import requests import time DUNE_API_KEY = "YOUR_FREE_API_KEY" HEADERS = {"X-Dune-API-Key": DUNE_API_KEY} def execute_dune_query(query_id: int) -> dict: """执行 Dune 查询并等待结果""" # 1. 触发执行 execute_url = f"https://api.dune.com/api/v1/query/{query_id}/execute" exec_resp = requests.post(execute_url, headers=HEADERS) execution_id = exec_resp.json()["execution_id"] # 2. 轮询等待结果 status_url = f"https://api.dune.com/api/v1/execution/{execution_id}/status" while True: status = requests.get(status_url, headers=HEADERS).json() if status["state"] == "QUERY_STATE_COMPLETED": break time.sleep(2) # 3. 获取结果 result_url = f"https://api.dune.com/api/v1/execution/{execution_id}/results" return requests.get(result_url, headers=HEADERS).json()["result"]["rows"] # 示例:查询 BTC 巨鲸地址余额变化(需要预先在 Dune 创建查询) # 查询 ID 可以从 Dune 社区现有查询中找到 btc_whale_data = execute_dune_query(query_id=3456789) ``` **推荐的 Dune 社区查询**(可直接复用): | 查询名称 | 说明 | 适用链 | |---------|------|--------| | Uniswap V3 Volume | DEX 交易量 | Ethereum | | Aave Liquidations | 清算事件 | Ethereum | | ETH Staking Flows | 质押资金流向 | Ethereum | | SOL DEX Volume | Solana DEX 交易量 | Solana | | USDT/USDC Mint/Burn | 稳定币增发/销毁 | 多链 | --- ### 4.2 Arkham Intelligence:免费巨鲸追踪 Arkham 提供地址标签和巨鲸追踪功能,是 Nansen 的免费替代方案。 **访问方式**:https://platform.arkhamintelligence.com/ **免费功能**: - 地址标签查询(交易所、基金、KOL 地址) - 实体追踪(Binance、Coinbase 等交易所的链上资金流向) - 历史交易记录查询 **API 接入**(需申请 API Key): ```python import requests ARKHAM_API_KEY = "YOUR_ARKHAM_API_KEY" def get_entity_transfers(entity="binance", limit=20): """获取特定实体(如 Binance)的最新链上转账""" url = "https://api.arkhamintelligence.com/transfers" headers = {"API-Key": ARKHAM_API_KEY} params = { "entities": entity, "limit": limit, "sortKey": "time", "sortDir": "desc" } resp = requests.get(url, headers=headers, params=params) return resp.json()["transfers"] ``` **量化使用场景**: - 监控 Binance 冷钱包的大额 BTC 转入/转出(判断交易所储备变化) - 追踪已知巨鲸地址的持仓变化 - 检测大型 DeFi 协议的资金流向 --- ## 五、扩展综合市场数据源 ### 5.1 CoinGecko:完全免费的市场数据 CoinGecko 提供完全免费的市场数据 API(无需 API Key),是 CoinMarketCap 的最佳免费替代。 **基础 URL**:`https://api.coingecko.com/api/v3` **核心端点**: | 端点 | 说明 | 参数 | |------|------|------| | `/simple/price` | 实时价格 | `ids=bitcoin,ethereum&vs_currencies=usd` | | `/coins/{id}/market_chart` | 历史价格 | `vs_currency=usd&days=30` | | `/coins/markets` | 市值排名 | `vs_currency=usd&order=market_cap_desc&per_page=100` | | `/global` | 全球市场指标 | — | | `/coins/{id}` | 币种详情(含社交数据)| — | ```go package coingecko import ( "encoding/json" "fmt" "net/http" ) const BaseURL = "https://api.coingecko.com/api/v3" type GlobalData struct { TotalMarketCap map[string]float64 `json:"total_market_cap"` TotalVolume map[string]float64 `json:"total_volume"` BTCDominance float64 `json:"bitcoin_dominance_percentage"` ETHDominance float64 `json:"eth_dominance_percentage"` MarketCapChange24h float64 `json:"market_cap_change_percentage_24h_usd"` } func GetGlobalData() (*GlobalData, error) { resp, err := http.Get(fmt.Sprintf("%s/global", BaseURL)) if err != nil { return nil, err } defer resp.Body.Close() var result struct { Data GlobalData `json:"data"` } json.NewDecoder(resp.Body).Decode(&result) return &result.Data, nil } ``` **CoinGecko vs CoinMarketCap 对比**: | 维度 | CoinGecko | CoinMarketCap | |------|-----------|--------------| | 免费程度 | **完全免费**(无 Key)| 免费层(需 Key,333 次/天)| | 数据质量 | 高 | 高 | | 历史数据 | 免费(有限)| 付费 | | 社交数据 | 有(GitHub、Twitter 关注)| 有 | | 速率限制 | 30 次/分(免费)| 333 次/天(免费)| --- ### 5.2 Token Terminal:协议基本面数据 Token Terminal 提供 DeFi 协议的收入、P/E 比率等基本面数据,免费层可访问主要数据。 **访问方式**:https://tokenterminal.com/terminal/ **核心指标**: | 指标 | 说明 | 量化意义 | |------|------|---------| | Protocol Revenue | 协议收入(费用)| 判断协议实际使用量 | | P/E Ratio | 市值/年化收入 | 估值判断(类股票 P/E)| | TVL | 总锁仓量 | DeFi 协议规模 | | Active Users | 活跃用户数 | 用户增长趋势 | --- ## 六、扩展宏观经济数据源 ### 6.1 Yahoo Finance:免费股指与大宗商品 Yahoo Finance 提供免费的股票、ETF、外汇、大宗商品数据,通过 `yfinance` Python 库可直接访问。 ```python # pip install yfinance import yfinance as yf # 获取黄金价格(GC=F) gold = yf.download("GC=F", period="1mo", interval="1d") # 获取标普 500(^GSPC) sp500 = yf.download("^GSPC", period="3mo", interval="1d") # 获取美元指数(DX-Y.NYB) dxy = yf.download("DX-Y.NYB", period="1mo", interval="1d") # 获取比特币 ETF(IBIT) ibit = yf.download("IBIT", period="1mo", interval="1d") ``` **Go 接入**(通过 Yahoo Finance 非官方 API): ```go package yahoo import ( "encoding/json" "fmt" "net/http" ) // 获取股票/ETF/指数数据 func GetQuote(symbol string) (map[string]interface{}, error) { url := fmt.Sprintf( "https://query1.finance.yahoo.com/v8/finance/chart/%s?interval=1d&range=1mo", symbol, ) req, _ := http.NewRequest("GET", url, nil) req.Header.Set("User-Agent", "Mozilla/5.0") client := &http.Client{} resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() var result map[string]interface{} json.NewDecoder(resp.Body).Decode(&result) return result, nil } ``` **重要监控标的**: | 标的 | 代码 | 与 BTC 的关系 | |------|------|-------------| | 黄金 | GC=F | 正相关(避险资产)| | 标普 500 | ^GSPC | 正相关(风险偏好)| | 纳斯达克 | ^IXIC | 强正相关(科技股)| | 美元指数 | DX-Y.NYB | 负相关(美元强 = BTC 弱)| | 10 年期美债 | ^TNX | 负相关(利率高 = 风险资产弱)| | BTC ETF(IBIT)| IBIT | 直接关联 | | VIX 恐慌指数 | ^VIX | 负相关(VIX 高 = 市场恐慌)| --- ### 6.2 世界银行:全球宏观数据 世界银行提供完全免费的全球宏观经济数据,适合长期宏观分析。 **基础 URL**:`https://api.worldbank.org/v2` ```python import requests def get_world_bank_data(indicator="NY.GDP.MKTP.CD", country="US", years=5): """获取世界银行指标数据""" url = f"https://api.worldbank.org/v2/country/{country}/indicator/{indicator}" params = { "format": "json", "per_page": years, "mrv": years # 最近 N 年 } resp = requests.get(url, params=params) data = resp.json()[1] # [0] 是元数据,[1] 是数据 return [{"year": d["date"], "value": d["value"]} for d in data if d["value"]] # 常用指标 # NY.GDP.MKTP.CD = GDP(美元) # FP.CPI.TOTL.ZG = CPI 通胀率 # SL.UEM.TOTL.ZS = 失业率 ``` --- ## 七、衍生品数据扩展 ### 7.1 Laevitas:期权与衍生品分析(有限免费) Laevitas 专注于加密衍生品数据,提供 GEX(Gamma 敞口)、期权流、资金费率聚合等高级数据。 **基础 URL**:`https://api.laevitas.ch` **核心数据**: | 数据 | 说明 | 量化意义 | |------|------|---------| | GEX(Gamma 敞口)| 做市商 Gamma 对冲方向 | 正 GEX = 价格稳定区,负 GEX = 价格波动加剧 | | 期权流(Option Flow)| 大额期权成交记录 | 机构方向性押注 | | 资金费率聚合 | 15+ 交易所资金费率 | 市场情绪极值判断 | | 最大痛点 | 期权到期最大痛点价格 | 到期日价格引力 | | IV 曲面 | 各行权价/到期日的 IV | 期权定价与市场预期 | --- ### 7.2 Coinalyze:未平仓量与清算(有限免费) Coinalyze 提供多交易所的未平仓量、清算数据聚合,免费层可访问基础数据。 **基础 URL**:`https://api.coinalyze.net/v1` **核心端点**: | 端点 | 说明 | |------|------| | `/open-interest` | 多所未平仓量聚合 | | `/liquidation-history` | 历史清算数据 | | `/funding-rate` | 多所资金费率 | | `/long-short-ratio` | 多空比 | --- ## 八、数据源优先级与接入策略 ### 8.1 按重要性排序 **第一优先级(必须接入,完全免费)**: | 数据源 | 核心价值 | |--------|---------| | Binance(合约)| 实时 K 线、资金费率 | | CoinGecko | 市值、排名、全球数据 | | Alternative.me | 恐惧贪婪指数 | | FRED | 宏观利率、CPI | | DeFiLlama | DeFi TVL | | Reddit(PRAW)| 社区情绪 | | CryptoPanic | 新闻情绪 | | Dune Analytics | 链上自定义查询 | **第二优先级(有限免费,建议接入)**: | 数据源 | 核心价值 | |--------|---------| | OKX | 期权数据、K 线交叉验证 | | Bybit | 资金费率三所对比 | | Deribit | DVOL、期权链 | | Telegram(Telethon)| 信号频道、巨鲸预警 | | LunarCrush | 综合社交情绪 | | Yahoo Finance | 股指、大宗商品关联 | | Arkham | 巨鲸追踪 | **第三优先级(付费,按需接入)**: | 数据源 | 费用 | 核心价值 | |--------|------|---------| | Glassnode | $29-$799/月 | 最权威链上数据 | | CoinGlass | $29-$99/月 | 衍生品清算数据 | | Santiment | $49-$999/月 | 社交趋势、开发活跃度 | | X/Twitter Basic | $100/月 | KOL 情绪 | ### 8.2 社交媒体免费方案最终推荐 综合稳定性、数据质量、接入难度,推荐以下**完全免费**的社交媒体数据方案: ``` X/Twitter → Nitter RSS(监控 10 个核心 KOL)+ twitterapi.io 免费额度 Reddit → PRAW 官方库(r/Bitcoin + r/CryptoCurrency) Telegram → Telethon(监控 10 个核心公开频道) 情绪汇总 → Alternative.me 恐惧贪婪指数(最稳定、最权威) 新闻情绪 → CryptoPanic 免费层(200+ 新闻源) ``` --- ## 九、数据源接入状态监控(扩展版) 系统 `/api/v1/datasources` 接口将返回所有 28 个数据源的状态: ```json { "timestamp": "2026-03-06T10:10:00+08:00", "summary": { "total": 28, "online": 26, "offline": 1, "degraded": 1 }, "by_category": { "cex": {"total": 3, "online": 3}, "derivatives": {"total": 3, "online": 3}, "onchain": {"total": 4, "online": 3}, "defi": {"total": 3, "online": 3}, "market": {"total": 3, "online": 3}, "social": {"total": 5, "online": 4}, "news": {"total": 3, "online": 3}, "macro": {"total": 4, "online": 4} } } ``` --- ## 参考资料 - [1] Nitter 开源项目:https://github.com/zedeus/nitter - [2] ntscraper Python 库:https://github.com/bocchilorenzo/ntscraper - [3] twitterapi.io 免费额度:https://dev.to/sivarampg/scraping-twitter-in-2025-a-developers-guide-to-surviving-the-api-apocalypse-5bbd - [4] X 官方 API 定价:https://developer.x.com/ - [5] PRAW Reddit API 文档:https://praw.readthedocs.io/ - [6] Telethon Telegram 库:https://docs.telethon.dev/ - [7] LunarCrush API:https://lunarcrush.com/ - [8] Alternative.me 恐惧贪婪 API:https://alternative.me/crypto/api/ - [9] CryptoPanic API:https://cryptopanic.com/developers/api/ - [10] Finnhub API:https://finnhub.io/docs/api - [11] Dune Analytics API:https://docs.dune.com/api-reference/overview/introduction - [12] Arkham Intelligence:https://platform.arkhamintelligence.com/ - [13] CoinGecko API:https://www.coingecko.com/api/documentation - [14] Token Terminal:https://tokenterminal.com/ - [15] Laevitas API:https://docs.laevitas.ch/ - [16] Coinalyze API:https://coinalyze.net/ - [17] Yahoo Finance(yfinance):https://pypi.org/project/yfinance/ - [18] FRED API:https://fred.stlouisfed.org/docs/api/fred/ - [19] 世界银行 API:https://datahelpdesk.worldbank.org/knowledgebase/articles/889392 - [20] 原版数据源指南(12 个):`./数据源接入完整指南.md`