TradingView-API
Mathieu2301/TradingView-API加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你在深夜盯着加密货币行情,价格突然异动,你想立刻知道这是不是 RSI 背离、MACD 叉还是布林带挤压触发了——而你不想打开浏览器,不想看那个花哨的网页界面,只想在终端里敲一行命令,让代码告诉你答案。
Mathieu2301/TradingView-API 就是这样一款工具:它让你用 Node.js 代码直接连接 TradingView 的图表引擎,实时获取任何股票、数字货币、外汇的 K 线数据和技术指标数值。
📦 npm 地址:
@mathieuc/tradingview
TradingView 是目前全球最流行的免费技术分析图表平台,拥有超过 5000 万用户。它的图表引擎强大、数据源丰富、内置指标覆盖全面——但原生并不提供开放 API。
传统方案要么用付费的第三方数据接口,要么自己写爬虫解析网页数据(不稳定、容易被封)。TradingView-API 走了第三条路:它模拟了 TradingView 的 WebSocket 通信协议,通过逆向工程让程序能够以无头浏览器的方式实时接收图表推送数据。
用作者的话说:
"Premium features · Automatically backtest many strategies and try many settings in a very little time · Get drawings you made on your chart · Works with invite-only indicators · Unlimited simultaneous indicators · Realtime · Get TradingView's technical analysis"
最简单的用法,只需要 15 行代码:
const TradingView = require('@mathieuc/tradingview');
const client = new TradingView.Client();
const chart = new client.Session.Chart();
chart.setMarket('BINANCE:BTCEUR', { timeframe: 'D' });
chart.onUpdate(() => {
console.log(`当前价格: ${chart.periods[0].close}`);
});
支持全球主要交易所:币安(Binance)、Coinbase、Kraken、Bybit,以及股票、外汇、期货市场。
TradingView 内置了上百种技术指标,无需任何额外配置,直接调用:
const chart = new client.Session.Chart();
chart.setMarket('NASDAQ:AAPL', { timeframe: '60' });
const indicator = new chart.Study('MARKET:ADX@tv-basicstudies');
indicator.onUpdate(() => {
console.log('ADX 值:', indicator.periods[0].values);
});
支持的指标类型包括:MACD、RSI、ADX、布林带、EMA/SMA、ATR、VWAP、KDJ……基本涵盖了主流技术分析需求。
这是这个项目最亮眼的能力之一。大多数第三方接口无法访问 TradingView 的私密指标(private indicators)或付费数据,但 TradingView-API 通过 Pine Permission Manager 机制支持获取这些数据。
⚠️ 注意:使用私密指标需要先在 TradingView 图表上手动授权,具体见 PinePermManage 示例。
除了实时数据,项目还支持两种回测场景:
这意味着量化研究员可以用免费账户 + 这个库,完成大部分历史数据验证工作。
核心依赖:axios ^1.5.0 # HTTP 客户端
jszip ^3.7.1 # 数据压缩处理
ws ^7.4.3 # WebSocket 通信
Node 版本:>= 14.0.0
整个项目没有重型依赖,没有 puppeteer/playwright 这类无头浏览器,纯靠 WebSocket 协议模拟,数据传输量小、响应速度快。
TradingView-API/
├── main.js # 入口,导出 Client + 指标类
├── src/
│ ├── client.js # WebSocket 客户端核心
│ ├── protocol.js # TradingView 协议解析
│ ├── miscRequests.js # 杂项请求(搜索、用户信息等)
│ ├── classes/
│ │ ├── BuiltInIndicator.js # 内置指标
│ │ ├── PineIndicator.js # Pine Script 指标
│ │ └── PinePermManager.js # 权限管理器
│ ├── chart/ # 图表会话管理
│ └── quote/ # 报价数据处理
├── examples/ # 15+ 完整示例
└── tests/ # Vitest 单元测试
protocol.js 是整个项目的核心:它负责解析 TradingView 服务器的二进制 WebSocket 消息,将其转换为结构化的 JSON 数据。这部分代码相当于对 TradingView 私有协议的逆向实现,是这个项目技术壁垒最高的地方。
# 稳定版(npm 官方源)
npm i @mathieuc/tradingview
# 最新版(GitHub main 分支)
npm i github:Mathieu2301/TradingView-API
项目需要 TradingView 账号才能访问部分私密功能,但基础的数据获取无需登录,匿名即可使用。
const TradingView = require('@mathieuc/tradingview');
const client = new TradingView.Client();
const symbols = [
'BINANCE:BTCUSDT',
'BINANCE:ETHUSDT',
'COINBASE:SOLEUR',
];
symbols.forEach(symbol => {
const chart = new client.Session.Chart();
chart.setMarket(symbol, { timeframe: '60' });
const indicator = new chart.Study('MARKET:RSI@tv-basicstudies');
indicator.onUpdate(() => {
const rsi = indicator.periods[0]?.values?.RSI || 'N/A';
console.log(`[${symbol}] RSI(14): ${rsi}`);
});
});
这是最重要的问题:TradingView 并没有公开其 WebSocket 协议规范,TradingView-API 通过抓包逆向实现。这意味着:
由于底层走的是图表渲染通道而非专业行情通道,数据存在秒级延迟。对于高频交易场景不适用,更适合中低频策略研究。
TradingView 服务器在海外,国内直连可能存在延迟或连接不稳定的问题。建议配合代理或部署在海外服务器上使用。
TradingView-API 体现了开源社区对数据可得性的不懈追求。在量化交易和程序化交易领域,数据获取一直是最大的门槛之一——专业数据 API 往往价格昂贵(Bloomberg 一套终端月费数千美元),而 TradingView 提供了几乎同等质量的可视化数据和数百种内置指标。
通过这个库,个人投资者和独立开发者也能以零成本构建自己的量化研究管道。它降低了算法交易的门槛,让技术分析从「看图说话」升级为「数据驱动」。
从 GitHub 数据看(5400+ ⭐,npm 年下载量持续增长),这个项目在加密社区和量化爱好者中有稳定的受众群。项目的 Telegram 群组(t.me/tradingview_api)也很活跃,说明用户黏性不错。
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能完整性 | ⭐⭐⭐⭐ | 支持实时数据、指标、回测、私密指标 |
| 上手难度 | ⭐⭐⭐ | Node.js 基础即可,有完整示例 |
| 稳定性风险 | ⭐⭐ | 依赖逆向协议,存在失效风险 |
| 数据质量 | ⭐⭐⭐⭐ | TradingView 数据源,质量可靠 |
| 社区活跃度 | ⭐⭐⭐⭐ | 更新稳定,Telegram 群活跃 |
如果你正在构建加密货币监控工具、量化回测系统,或者想用程序化方式利用 TradingView 的指标做技术分析,这个库是目前最好的免费方案之一。但请务必注意合规风险——不要在生产环境直接依赖它做交易决策。