ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

TradingView MCP Bridge 实战指南:用 Claude Code 连接 TradingView Desktop,实现 AI 辅助图表分析与 Pine Script 开发

2026/9/30 15:45:48 拓冰建站 浏览量
TradingView MCP Bridge 实战指南:用 Claude Code 连接 TradingView Desktop,实现 AI 辅助图表分析与 Pine Script 开发 MCP 服务AI 应用人工智能金融科技CLI【免费下载链接】tradingview-mcpAI-assisted TradingView chart analysis — connect Claude Code to your TradingView Desktop for personal workflow automation项目地址https://gitcode.com/GitHub_Trending/tra/tradingview-mcp点击查看免费下载本文是一份基于 tradingview-mcp 仓库的完整技术指南。它通过 Chrome DevTools ProtocolCDP将 Claude Code 等 LLM Agent 与本地运行的 TradingView Desktop 图表连接起来实现图表读取、Pine Script 编写编译、盘面绘制、告警管理与回放训练等个人工作流自动化。读完本文你将掌握从安装启动、MCP 配置、CLI 使用到 84 个 MCP 工具分类调用的全部实战细节以及底层 CDP 连接与上下文压缩机制的原理。项目定位给 AI 助手装上眼睛和手的接口层tradingview-mcp 是一个 MCPModel Context Protocol服务器定位是接口层而非交易机器人它让一个状态化的桌面金融应用对 LLM Agent 变得可读、可操控从而研究人类与 AI 在金融工作流中的协作方式。它给你的 AI 助手提供的能力包括Pine Script 开发编写、注入、编译、调试并迭代脚本图表导航切换品种、周期、跳到指定日期、增删指标可视化分析读取图表上的指标数值、价格水平和注释图表绘制趋势线、水平线、矩形、文本标注告警管理创建、列出、删除价格告警回放训练逐根 K 线推进历史练习开平仓截图捕获图表状态供 AI 视觉分析多窗格布局配置 2x2、3x1 等网格每个窗格不同品种本地监控以 JSONL 流式输出本地图表的行情变化供本地监控脚本消费CLI 访问每个 MCP 工具都对应一个tv命令输出 JSON 便于管道处理一键启动自动探测并从任意平台以调试模式启动 TradingView。[!WARNING] 本项目与 TradingView Inc. 无任何隶属、背书或关联关系。它通过 Chrome DevTools Protocol 与本地运行的 TradingView Desktop 应用交互使用前请阅读文末的免责声明。[!IMPORTANT] 需要有效的 TradingView 订阅。本工具不绕过任何 TradingView 付费墙或访问控制它只读取和操控你本机已在运行的 TradingView Desktop。[!NOTE] 所有数据处理都在本地完成本工具不会向外部传输、存储或再分发任何 TradingView 数据。工作原理为什么它是安全的本工具不连接 TradingView 服务器、不修改任何 TradingView 文件、不拦截任何网络流量。它只通过Chrome DevTools Protocol (CDP)与本机运行的 TradingView Desktop 实例通信——这是 Google 内置于所有 Chromium/Electron 应用包括 VS Code、Slack、Discord的标准调试接口。调试端口默认关闭必须由你显式地用标准 Chromium 标志--remote-debugging-port9222启用。没有这个刻意的步骤什么都不会发生。在 src/connection.js 中可以看到连接层的关键设计默认连接地址是127.0.0.1而非localhost因为部分 Windows 机器上localhost会先解析为::1而 Electron 的--remote-debugging-port只监听 IPv4主机与端口可通过环境变量TV_CDP_HOST/TV_CDP_PORT或CDP_HOST/CDP_PORT覆盖内置KNOWN_PATHS记录了通过在线探测发现的 TradingView 内部 API 路径如window.TradingViewApi._activeChartWidgetWV.value()、window.TradingView.bottomWidgetBar、window.TradingViewApi._replayApi等并通过verifyAndReturn()在每次调用前用typeof探测确认路径可用后再返回连接失败时采用指数退避重试最多 5 次基础延迟 500ms上限 30s。它不做的事不连接 TradingView 的服务器或 API不存储、传输或再分发任何市场数据在没有有效订阅和已安装 Desktop 应用时无法工作不绕过任何 TradingView 付费墙或访问限制不执行真实交易仅图表交互在 TradingView 改变内部 Electron 结构后可能失效——src/connection.js 中的路径注释明确标注这是通过在线探测发现的非文档化接口随时可能变化。研究背景该项目探索一个开放的研究问题LLM Agent 如何与专业交易界面交互以辅助人类决策具体研究内容包括结构化工具 APIMCP如何桥接 LLM 与有状态的桌面金融应用Agent 在实时图表数据上操作时会遇到什么样的延迟、上下文与可靠性约束Agent 如何处理模糊的金融 UI 状态如解读 Pine Script 输出、阅读指标表格自然语言是否是图表导航与 Pine Script 开发的有效界面以及 LLM Agent 在实时数据环境中的失败模式。它不是一个交易机器人而是一个让交易应用对 LLM Agent 可读的接口层供研究者与开发者研究金融工作流中的人机协作。更多开放问题与研究结论见 RESEARCH.md。前置条件TradingView Desktop 应用实时数据需要付费订阅Node.js 18Claude Code使用 MCP 工具或任意终端使用 CLImacOS、Windows 或 Linux。依赖极简从 package.json 可以看到运行时依赖仅有modelcontextprotocol/sdk与chrome-remote-interface两个包。快速开始1. 安装git clone https://gitcode.com/GitHub_Trending/tra/tradingview-mcp.git cd tradingview-mcp npm install如果使用 Claude Code也可以直接把下面这段话粘贴给它它会代你完成克隆、安装、写入 MCP 配置并启动调试端口Install the TradingView MCP server. Clone the tradingview-mcp repository, run npm install, add it to my MCP config at ~/.claude/.mcp.json, and launch TradingView with the debug port. Then verify the connection with tv_health_check.2. 以 CDP 模式启动 TradingViewTradingView Desktop 必须在9222 端口启用 Chrome DevTools Protocol 的情况下运行。仓库提供了三平台启动脚本Mac./scripts/launch_tv_debug_mac.shWindowsscripts\launch_tv_debug.batLinux./scripts/launch_tv_debug_linux.sh以 scripts/launch_tv_debug_linux.sh 为例脚本会自动探测一系列安装位置/opt/TradingView、~/.local/share/TradingView、snap、flatpak 等找不到时回退到which/find搜索启动前会pkill已有实例然后以--remote-debugging-port$PORT默认 9222可传参覆盖后台拉起应用并轮询http://localhost:$PORT/json/version确认 CDP 就绪。或者手动启动任意平台/path/to/TradingView --remote-debugging-port9222或者直接用 MCP 工具自动探测你的安装位置Use tv_launch to start TradingView in debug modetv_launch的底层实现在 src/tools/health.js 与 src/core/health.js 中它支持 Mac/Windows/Linux 自动探测包括 Windows MSIX/Store 安装若 Store 安装封锁了调试端口会自动从本地包副本重新启动首次回退会拷贝约 330MB可能需要一分钟。参数port默认 9222与kill_existing默认 true均可配置。3. 添加到 Claude Code在 Claude Code 的 MCP 配置~/.claude/.mcp.json或项目的.mcp.json中添加{ mcpServers: { tradingview: { command: node, args: [/path/to/tradingview-mcp/src/server.js] } } }将/path/to/tradingview-mcp替换为你的实际路径。MCP 服务端入口 src/server.js 使用modelcontextprotocol/sdk创建McpServer名称tradingview版本 2.0.0通过StdioServerTransport与 Claude Code 通信并注册了 14 组工具health、chart、pine、data、capture、drawing、alert、batch、replay、indicator、watchlist、ui、pane、tab。启动时会在 stderr 输出非隶属声明stderr 不会干扰 MCP 的 stdio 协议。4. 验证连接让 Claude 执行Use tv_health_check to verify TradingView is connectedtv_health_check会检查 CDP 连接并返回当前图表状态symbol、timeframe、chartType 等连接失败时返回hint提示使用tv_launch自动启动。详见 src/core/health.js。CLI一切 MCP 工具都是tv命令每个 MCP 工具都能以tv命令的形式通过命令行访问所有输出均为 JSON方便配合jq管道处理。# 全局安装可选 npm link # 或直接运行 node src/cli/index.js commandCLI 入口 src/cli/index.js 注册了 16 个命令模块由 src/cli/router.js 统一路由。退出码约定0 成功、1 错误、2 连接失败。快速示例tv status # 检查连接 tv quote # 当前价格 tv symbol AAPL # 切换品种 tv ohlcv --summary # 价格摘要 tv screenshot -r chart # 捕获图表 tv pine compile # 编译 Pine Script tv pane layout 2x2 # 4 图表网格 tv pane symbol 1 ES1! # 设置窗格品种 tv stream quote | jq .close # 监控价格变化全部命令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系列命令通过 localhost 上的 CDP 按固定间隔轮询本机运行的 TradingView Desktop 实例不连接 TradingView 服务器所有数据留在本机。输出为 JSONL 到 stdout采用轮询 差异比对 去重的流式循环见 src/core/stream.js。tv stream quote # 价格 tick 监控 tv stream bars # 逐根 K 线更新 tv stream values # 指标数值监控 tv stream lines --filter NY Levels # 价格水平监控 tv stream tables --filter Profiler # 表格数据监控 tv stream all # 所有窗格同时多品种[!WARNING] 无论数据源是什么以程序化方式消费 TradingView 数据都可能与其服务条款冲突。你需自行确保使用方式合规。Claude 如何选择工具决策树Claude 在本项目目录下工作时会自动读取 CLAUDE.md其中包含完整的工具决策树你说…Claude 使用…我的图表上有什么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 Script 实现…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_shapehorizontal_line截个图capture_screenshot同样的决策逻辑也内嵌在 MCP 服务器的instructions中src/server.js这样无论经由 Claude Code 还是其他 MCP 客户端Agent 都能获得同样的工具选择指引。工具参考84 个 MCP 工具说明README 的工具参考章节标题标注为 78 个工具而 src/server.js 的服务端 instructions 与 CLAUDE.md 均标注为 84 个工具——这是版本迭代过程中的数值差异以源码实际注册的工具集为准。图表读取工具何时使用输出大小chart_get_state首次调用——获取品种、周期、所有指标名称与 ID约 500Bdata_get_study_values读取所有指标的当前 RSI、MACD、BB、EMA 数值约 500Bquote_get获取最新价、OHLC、成交量约 200Bdata_get_ohlcv获取价格 K 线。请使用summary: true获得紧凑统计500B摘要/ 8KB100 根源码层面的两个细节值得注意src/core/data.jsdata_get_ohlcv的count上限为 500 根MAX_OHLCV_BARS默认 100summary模式返回周期区间、开收盘、最高最低、涨跌幅度、平均成交量与最近 5 根 K 线。价格统一按 8 位小数舍入roundPrice足以消除浮点噪声如 29899.999999997 → 29900又不破坏外汇/加密货币的子美分精度。quote_get带symbol参数时内部通过一个 Promise 链_quoteLock串行化setSymbol调用——因为切换品种会改变共享图表状态并行调用会互相竞争导致读到的品种不是请求的品种读取完成后还会把品种恢复为原值。自定义指标数据Pine 图形任何可见 Pine 指标的line.new()、label.new()、table.new()、box.new()输出都可以被读取。这些图形对象对普通数据工具不可见需要专用工具工具何时使用输出大小data_get_pine_lines读取水平价格水平支撑/阻力、会话水平约 1-3KBdata_get_pine_labels读取文本标注与价格PDH 24550、Bias Long约 2-5KBdata_get_pine_tables读取数据表格会话统计、分析面板约 1-4KBdata_get_pine_boxes读取价格区间/范围以 {high, low} 对返回约 1-2KB务必使用study_filter锁定特定指标如study_filter: Profiler。底层实现见 src/core/data.js 的buildGraphicsJS它遍历model().dataSources()按study_filter名称子串过滤再沿study._graphics._primitivesCollection路径分别提取dwglines、dwglabels、dwgtablecells、dwgboxes集合中的_primitivesDataById。水平线会按价格去重并按高到低排序表格按{tid, row, col}重组成行 | 列格式的字符串。注意指标必须在图表上可见这些工具才能读到其图形数据。图表控制工具作用chart_set_symbol切换标的BTCUSD、AAPL、ES1!、NYMEX:CL1!chart_set_timeframe切换周期1、5、15、60、D、W、Mchart_set_type切换图表样式Candles、HeikinAshi、Line、Area、Renkochart_manage_indicator增删指标。请用全名Relative Strength Index 而非 RSIchart_scroll_to_date跳到指定日期ISO 格式2025-01-15chart_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、8pane_focus聚焦指定索引的窗格pane_set_symbol设置任意窗格的品种标签页管理工具作用tab_list列出已打开的图表标签页tab_new/tab_close打开/关闭标签页tab_switch按索引切换标签页值得说明的是切换标签页后src/connection.js 的reconnectTo()会把缓存的 CDP 客户端重新挂载到新标签页的 target 上保证后续chart_get_state、data_get_*、quote_get、截图都跟随激活的标签页。Pine Script 开发工具步骤pine_set_source1. 注入代码到编辑器pine_smart_compile2. 编译并自动检测 错误检查pine_get_errors3. 读取编译错误pine_get_console4. 读取 log.info() 输出pine_save5. 保存到 TradingView 云端pine_get_source读取当前脚本警告复杂脚本可能超过 200KBpine_new新建空白 indicator/strategy/librarypine_open/pine_list_scripts打开或列出已保存脚本pine_analyze离线静态分析无需图表pine_check服务端编译检查无需图表这是本项目最核心也最精彩的能力之一src/core/pine.js 的实现揭示了它的深度Monaco 编辑器定位TradingView 的 Pine 编辑器基于 Monaco。FIND_MONACO脚本先在 DOM 中查找.monaco-editor.pine-editor-monaco容器再沿 React fiber 树向上回溯最多 20 层找到持有monacoEnv的 fiber 节点从中取得真正的编辑器实例——这是对 React 内部结构的高度定制化访问。编译执行compile()/smartCompile()会依次尝试点击 Save and add to chart、Add to chart、Update on chart、saveButton全部失败时通过Input.dispatchKeyEvent派发 Ctrl/CmdEnter 键盘快捷键。smartCompile还会在编译前后调用getAllStudies()统计指标数量返回study_added字段判断是否真的添加了新指标。双重编译校验analyze()是纯本地静态分析能检测array.from/array.new数组越界array.get/array.set的负索引或超出声明大小、对 size 0 数组调用.first()/.last()、在缺少strategy()声明时使用strategy.entry/close、以及提醒旧版本 Pine 升级到 v6check()则通过pine-facade.tradingview.com/pine-facade/translate_light发起真实的服务端翻译请求返回逐行的errors2/warnings2含行列号。两者互补离线分析快且免费服务端编译最权威。脚本云存取openScript/listScripts通过pine-facade/tradingview.com/pine-facade/list/?filtersaved与get/{id}/{version}拉取已保存脚本并注入 Monaco 编辑器。新建脚本模板newScript按类型提供 v6 模板indicator/strategy/library直接setValue到编辑器。错误与控制台getErrors读取 Monaco 的 model markersgetConsole在多个 DOM 兜底策略下抓取带时间戳的日志行并分类为 error/compile/warning/info。回放模式工具步骤replay_start在指定日期进入回放replay_step前进一根 K 线replay_autoplay自动前进以毫秒设置速度replay_trade买入/卖出/平仓replay_status查看持仓、盈亏、日期replay_stop返回实时实现细节src/core/replay.js体现了很多踩坑后的工程经验replay_start会先检查isReplayAvailable()当前品种/周期可能不支持回放然后showReplayToolbar()selectDate()是异步的必须在页面上下文内await其 Promise否则会变成fire-and-forget出现显示已开始但步进无效的假象随后轮询isReplayStarted()与currentDate()直到两者都就绪才返回成功。replay_step调用doStep()后也要轮询currentDate变化内部异步约 500ms 更新。replay_autoplay的合法速度值是白名单[100, 143, 200, 300, 1000, 2000, 3000, 5000, 10000]ms因为非法值可能永久污染云端账户状态校验必须在任何 CDP 调用之前完成。绘图、告警、UI 自动化工具作用draw_shape绘制 horizontal_line、trend_line、rectangle、textdraw_list/draw_remove_one/draw_clear管理图形alert_create/alert_list/alert_delete管理价格告警capture_screenshot截图区域full、chart、strategy_testerbatch_run跨多个品种/周期执行动作watchlist_get/watchlist_add读取/修改自选列表layout_list/layout_switch管理已保存布局ui_open_panel/ui_click/ui_evaluateUI 自动化tv_launch/tv_health_check/tv_discover连接管理其中tv_discover会探测KNOWN_PATHS中哪些 TradingView 内部 API 可用并报告其方法src/tools/health.jstv_update则提供安全的自更新git fast-forward 到 origin/main依赖变化时执行npm ci并在非 git 安装、工作区脏、非 main 分支或历史分叉时拒绝更新。上下文管理为什么典型分析只占 5-10KB 而不是 80KB工具默认返回紧凑输出以最大限度节省 Agent 上下文。一套典型的分析我的图表工作流总上下文约5-10KB而不是约 80KB。特性如何节省上下文Pine 线条只返回去重后的价格水平不返回每个线条对象Pine 标签每个指标最多 50 条只含文本价格Pine 表格预格式化的行字符串不含单元格元数据Pine 方框只返回去重后的 {high, low} 区间OHLCV 摘要模式返回统计 最近 5 根 K 线而非全部 K 线指标输入加密/编码的 blob 自动过滤verbose: true传给任意 pine 工具需要时获得带 ID/颜色的原始数据study_filter只锁定一个指标而非扫描全部对应的强制规则CLAUDE.md 的 Context Management Rules 一节data_get_ohlcv一律用summary: true知道目标指标时一律用study_filter除非用户明确要原始数据否则不用verbose: true复杂脚本不要读pine_get_source可能 200KB保护/加密指标不要用data_get_indicator其输入是编码 blob改用data_get_study_values视觉上下文优先用capture_screenshot返回文件路径约 300B而非图像数据chart_get_state只在开始时调用一次以取得实体 IDOHLCV 用count: 20快速分析、count: 100深入、count: 500仅在确需时。另外 OHLCV 上限 500 根、trades 每次上限 20、pine labels 默认每指标上限 50可用max_labels覆盖。在系统中找到 TradingView启动脚本和tv_launch会自动探测 TradingView。若自动探测失败常见安装位置如下平台常见位置Mac/Applications/TradingView.app/Contents/MacOS/TradingViewWindows%LOCALAPPDATA%\TradingView\TradingView.exe、%PROGRAMFILES%\WindowsApps\TradingView*\TradingView.exeLinux/opt/TradingView/tradingview、~/.local/share/TradingView/TradingView、/snap/tradingview/current/tradingview关键标志--remote-debugging-port9222。测试# 需要 TradingView 以 --remote-debugging-port9222 运行 npm test从 package.json 可以看到测试体系默认npm test运行tests/e2e.test.js与tests/pine_analyze.test.js真实 CDP 端到端 Pine 静态分析test:unit额外覆盖 CLI 路由、净化、回放、启动、图表指标、图表历史与更新逻辑test:all汇总全部 9 个测试文件。README 描述这 29 个测试覆盖Pine Script 静态分析、服务端编译与 CLI 路由。架构总览Claude Code ←→ MCP Server (stdio) ←→ CDP (port 9222) ←→ TradingView Desktop (Electron)传输MCP over stdio84 个工具 CLItv命令30 个命令含 66 个子命令连接localhost:9222 上的 Chrome DevTools Protocol流式轮询与差异比对循环 去重JSONL 输出到 stdout零冗余依赖仅modelcontextprotocol/sdk与chrome-remote-interface。核心代码通过 src/core/index.js 以命名空间导出chart、data、pine、health、capture、drawing、replay、alerts、batch、watchlist、indicators、uiMCP 工具层与 CLI 共享同一套 core 逻辑因此两者行为完全一致。归属声明、免责声明与许可归属声明本项目与以下方无隶属、背书或关联关系TradingView Inc.TradingView 是其商标、AnthropicClaude 与 Claude Code 是其商标。本工具是独立的 MCP 服务器通过标准 MCP 协议连接 Claude Code不包含或修改任何 Anthropic 软件。免责声明要点全文见 README.md本工具仅供个人、教育与研究目的使用它使用 CDPChromium 应用内置的标准调试接口不逆向任何 TradingView 专有协议、不连接其服务器、不绕过任何访问控制调试端口必须由用户通过标准 Chromium 标志显式启用使用本软件即表示你确认你独自负责确保使用方式符合 TradingView 服务条款与适用法律TradingView 条款限制自动化数据收集、抓取与非展示用途本工具的 CDP 程序化交互可能与之冲突你承担全部风险作者不对账号封禁、暂停、法律行动或其他后果负责禁止用途包括但不限于再分发、转售或商业利用 TradingView 市场数据规避访问控制或订阅限制使用提取数据执行自动交易或算法决策侵犯 Pine Script 指标作者的著作权连接 TradingView 服务器或基础设施通过本工具访问的市场数据仍受交易所与数据提供方许可条款约束请勿再分发、存储或商业利用本工具访问的是未文档化的内部接口TradingView 随时可能变更导致其失效。许可MIT——详见 LICENSE。MIT 许可仅适用于本项目源代码不授予任何 TradingView 软件、数据、商标或知识产权的权利。赞分享MCP 服务AI 应用人工智能金融科技CLI【免费下载链接】tradingview-mcpAI-assisted TradingView chart analysis — connect Claude Code to your TradingView Desktop for personal workflow automation项目地址https://gitcode.com/GitHub_Trending/tra/tradingview-mcp点击查看免费下载相关推荐TradingView Lightweight Charts高性能金融图表开发实战指南在金融科技快速发展的今天数据可视化已成为投资决策和市场分析的核心工具。TradingView Lightweight Charts作为一款基于HTML5 Ca前端图表库金融科技数据可视化连接真实 Host用 python-sdk 将 MCP 服务器接入 Claude Desktop、Claude Code、Cursor 与 VS Code连接真实 Host用 python sdk 将 MCP 服务器接入 Claude Desktop、Claude Code、Cursor 与 VS Code 本人工智能MCP 服务MCP Clients连接真实宿主用 MCP Python SDK 将服务器接入 Claude Desktop、Claude Code、Cursor 与 VS Code连接真实宿主用 MCP Python SDK 将服务器接入 Claude Desktop、Claude Code、Cursor 与 VS Code pytho人工智能MCP 服务MCP Clients创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考