关于 tradingview
这是一个通过 TradingView 未公开文档的公共 API 和 HTML 页面获取市场数据的 Python skill。它面向市场数据分析,提供技术指标、筛选、搜索和新闻等 CLI 模式;数据通常有延迟。
主要功能
- 01报价与预计算技术指标
- 02财务数据、业绩和分析师目标价
- 03按条件筛选、排序和分页
- 04支持 ISIN、CUSIP 和 CIK 的代码搜索
- 05个股及全球市场新闻
- 06提取 HTML 子页面数据
适用场景
- 01查看某个代码的技术指标
- 02按市场和条件筛选金融工具
- 03通过标识符搜索证券
- 04收集市场新闻和财务数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gauss314/ skills --skill tradingview安装后在 Claude Code 中输入/tradingview确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/column_groups.jsonmarkets.jsonrecommend_ratings.jsonscanner_columns.jsonreferences/COOKBOOK.mdHTML_SCRAPING.mdMARKETS_EXCHANGES.mdNEWS_API.mdREFERENCE.mdSCANNER_COLUMNS.mdSCANNER_FILTERS.mdSYMBOL_SEARCH.mdscripts/fetch_tradingview.py详细介绍
TradingView — 通过公共 API 获取市场数据
高级技能,通过 reverse-engineering 发现的 TradingView 公共内部 API提取市场数据——无需 API key,无需身份验证。
TradingView 是全球使用最广泛的市场数据 + 技术分析 + 社交交易平台(活跃用户超过 5,000 万)。此技能提供:
- Scanner API,约 300 个列:行情、预计算的技术指标、基本面、财报、分析师目标价、汇总评级(买入/卖出)。
- Symbol Search v3,支持 ISIN、CUSIP、CIK(可与 SEC EDGAR 联接)。
- 新闻标题(每个标的约 200 条新闻,来源包括 Dow Jones / Reuters 等)。
- 抓取 16 个以上的 HTML 子页面(
technicals、financials-*、forecast、options-chain、ideas等),并提取prs.init-data+json。 - 大规模筛选器,支持筛选条件 + 排序 + 分页(约 10 万个以上的工具)。
⚠️ 法律声明
- TradingView 未发布这些 API 的官方文档。它们可能会发生变化,恕不另行通知。
- 在社区追踪的 约 6 年间,变化一直较为渐进——Scanner 的结构自 2017 年起一直保持稳定。
- 请遵守使用条款。若需大量商业用途,请购买官方 REST API(付费)。
- 数据存在延迟(通常约 15 分钟)。实时数据通过专有 WebSockets 传输(此处未实现)。
🚀 快速开始
# Quote rapido
py scripts/fetch_tradingview.py quote NASDAQ:GGAL
# Todo-en-uno (6 requests combinadas)
py scripts/fetch_tradingview.py all NASDAQ:GGAL
# Screener masivo
py scripts/fetch_tradingview.py country Argentina --limit 30
py scripts/fetch_tradingview.py sector Finance --market america --limit 20
# News (~200 por simbolo)
py scripts/fetch_tradingview.py news NASDAQ:AAPL
# Symbol Search con ISIN/CUSIP/CIK
py scripts/fetch_tradingview.py search "Galicia"
技能结构
skills/tradingview/
├── SKILL.md # Este archivo (guia rapida)
├── references/ # 8 documentos detallados
│ ├── REFERENCE.md # Overview general de la API
│ ├── SCANNER_COLUMNS.md # Catalogo de 130+ columnas con tablas
│ ├── SCANNER_FILTERS.md # Operaciones de filtro + queries complejos
│ ├── MARKETS_EXCHANGES.md # Mercados validos + exchanges por pais
│ ├── NEWS_API.md # News API deep dive
│ ├── SYMBOL_SEARCH.md # Symbol Search v3 deep dive
│ ├── HTML_SCRAPING.md # Extraccion de prs.init-data+json
│ └── COOKBOOK.md # 30 recetas listas para copy-paste
├── assets/ # 4 archivos JSON
│ ├── scanner_columns.json # Catalogo de columnas con descripciones
│ ├── column_groups.json # Bundles pre-armados por caso de uso
│ ├── markets.json # Mercados validos + cobertura
│ └── recommend_ratings.json # Mapeo Recommend.* a STRONG_BUY/etc
└── scripts/
└── fetch_tradingview.py # Script principal con 24 modos CLI
可用端点(4 个唯一 HTTP 端点,24 种 CLI 模式)
Scanner API(1 个端点,14 种 CLI 模式)
POST https://scanner.tradingview.com/{market}/scan
| 模式 | 列集合 | 描述 |
|---|---|---|
quote SYM | quote_basic(14 列) | 基本行情 |
quote-extended SYM | quote_extended(30 列) | 行情 + 指标 + 估值 |
technicals SYM | technicals(36 列) | RSI、MACD、EMAs、SMAs、评级 |
pivots SYM | pivots(17 列) | 月度枢轴点(5 种方法) |
financials SYM | financials(35 列) | 资产负债表 + 损益表 + 现金流 + 比率 |
earnings SYM | earnings(12 列) | 过往财报 + 预测 |
targets SYM | targets(10 列) | 目标价 + 分析师建议 |
performance SYM | performance(18 列) | 回报率(周/1M/3M/6M/年/YTD/5Y/全部)+ 波动率 + 贝塔 |
dividends SYM | dividends(8 列) | 收益率 + 每股股息 + 派息率 + 增长 |
ownership SYM | ownership(10 列) | 流通股 + 机构持股 + 内部人士持股 + 做空 |
screen | 自定义 | 通用筛选器,支持筛选条件 + 排序 + 分页 |
country COUNTRY | quote_basic | 某个国家的股票 |
sector SECTOR | quote_basic | 某个行业的股票 |
market MARKET | quote_basic | 列出整个市场 |
Symbol Search v3(1 个端点,1 种模式)
GET https://symbol-search.tradingview.com/symbol_search/v3/
| 模式 | 描述 |
|---|---|
search QUERY | 全局搜索,支持 ISIN、CUSIP、CIK、logoid、交易所 |
News API(1 个端点,3 种模式)
GET https://news-headlines.tradingview.com/v2/headlines
| 模式 | 描述 |
|---|---|
news SYM | 某个标的的新闻标题(最多 200 条) |
news-global | 全球市场新闻标题(最多 200 条) |
story STORY_PATH | 新闻详情/正文(抓取 HTML) |
HTML 抓取(1 个端点,1 种模式)
GET https://es.tradingview.com/symbols/{EX}-{SYM}/{path}/
| 模式 | 描述 |
|---|---|
subpage SYM PATH | 获取 HTML + 提取 prs.init-data+json 块 |
本地目录(3 种模式)
| 模式 | 描述 |
|---|---|
columns [GROUP] | 列出列(全部或指定分组) |
groups | 列出预定义列集合 |
markets | 列出有效市场 |
组合模式(1 种模式)
| 模式 | 描述 |
|---|---|
all SYM | 合并 6 个请求(quote_extended + technicals + financials + earnings + targets + news) |
快速用法 — 分类示例
报价与技术指标
py scripts/fetch_tradingview.py quote NASDAQ:GGAL # 14 cols
py scripts/fetch_tradingview.py quote-extended NASDAQ:AAPL # 30 cols
py scripts/fetch_tradingview.py technicals NASDAQ:GGAL # 36 cols
py scripts/fetch_tradingview.py pivots NASDAQ:AAPL # 17 cols
py scripts/fetch_tradingview.py performance NYSE:JPM # returns W/1M/3M/6M/Y/YTD/5Y/All
财务数据
py scripts/fetch_tradingview.py financials NASDAQ:AAPL # balance + income + cashflow + ratios
py scripts/fetch_tradingview.py earnings NASDAQ:GGAL # past + forecast
py scripts/fetch_tradingview.py targets NASDAQ:NVDA # analyst targets + recos
py scripts/fetch_tradingview.py dividends NYSE:KO # yield + DPS + payout
py scripts/fetch_tradingview.py ownership NASDAQ:NVDA # float + inst + insiders + short
筛选
# Filtros arbitrarios — pasar JSON con la sintaxis del Scanner
py scripts/fetch_tradingview.py screen \
--filter '[["sector","equal","Finance"],["market_cap_basic","greater",100000000000]]' \
--sort market_cap_basic:desc --limit 10
# Atajos
py scripts/fetch_tradingview.py country Argentina --limit 30
py scripts/fetch_tradingview.py sector Finance --market america --limit 20
py scripts/fetch_tradingview.py market crypto --limit 20
符号搜索
py scripts/fetch_tradingview.py search "GGAL" # auto type
py scripts/fetch_tradingview.py search "Apple" --type stocks --exchange NASDAQ
py scripts/fetch_tradingview.py search "BTC" --type crypto
py scripts/fetch_tradingview.py search "US3999091008" # por ISIN
新闻
py scripts/fetch_tradingview.py news NASDAQ:AAPL # hasta 200 items
py scripts/fetch_tradingview.py news-global # global headlines
py scripts/fetch_tradingview.py story "/news/DJN_DN20260604009289:0/" # body de noticia
HTML 抓取
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL technicals # subpage HTML
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL financials-income-statement
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL options-chain
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL forecast
目录
py scripts/fetch_tradingview.py columns # todas las columnas
py scripts/fetch_tradingview.py columns technicals # un grupo
py scripts/fetch_tradingview.py groups # todos los bundles
py scripts/fetch_tradingview.py markets # mercados validos
组合用法
py scripts/fetch_tradingview.py all NASDAQ:GGAL # 6 requests en 1
py scripts/fetch_tradingview.py all NASDAQ:GGAL -o ggal_full.json # guarda a archivo
自定义列
py scripts/fetch_tradingview.py quote NASDAQ:GGAL \
--columns "name,close,RSI,MACD.macd,Recommend.All,price_target_average"
输出/静默模式
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -o ggal_quote.json # archivo
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -q # silencioso
符号格式
| 位置 | 格式 | 示例 |
|---|---|---|
| Scanner / News / Search(JSON APIs) | {EXCHANGE}:{TICKER} | NASDAQ:GGAL、BCBA:YPF、BINANCE:BTCUSDT |
| HTML 子页面 | {EXCHANGE}-{TICKER} | NASDAQ-GGAL(在 URL 中) |
自动转换:脚本在构建 HTML URL 时会将 : 转换为 -。
支持的市场
| 市场 | 覆盖范围 | 代码示例 |
|---|---|---|
global | 所有市场(100k+) | 任意 EX:TKR |
america | 美国:NYSE、NASDAQ、AMEX、OTC(15k+) | NASDAQ:AAPL |
argentina | BCBA / BYMA(300+) | BCBA:GGAL |
brazil | B3 / Bovespa(500+) | BMFBOVESPA:PETR4 |
spain | BME(200+) | BME:SAN |
italy | Borsa Italiana(400+) | MIL:ENI |
germany | Xetra / FWB(1k+) | XETR:SAP |
uk | LSE(2k+) | LSE:HSBA |
france | Euronext Paris(800+) | EURONEXT:MC |
russia | MOEX(200+) | MOEX:SBER |
crypto | 加密货币(50k+) | BINANCE:BTCUSDT |
forex | 外汇货币对(1k+) | FX:EURUSD |
bonds | 全球债券(TVC) | TVC:US10Y |
工具类型(type 字段)
| 类型 | 描述 |
|---|---|
stock | 普通股 |
dr | 存托凭证(美国的 ADR、BCBA 的 CEDEAR、BMFBOVESPA 的 BDR) |
etf | 交易所交易基金 |
fund | 共同基金 |
structured | 结构化产品 |
bond | 债券 |
crypto | 加密货币 |
forex | 货币对 |
index | 指数 |
future | 期货 |
option | 期权 |
BUY/SELL 评级(Recommend.*)
TradingView 根据各项指标计算 3 种综合评级:
| 字段 | 计算依据 |
|---|---|
Recommend.All | 所有指标(移动平均线 + 振荡指标) |
Recommend.MA | 仅移动平均线(SMA/EMA 10..200、VWMA、Ichimoku、HullMA) |
Recommend.Other | 仅振荡指标(RSI、Stoch、MACD、ADX、CCI、BBP、UO、W%R、AO) |
取值范围为 [-1.0, +1.0]。对应的评级区间:
| 范围 | 区间 | UI 标签 |
|---|---|---|
| -1.00 至 -0.50 | STRONG_SELL | 强烈卖出 |
| -0.50 至 -0.10 | SELL | 卖出 |
| -0.10 至 +0.10 | NEUTRAL | 中性 |
| +0.10 至 +0.50 | BUY | 买入 |
| +0.50 至 +1.00 | STRONG_BUY | 强烈买入 |
脚本提供
recommend_label(value),可直接进行转换。 结构化资产位于 assets/recommend_ratings.json。
主要标志
| 标志 | 描述 |
|---|---|
--market X | Scanner 市场(默认:global) |
--columns "a,b,c" | 自定义列(覆盖当前模式的列组合) |
--filter '[...]' | screen 的 JSON 筛选器(参见 SCANNER_FILTERS.md) |
--sort field:order | 排序(例如:market_cap_basic:desc) |
--limit N | 结果数量上限(默认:30) |
--offset N | 分页偏移量(默认:0) |
--type X | search 的 search_type(stocks、crypto、forex 等) |
--exchange X | search 的交易所筛选条件 |
--lang X | 新闻/搜索语言(默认:en) |
-o archivo | 将输出保存到文件(JSON 或 markdown) |
-q / --quiet | 静默模式(不显示 INFO 日志) |
与仓库中其他技能的差异
| 功能 | TradingView | Yahoo Finance | Finnhub | Investing.com | Morningstar |
|---|---|---|---|---|---|
| 无需密钥的公开 API | ✅ | ✅ | 免费增值 | ✅ | ✅ |
| 实时行情 | ⚠️ 延迟 | ⚠️ 延迟 | ✅ | ⚠️ 延迟 | ❌ |
| 预计算技术指标(约 30+ 项) | ✅ 独有 | ❌ | ❌ | ❌ | ❌ |
| 汇总 BUY/SELL 评级 | ✅ 独有 | ❌ | ⚠️ | ⚠️ | ❌ |
| 支撑位 / 阻力位枢轴(5 种方法) | ✅ 独有 | ❌ | ❌ | ❌ | ❌ |
| 财务数据 | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| 分析师目标价 | ✅ | ⚠️ | ✅ | ✅ | ❌ |
| 搜索支持 ISIN/CUSIP/CIK | ✅ 独有 | ❌ | ⚠️ | ❌ | ❌ |
| 多国家筛选器 | ✅(约 100k+) | ⚠️ | ⚠️ | ⚠️ | ✅ |
| 新闻 | ✅(200 条) | ✅ | ✅ | ✅ | ❌ |
| 加密货币覆盖范围 | ✅(50k+) | ⚠️ | ⚠️ | ✅ | ❌ |
TradingView 的独特优势:
- 服务器端预计算技术指标(RSI、MACD、EMA、评级)——无需在客户端进行任何计算。
- 提供 5 种方法的月度枢轴位(Classic、Fibonacci、Camarilla、Woodie、DeMark)。
- 支持 ISIN/CUSIP/CIK 的 Symbol Search——可直接与 SEC EDGAR 关联。
- 大规模筛选器,可通过类似 SQL 的筛选条件,在单个请求中筛选 100k+ 个工具。
不适合使用 TradingView 的情况:
- 非美国小型股票的新闻 → Yahoo Finance 更好。
- 实时逐笔行情 → 需要 WebSocket(尚未实现)。
- 长周期 OHLCV 历史数据 → 没有公开的 REST 接口;请使用 Alpha Vantage 或 Yahoo Finance。
- 多个周期的基本面数据(5 年的利润表)→ 美国市场建议使用 SEC EDGAR,全球覆盖建议使用 simplywallst。
技术注意事项
无需身份验证
所有端点都不需要 API 密钥、令牌、Cookie 或 Session ID。可用于无头脚本、CI/CD、Docker 等。
推荐的请求头
已在脚本中配置:
HEADERS = {
"User-Agent": "Mozilla/5.0 ...",
"Accept": "*/*",
"Accept-Language": "es-AR,es;q=0.9,en;q=0.8",
"Origin": "https://es.tradingview.com",
"Referer": "https://es.tradingview.com/",
}
速率限制
未公开说明。观察结果:
- Scanner:可承受约 5 req/s。
- News:约 3 req/s。
- Symbol Search:约 5 req/s。
- HTML 子页面:约 1 req/s(CloudFlare WAF)。
建议:在请求之间使用 time.sleep(0.3)。all 模式会自动执行此操作。
编码
有效的 UTF-8。在 Windows 控制台(cp1252)中,特殊字符可能会显示为 ?。脚本会在启动时自动将 sys.stdout 重新配置为 UTF-8。
错误处理
| 状态 | 常见原因 |
|---|---|
| 200 | 正常。对于 Scanner,请检查 totalCount > 0。 |
| 400 | Payload 无效(未知列、filter 格式错误、body 为 null) |
| 403 | Path 不存在或缺少请求头 |
| 404 | 不存在的 HTML 子页面(例如:/news/) |
| 405 | 方法错误(例如:/v3/headlines 不支持 GET,只有 v2 支持) |
已知限制
- 没有通过 REST 提供历史 OHLCV 的端点:Scanner 中只有
Perf.*收益率。长周期历史数据请使用其他技能。 - 新闻覆盖不均:美国大型股票有 200 条新闻,小型股票只有 1-5 条。
- 新闻中的
lang=es:几乎为空。默认使用lang=en。 - 尚未实现 WebSocket 实时行情(
wss://data.tradingview.com)。 - 阿根廷市场:阿根廷市场使用
BCBA:GGAL,美洲市场使用NASDAQ:GGAL——两者不可互换。
商业用途警告
- API 未公开文档 → 可能发生变化。
- 请勿滥用:遵守合理的速率限制。
- 对于高强度商业用途,请购买 TradingView 官方 REST API。
完整文档
| 文档 | 内容 |
|---|---|
| references/REFERENCE.md | 4 个 HTTP 端点的总体概览 + 架构 |
| references/SCANNER_COLUMNS.md | 130 多个列的完整列表及表格 |
| references/SCANNER_FILTERS.md | 筛选操作 + 复杂查询 + 示例 |
| references/MARKETS_EXCHANGES.md | 有效市场 + 按国家列出的交易所 + 股票代码格式 |
| references/NEWS_API.md | News API 深入介绍:提供方、架构、故事详情 |
| references/SYMBOL_SEARCH.md | Symbol Search v3 深入介绍:ISIN/CUSIP/CIK |
| references/HTML_SCRAPING.md | 提取 prs.init-data+json + 适合抓取的场景 |
| references/COOKBOOK.md | 30 个可直接复制粘贴的配方 |
| assets/scanner_columns.json | 列目录及说明 |
| assets/column_groups.json | 按使用场景预先配置的组合 |
| assets/markets.json | 有效市场 + 覆盖范围 |
| assets/recommend_ratings.json | Recommend.* 到分组的映射 |
精选使用场景
references/COOKBOOK.md 中有 30 个完整配方。
# Top 10 acciones US por market cap
py scripts/fetch_tradingview.py screen \
--filter '[["country","equal","United States"],["type","equal","stock"]]' \
--sort market_cap_basic:desc --limit 10
# Stocks oversold con high dividend
py scripts/fetch_tradingview.py screen \
--filter '[["RSI","less",30],["dividend_yield_recent","greater",5]]' \
--sort dividend_yield_recent:desc --limit 20
# Empresas argentinas en cualquier mercado
py scripts/fetch_tradingview.py country Argentina --limit 30
# Pipeline: search → quote → news
py scripts/fetch_tradingview.py search "Apple" -q | jq -r '.symbols[0].symbol'
py scripts/fetch_tradingview.py quote NASDAQ:AAPL
py scripts/fetch_tradingview.py news NASDAQ:AAPL
# Joinear con SEC EDGAR via CIK
py scripts/fetch_tradingview.py search "GGAL" -q | jq -r '.symbols[0].cik_code'
# -> 0001114700 (usar este CIK en sec-data skill)