如何通过API获取带指标的TradingView指定交易对图表快照?
解决方案:获取TradingView带指标的图表快照(无官方API时的替代方案)
1. 无头浏览器渲染方案
这是最可控的落地方式,适配Telegram Bot开发场景:
- 用
Puppeteer(Node.js)或Playwright这类无头浏览器工具,模拟加载配置好的TradingView图表页面 - 核心步骤:
- 构造目标图表URL:在TradingView网页端手动配置好指定交易对、指标、时间周期后,点击「分享」按钮获取包含所有配置参数的共享链接
- 启动无头浏览器打开该链接,等待图表完全渲染完成(可通过监听图表容器元素或设置网络空闲等待)
- 定位图表区域(通常类名为
tv-chart-view的容器)进行截图,生成图片文件 - 调用Telegram Bot API的
sendPhoto方法,将截图发送给用户
- 示例代码片段(Puppeteer + Telegraf):
const puppeteer = require('puppeteer'); const { Telegraf } = require('telegraf'); const bot = new Telegraf('你的Telegram Bot Token'); bot.command('btcchart', async (ctx) => { const browser = await puppeteer.launch({ headless: 'new' }); const page = await browser.newPage(); // 替换为你提前配置好的带指标的TradingView共享链接 await page.goto('https://www.tradingview.com/chart/xxxx/?symbol=BINANCE:BTCUSDT&interval=1D', { waitUntil: 'networkidle0' }); const chartElement = await page.$('.tv-chart-view'); const screenshotBuffer = await chartElement.screenshot(); await browser.close(); await ctx.replyWithPhoto({ source: screenshotBuffer }); }); bot.launch();
- 注意事项:需处理页面加载超时、元素定位失败的异常;服务器环境要安装无头浏览器依赖(如Linux下的
libnss3等库);避免高频请求触发TradingView反爬限制
2. 第三方自动化截图服务
如果不想维护无头浏览器环境,可以选择支持动态网页截图的第三方服务:
- 这类服务提供API接口,传入TradingView共享链接和截图参数,即可返回图片二进制数据或链接
- 拿到图片后直接通过Telegram Bot API发送即可
- 关键提示:优先选择支持等待动态内容加载的服务,确保图表渲染完成后再截图
重要提示
TradingView的共享链接会完整保存所有图表配置(交易对、指标、画线、时间周期等),无需手动拼接参数,直接复用网页端配置好的链接即可。
内容的提问来源于stack exchange,提问作者Juk Lero
相关产品推荐
相关产品推荐

