TradingView MCP桥
TradingView桌面图表的个人AI助手。通过Chrome DevTools Protocol将Claude Code连接到本地运行的TradingView应用程序,用于AI辅助图表分析、Pine Script开发和工作流自动化。
\[!警告\] 本工具不隶属于TradingView股份有限公司,也不由TradingView公司认可或与之关联。 它通过Chrome DevTools协议与本地运行的TradingView桌面应用程序进行交互。查看 免责声明 使用前。
\[!重要\] 需要有效的TradingView订阅。 此工具不会绕过或规避任何TradingView付费墙或访问控制。它读取并控制您计算机上已运行的TradingView Desktop应用程序。
\[!注意\] 所有数据处理都在您的计算机上本地进行。 此工具不会在外部传输、存储或重新分发TradingView数据。
\[!小心\] 此工具通过Electron调试接口访问未记录的内部TradingView API。这些可以在任何TradingView更新中更改或中断,恕不另行通知。如果稳定性对您很重要,请固定您的TradingView Desktop版本。
它是如何工作的(以及为什么它可以安全运行)
此工具不会连接到TradingView的服务器,修改任何TradingView文件,也不会拦截任何网络流量。它仅通过Chrome DevTools Protocol(CDP)与本地运行的TradingView Desktop实例进行通信,CDP是谷歌内置于所有Chromium/Electron应用程序中的标准调试接口,包括VS Code、Slack和Discord。
默认情况下,调试端口是禁用的,必须由您使用标准Chromium标志显式启用(--remote-debugging-port=9222).没有这一深思熟虑的步骤,什么都不会发生。
这个工具不做什么
- 连接到TradingView的服务器或API
- 存储、传输或重新分发任何市场数据
- 在没有有效的TradingView订阅和已安装的桌面应用程序的情况下工作
- 绕过任何TradingView付费墙或访问限制
- 执行真实交易(仅图表交互)
- 如果TradingView改变其内部电子结构,则可以工作
研究背景
本项目探讨了一个开放的研究问题: 基于LLM的代理如何与专业交易界面交互以支持人类决策?
具体调查:
- 结构化工具API(MCP)如何连接LLM和有状态的桌面金融应用程序
- 当代理对实时图表数据进行操作时,会出现哪些延迟、上下文和可靠性约束
- 代理如何处理模糊的财务UI状态(例如解释Pine Script输出、读取指标表)
- 自然语言是否是图表导航和Pine Script开发的有效界面
- 在实时数据环境中运行的LLM代理的故障模式
这不是一个交易机器人。它是一个界面层,使交易应用程序对LLM代理清晰可见,使研究人员和开发人员能够研究金融工作流程中的人工智能协作。
看 研究.md 用于开放式问题、发现和相关工作。
先决条件
- TradingView桌面应用程序 (实时数据需要付费订阅)
- Node.js 18+
- 克劳德代码 支持MCP(用于MCP工具)或任何终端(用于CLI)
- macOS、Windows或Linux
它的作用
让你的AI助手看到你自己的图表:
- Pine Script开发 --在人工智能的帮助下编写、注入、编译、调试和迭代脚本
- 图表导航 --更改符号、时间框架、缩放到日期、添加/删除指标
- 可视化分析 --阅读图表的指标值、价格水平和注释
- 绘制图表 --趋势线、水平线、矩形、文本注释
- 管理警报 --创建、列出和删除价格警报
- 重播练习 --穿过历史酒吧,练习出入
- 截图 --捕获图表状态以进行AI可视化分析
- 多窗格布局 --设置2x2、3x1等网格,每个窗格有不同的符号
- 监控您的图表 --从本地运行图表流式传输JSONL以用于本地监控脚本
- CLI访问 --每个MCP工具也是
tvCLI命令,管道友好,JSON输出 - 启动TradingView --从任何平台以调试模式自动检测和启动
使用Claude代码安装
将此粘贴到Claude Code中,它将处理其余部分:
安装TradingView MCP服务器。克隆https://github.com/tradesdontlie/tradingview-mcp.git,运行npm install,将其添加到我的MCP配置~/.claude/.MCP.json中,并使用调试端口启动TradingView。然后使用tv_health_check验证连接。
或者按照以下手动步骤操作。
快速开始
1.安装
git clone https://github.com/tradesdontlie/tradingview-mcp.git
cd tradingview-mcp
npm install2.使用CDP启动TradingView
TradingView Desktop必须在端口9222上启用Chrome DevTools协议的情况下运行。
雨衣:
./scripts/launch_tv_debug_mac.sh窗户:
scripts\launch_tv_debug.batLinux:
./scripts/launch_tv_debug_linux.sh或在任何平台上手动启动:
/path/to/TradingView --remote-debugging-port=9222或使用MCP工具 (自动检测您的安装):
“使用tv_launch在调试模式下启动TradingView”
3.添加到克劳德代码
添加到您的Claude Code MCP配置中(~/.claude/.mcp.json 或项目 .mcp.json):
{
"mcpServers": {
"tradingview": {
"command": "node",
"args": ["/path/to/tradingview-mcp/src/server.js"]
}
}
}替换 /path/to/tradingview-mcp 你的实际路径。
4.验证
问克劳德: *“使用tv_health_check验证TradingView是否已连接”*
命令行界面
每个MCP工具也可以作为 tv CLI命令。所有输出都是JSON,用于管道 jq.
# Install globally (optional)
npm link
# Or run directly
node src/cli/index.js 快速示例
tv status # check connection
tv quote # current price
tv symbol AAPL # change symbol
tv ohlcv --summary # price summary
tv screenshot -r chart # capture chart
tv pine compile # compile Pine Script
tv pane layout 2x2 # 4-chart grid
tv pane symbol 1 ES1! # set pane symbol
tv stream quote | jq '.close' # monitor price changes所有命令
tv status / launch / state / symbol / timeframe / type / info / search
tv quote / ohlcv / values
tv data lines/labels/tables/boxes/strategy/trades/equity/depth/indicator
tv pine get/set/compile/analyze/check/save/new/open/list/errors/console
tv draw shape/list/get/remove/clear
tv alert list/create/delete
tv watchlist get/add
tv indicator add/remove/toggle/set/get
tv layout list/switch
tv pane list/layout/focus/symbol
tv tab list/new/close/switch
tv replay start/step/stop/status/autoplay/trade
tv stream quote/bars/values/lines/labels/tables/all
tv ui click/keyboard/hover/scroll/find/eval/type/panel/fullscreen/mouse
tv screenshot / discover / ui-state / range / scroll流媒体
这 tv stream 命令通过本地主机上的Chrome DevTools Protocol定期轮询本地运行的TradingView Desktop实例。
没有连接到TradingView的服务器。所有数据都保留在您的机器上。
\[!警告\] 无论数据来源如何,对TradingView数据的程序化使用都可能与其使用条款相冲突。您全权负责确保您的使用符合规定。
tv stream quote # price tick monitoring
tv stream bars # bar-by-bar updates
tv stream values # indicator value monitoring
tv stream lines --filter "NY Levels" # price level monitoring
tv stream tables --filter Profiler # table data monitoring
tv stream all # all panes at once (multi-symbol)克劳德如何知道使用哪种工具
克劳德读 CLAUDE.md 在这个项目中工作时自动执行。它包含一个完整的决策树:
| 你说。.. | 克劳德使用。.. |
|---|---|
| “我的图表上有什么?” | chart_get_state → data_get_study_values → quote_get |
| “显示了什么级别?” | data_get_pine_lines → data_get_pine_labels |
| “读取会话表” | data_get_pine_tables 随着 study_filter |
| “给我一个完整的分析” | quote_get → data_get_study_values → data_get_pine_lines → data_get_pine_labels → data_get_pine_tables → data_get_ohlcv (摘要)→ capture_screenshot |
| “每天切换到AAPL” | chart_set_symbol → chart_set_timeframe |
| “为…写一个松木剧本” | pine_set_source → pine_smart_compile → pine_get_errors |
| “3月1日开始重播” | replay_start → replay_step → replay_trade |
| “设置4图表网格” | pane_set_layout → pane_set_symbol 对于每个窗格 |
| “在24500处绘制一个关卡” | draw_shape (水平线) |
| “截图” | capture_screenshot |
工具参考(78个MCP工具)
读图
| 工具 | 何时使用 | 输出大小 |
|---|---|---|
chart_get_state | 第一次调用——获取符号、时间帧、所有指标名称+ID | ~500B |
data_get_study_values | 读取所有指标的当前RSI、MACD、BB、EMA值 | ~500B |
quote_get | 获取最新价格,OHLC,容量 | ~200B |
data_get_ohlcv | 获取价格条。 使用 summary: true 紧凑型统计 | 500B(摘要)/8KB(100条) |
自定义指示器数据(松木图纸)
阅读 line.new(), label.new(), table.new(), box.new() 任何可见的Pine指示器的输出。
| 工具 | 何时使用 | 输出大小 |
|---|---|---|
data_get_pine_lines | 读取水平价格水平(支撑位/阻力位、交易时段水平) | ~1-3KB |
data_get_pine_labels | 阅读文本注释+价格(“PDH 24550”,“偏长”) | ~2-5KB |
data_get_pine_tables | 读取数据表(会话统计、分析仪表板) | ~1-4KB |
data_get_pine_boxes | 将价格区域/范围读取为{高、低}对 | ~1-2KB |
总是使用 study_filter 针对特定指标: study_filter: "Profiler".
图表控件
| 工具 | 它做什么 |
|---|---|
chart_set_symbol | 更改股票代码(BTCUSD、AAPL、ES1!、NYMEX:CL1!) |
chart_set_timeframe | 更改分辨率(1、5、15、60、D、W、M) |
chart_set_type | 更改风格(蜡烛、HeikinAshi、线条、区域、Renko) |
chart_manage_indicator | 添加/删除指示器。 使用全名:“相对强弱指数”而非“RSI” |
chart_scroll_to_date | 跳转到日期(ISO:“2025-01-15”) |
chart_set_visible_range | 缩放到精确范围(unix时间戳) |
symbol_info / symbol_search | 符号元数据和搜索 |
indicator_set_inputs / indicator_toggle_visibility | 更改指示器设置,显示/隐藏 |
多窗格布局
| 工具 | 它做什么 |
|---|---|
pane_list | 列出所有带有符号和活动状态的窗格 |
pane_set_layout | 更改网格: s, 2h, 2v, 2x2, 4, 6, 8 |
pane_focus | 按索引聚焦特定窗格 |
pane_set_symbol | 在任何窗格上设置符号 |
选项卡管理
| 工具 | 它做什么 |
|---|---|
tab_list | 列出打开的图表选项卡 |
tab_new / tab_close | 打开/关闭选项卡 |
tab_switch | 按索引切换到选项卡 |
松文开发
| 工具 | 步骤 |
|---|---|
pine_set_source 1.将代码注入编辑器 | |
pine_smart_compile 2.编译时自动检测+错误检查 | |
pine_get_errors 3.读取编译错误(如果有) | |
pine_get_console 4.读取log.info()输出 | |
pine_save 5.保存到TradingView云端 | |
pine_get_source | 读取当前脚本(警告:对于复杂的脚本,可以是200KB+) |
pine_new | 创建空白指标/策略/库 |
pine_open / pine_list_scripts | 打开或列出已保存的脚本 |
pine_analyze | 离线静态分析(无需图表) |
pine_check | 服务器端编译检查(无需图表) |
重播模式
| 工具 | 步骤 |
|---|---|
replay_start | 在某个日期输入重播 |
replay_step | 前进一杆 |
replay_autoplay | 自动前进(设定速度,单位ms) |
replay_trade | 买入/卖出/平仓 |
replay_status | 检查位置、损益表和日期 |
replay_stop | 返回实时 |
绘图、警报、UI自动化
| 工具 | 它做什么 |
|---|---|
draw_shape | 绘制水平线、趋势线、矩形、文本 |
draw_list / draw_remove_one / draw_clear | 管理图纸 |
alert_create / alert_list / alert_delete | 管理价格提醒 |
capture_screenshot | 屏幕截图(区域:完整、图表、策略测试仪) |
batch_run | 跨多个符号/时间帧运行操作 |
watchlist_get / watchlist_add | 读取/修改观察名单 |
layout_list / layout_switch | 管理已保存的布局 |
ui_open_panel / ui_click / ui_evaluate | UI自动化 |
tv_launch / tv_health_check / tv_discover | 连接管理 |
上下文管理
默认情况下,工具会返回紧凑的输出,以尽量减少上下文的使用。对于典型的“分析我的图表”工作流,总上下文为~5-10KB,而不是~80KB。
| 功能 | 它如何保存上下文 |
|---|---|
| Pine lines | 仅返回重复数据消除后的价格水平,而不是每个line对象 |
| 松木标签 | 每项研究最多50个,仅限文字+价格 |
| Pine表 | 预格式化的行字符串,无单元格元数据 |
| 松木箱 | 仅适用于取消重复的{高、低}区域 |
| OHLCV汇总模式 | 统计数据+最后5个柱状图,而不是所有柱状图 |
| 指标输入 | 加密/编码的blob自动过滤 |
verbose: true | 在需要时传递任何pine工具以获取带有ID/颜色的原始数据 |
study_filter | 瞄准一个指标,而不是扫描所有指标 |
在您的系统中查找TradingView
启动脚本和 tv_launch 自动检测TradingView。如果自动检测失败:
| 平台 | 常见位置 |
|---|---|
| 苹果电脑 | /Applications/TradingView.app/Contents/MacOS/TradingView |
| 视窗 | %LOCALAPPDATA%\TradingView\TradingView.exe, %PROGRAMFILES%\WindowsApps\TradingView*\TradingView.exe |
| Linux | /opt/TradingView/tradingview, ~/.local/share/TradingView/TradingView, /snap/tradingview/current/tradingview |
关键标志: --remote-debugging-port=9222
测试
# Requires TradingView running with --remote-debugging-port=9222
npm test29个测试涵盖:Pine Script静态分析、服务器端编译和CLI路由。
建筑
Claude Code ←→ MCP Server (stdio) ←→ CDP (port 9222) ←→ TradingView Desktop (Electron)- 运输:MCP over stdio(78个工具)+CLI(
tv命令,30个命令,66个子命令) - 连接:本地主机上的Chrome DevTools协议:9222
- 流媒体:具有重复数据删除功能的轮询和差异循环,JSONL输出到stdout
- 无依赖 超越
@modelcontextprotocol/sdk和chrome-remote-interface
归因
本项目不隶属于、认可或关联于:
- TradingView股份有限公司。 -TradingView是TradingView股份有限公司的商标。
- Anthropic --Claude和Claude Code是Anthropic,PBC的商标。
该工具是一个独立的MCP服务器,通过标准MCP协议连接到Claude Code。它不包含或修改任何Anthropic软件。
免责声明
本项目提供 仅用于个人、教育和研究目的.
此工具的工作原理: 该工具使用Chrome DevTools协议(CDP),这是谷歌内置于所有基于Chromium的应用程序中的标准调试接口。它不会对任何专有的TradingView协议进行逆向工程,不会连接到TradingView的服务器,也不会绕过任何访问控制。调试端口必须由用户通过标准Chromium命令行标志显式启用(--remote-debugging-port=9222).
使用本软件即表示您承认并同意:
- 您全权负责 确保您使用此工具符合 TradingView的使用条款 以及所有适用法律。
- TradingView的使用条款 限制自动数据收集、抓取和非显示使用 他们的平台和数据。此工具使用Chrome DevTools协议以编程方式与TradingView Desktop应用程序进行交互,这可能与这些术语冲突。
- 你承担所有风险 与使用此工具相关。作者不对因使用该帐户而导致的任何帐户禁令、暂停、法律诉讼或其他后果负责。
- 这个工具 不得使用 包括但不限于:
- 重新分发、转售或商业利用TradingView的市场数据 - 规避TradingView的访问控制或订阅限制 - 使用提取的数据执行自动交易或算法决策 - 侵犯Pine Script指标作者的知识产权 - 连接到TradingView的服务器或基础设施(所有访问都是通过本地运行的桌面应用程序进行的)
- 流媒体功能仅监视本地运行的TradingView Desktop实例。它不会连接到TradingView的服务器或从TradingView基础设施中提取数据。
- 通过此工具访问的市场数据仍受交换和数据提供商许可条款的约束。 请勿重新分发、存储或商业利用通过此工具获得的任何数据。
- 此工具访问内部未记录的TradingView应用程序接口,这些接口可能随时更改或中断,恕不另行通知。
使用风险自负。 如果您不确定您的预期用途是否符合TradingView的条款,请不要使用此工具。
许可证
麻省理工学院——见 许可证 了解详情。
MIT许可证仅适用于此项目的源代码。它不授予TradingView的软件、数据、商标或知识产权任何权利。
