news 2026/9/30 4:27:51

用 tradingview-mcp 的 performance-analyst Agent 搭建 TradingView 策略绩效分析流水线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 tradingview-mcp 的 performance-analyst Agent 搭建 TradingView 策略绩效分析流水线
  • MCP 服务
  • AI 应用
  • 人工智能
  • 金融科技
  • CLI

【免费下载链接】tradingview-mcp

AI-assisted TradingView chart analysis — connect Claude Code to your TradingView Desktop for personal workflow automation

项目地址:https://gitcode.com/GitHub_Trending/tra/tradingview-mcp
点击查看免费下载

本指南围绕 agents/performance-analyst.md 这一 Agent 定义展开,讲解如何借助 tradingview-mcp 的 MCP 工具,在回测完成后自动采集 TradingView 策略测试器的全部绩效数据、按四个维度评估策略质量,并输出结构化分析报告。读完本文,你将掌握 performance-analyst 的数据采集管线、评估框架与报告模板,并了解其底层在 src/core/data.js 中如何实现“自动打开面板、自动取消隐藏策略、等待报告计算”等关键机制。

performance-analyst 是什么:一个专攻回测评审的 Agent

performance-analyst是仓库 agents/ 目录下唯一的 Agent 定义文件,其 frontmatter 明确了它的定位与运行配置:

--- name: performance-analyst description: Trading strategy performance analyst. Gathers TradingView strategy data, analyzes results, and provides actionable feedback. Use when reviewing backtest results. model: sonnet tools: - "*" ---
  • name:Agent 的标识符,用于在 Agent 编排系统中被引用;
  • description:决定了系统在什么场景下选中它——即“审查回测结果(reviewing backtest results)”时;
  • model: sonnet:指定该 Agent 默认使用 Anthropic 的 sonnet 级模型,在分析吞吐与成本之间取平衡;
  • tools: "*":允许 Agent 使用仓库注册的全部 MCP 工具(src/tools/ 下所有工具注册模块),但 performance-analyst 的核心工作流只依赖其中 5 个数据/截图工具。

该 Agent 的工作职责是:收集 TradingView 上全部可用的策略绩效数据,给出深入分析。它与 skills/strategy-report/SKILL.md(策略绩效报告技能)形成互补——Agent 负责“如何分析”,skill 负责“如何产出报告”,两者共享同一套数据工具与指标口径。

数据采集:五步完成绩效数据取证

performance-analyst 的采集流程在文档中固定为 5 个工具调用,下面逐一结合源码说明其参数、返回值与底层行为。

1. data_get_strategy_results —— 获取整体指标

定义于 src/tools/data.js,核心实现为 src/core/data.js 的getStrategyResults()。该工具无需参数,返回metrics对象,字段与 TradingView Strategy Tester 的 “Key stats” 一一对应:

字段含义
net_profit/net_profit_percent净利润 / 净值百分比
gross_profit/gross_loss毛利润 / 毛亏损
profit_factor盈利因子
max_drawdown/max_drawdown_percent最大回撤(金额 / 百分比)
total_trades总交易次数(赢 + 亏)
winning_trades/losing_trades盈利 / 亏损交易数
percent_profitable胜率
avg_trade平均每笔盈亏
largest_win/largest_loss最大单笔盈利 / 亏损
commission_paid已付手续费
sharpe_ratio/sortino_ratio夏普 / 索提诺比率
buy_hold_return买入持有基准收益
open_pl当前浮动盈亏

返回结构还附带strategy(策略名)、currency(币种)、source(恒为internal_api)。若图上有多个策略,只有被 Strategy Tester 选中的那个reportData非空,因此底层会优先选择“报告已计算”的策略(见findStrategy()的实现注释)。

2. data_get_trades —— 获取交易明细

定义于 src/tools/data.js,核心实现为getTrades()(src/core/data.js)。参数max_trades控制返回笔数,默认 20、上限 20(常量MAX_TRADES = 20)。

底层通过strat.ordersData()读取订单流,总是返回最近(tail)的订单——因为交易者最关心的是最新一段交易。每个交易字段做了可读化映射:

  • type:订单类型(tp);
  • side:buy/sell(由o.b判定);
  • entry、price、qty:入场标识、价格、数量;
  • time_index:K 线时间索引。

3. data_get_equity —— 获取资金曲线

定义于 src/tools/data.js,核心实现为getEquity()(src/core/data.js)。优先读取reportData中的equity/equityChart曲线;若该版本未直接暴露逐根 K 线资金曲线,则返回buyHold基准点数并提示改用data_get_strategy_results获取汇总盈亏。

4. chart_get_state —— 获取图表上下文

定义于 src/tools/chart.js 的getState()(src/core/chart.js),返回:

  • symbol:当前交易品种;
  • resolution:当前周期;
  • chartType:图表类型(数字编号,Candles=1、Line=2 等,见 src/core/chart.js 的类型映射);
  • studies:当前图表上全部指标/策略的{ id, name }列表。

它让分析结果能附带“该策略在什么品种、什么周期上跑出来的”这一必要上下文。

5. capture_screenshot —— 采集图表与测试器截图

定义于 src/tools/capture.js,核心实现为captureScreenshot()(src/core/capture.js)。三个关键参数:

  • region:full(整页,默认)、chart(仅图表画布)、strategy_tester(仅策略测试器面板,通过[data-name="backtesting"]或[class*="strategyReport"]定位);
  • method:cdp(默认,通过 CDP 的Page.captureScreenshot截取并落盘 PNG)或api(触发 TradingView 内置takeScreenshot());
  • wait_for_render:设为true时先等待图表画布稳定再截图,避免在chart_set_symbol/chart_set_timeframe之后截到陈旧画面。

截图统一保存到仓库根目录下的screenshots/目录,文件名形如tv_<region>_<时间戳>.png。分析时建议按 strategy-report skill 的步骤各截一张:region="chart"用于看策略叠加形态,region="strategy_tester"用于留证绩效数字。

CLI 等价路径:不使用 Agent 时,同样的数据可通过 src/cli/commands/data.js 获得,例如tv data strategy、tv data trades -n 10、tv data equity,以及tv ohlcv -s、tv values、tv quote <symbol>。

分析框架:四个维度审视策略

采集完成后,performance-analyst 按以下四维框架评估策略(文档原文定义):

  • Profitability(盈利能力):净利、盈利因子(Profit Factor)、平均每笔盈亏——回答“这个策略到底赚不赚钱”;
  • Consistency(一致性):胜率、最大连亏次数、资金曲线平滑度——回答“赚钱是不是稳定、可持续”;
  • Risk(风险):最大回撤、最差单笔交易、风险调整后收益(夏普/索提诺)——回答“为赚这些钱承担了多大风险”;
  • Edge Quality(优势质量):优势是稳健的还是脆弱的?比如“高胜率但单笔盈利极小”或“低胜率但单笔盈利极大”的形态差异,直接决定了策略对滑点、参数微调的敏感度。

可结合 skills/strategy-report/SKILL.md 中沉淀的判读基准作为量化锚点:盈利因子以> 1.5为健康;回撤> 20%视为过高;盈利因子< 1.2时策略可能需要进行根本性调整;交易笔数过少时建议拉长回看区间或放宽入场条件。

结构化报告:四个必备板块

performance-analyst 的输出被固定为结构化报告,四个板块齐全才算一次完整评审:

  1. Summary:2~3 句话的总览,先给结论;
  2. Key metrics table:指标表格(可直接采用上文 metrics 字段表);
  3. Strengths and weaknesses:优劣势清单;
  4. Specific, actionable recommendations:可执行的改进建议,而不是空泛评价。

完整模板可参考 strategy-report skill 中给出的示例骨架(## Strategy Report: [Strategy Name]加上 Symbol/Timeframe/Period 头信息),Agent 版本与之兼容,只是强调“建议必须具体可执行”。

底层原理:面板自动打开与隐藏策略自动解锁

performance-analyst 能“拿来即用”的关键,在于策略读取工具内置了三层自动修复逻辑(ensureStrategyTesterReady(),src/core/data.js):

  1. 自动打开 Strategy Tester 面板:TradingView 在面板未打开前从不计算策略报告。底层通过window.TradingView.bottomWidgetBar.showWidget('backtesting')自动呼出面板——这也与ui_open_panel strategy-tester(src/tools/ui.js)能力一致;
  2. 自动取消隐藏策略:对图例中被“隐藏(crossed-out eye)”的策略,TradingView 同样不计算报告,且隐藏策略与“面板未打开”在数据上无法区分。底层unhideStrategies()(src/core/data.js)会遍历全部策略数据源,把properties().visible === false的策略恢复可见,并在返回结果中通过unhidden_strategies字段告知 Agent 发生了什么;
  3. 轮询等待报告就绪:打开面板后最多等待 6 秒,每 500ms 轮询reportData.performance是否已填充,直到ready/no-strategy才返回,避免读到空报告。

策略的识别也并非简单的“非价格研究即策略”:早期实现曾因is_price_study判断失误把所有策略误排除(对应 issue #48/#173/#181),现改为依据metaInfo().isTVScriptStrategy || is_strategy判定,并回退到“暴露reportData/ordersData的任何数据源”,详见 src/core/data.js 的注释。

这些行为均有测试佐证:tests/e2e.test.js 验证了data_get_strategy_results的面板依赖性与面板检测逻辑;tests/pine_analyze.test.js 则从另一侧确保策略脚本(含strategy()声明检查)在上图前就被正确校验。

落地实践建议

  • 触发时机:在回测跑完、Strategy Tester 面板可见之后调用 performance-analyst,效果最佳;即使面板关闭或策略被隐藏,底层也会自动处理;
  • 取证留档:务必执行两次capture_screenshot(chart与strategy_tester),让报告中的数字有截图佐证;
  • 上下文精简:若图表上有大量历史数据,data_get_ohlcv的summary=true可只取统计摘要,节省 Agent 上下文(见 src/tools/data.js),把更多上下文留给绩效分析本身;
  • 组合使用:需要更细粒度交易拆解(多空分别表现、持仓时间)时,可结合 skills/strategy-report/SKILL.md 的 Trade Analysis 步骤,对data_get_trades返回的明细做二次统计。

至此,一条“回测 → 采集 → 四维评估 → 结构化报告 → 改进建议”的完整策略评审流水线即可由 performance-analyst 自动完成,而所有数据都直接来自真实的 TradingView Strategy Tester,非估算或模拟。

  • MCP 服务
  • AI 应用
  • 人工智能
  • 金融科技
  • CLI

【免费下载链接】tradingview-mcp

AI-assisted TradingView chart analysis — connect Claude Code to your TradingView Desktop for personal workflow automation

项目地址:https://gitcode.com/GitHub_Trending/tra/tradingview-mcp
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 4:27:24

LLM Agent 记忆架构实战:从 working memory 到 MCP 与 Docker 部署

1. 从“hindsight”这个词说起&#xff1a;为什么它值得单独拿出来做一篇文章“hindsight”直译过来是“后见之明”&#xff0c;但在 LLM Agent 的语境里&#xff0c;它指向的是一个非常具体、也非常容易被忽视的问题&#xff1a;Agent 的记忆到底该怎么存、怎么取、怎么用。热…

作者头像 李华
网站建设 2026/9/30 4:26:41

Model-Optimizer:大模型GPU推理的工程方法论与实战调优

1. “Model-Optimizer”不是工具名&#xff0c;而是工程共识的具象化表达 你搜“Model-Optimizer”&#xff0c;首页跳出来的全是TensorRT、vLLM、TensorRT-LLM这些词——没有独立官网、没有GitHub star破万的仓库、没有PyPI上可pip install的包。这恰恰说明一件事&#xff1a…

作者头像 李华
网站建设 2026/9/30 4:25:54

SSM+Layui+ECharts:校园跑腿平台的订单系统实战解析

做这种校园跑腿代办平台&#xff0c;最怕的就是把项目做成“功能堆砌”。系统倒是能跑&#xff0c;但业务逻辑一乱&#xff0c;后面每加一个功能都是在给自己挖坑。这篇文章我从标题里的几个关键词说起&#xff1a;javaweb、ssm、mysql、jsp、layui、echarts&#xff0c;把这套…

作者头像 李华
网站建设 2026/9/30 4:25:41

企业AI知识库到底是不是伪需求,试了一大圈后我有了答案

01 一次失败的产品分析案例 日常办公、做项目的朋友&#xff0c;大概都深有这种体验&#xff1a; 一个项目收尾的时候&#xff0c;桌面上、文件夹里总能攒出几十份资料&#xff0c;有原始素材、过程资料、产物初版、产物最终版、产物最终版坚决不改版。 对我而言&#xff0c…

作者头像 李华
网站建设 2026/9/30 4:24:51

YOLOv8+3D点云融合的物流包裹体积测量方案

简介&#xff1a;本资源是一份面向物流自动化与计算机视觉工程师的深度技术文档&#xff0c;聚焦YOLOv11目标检测与3D点云融合在仓储场景中的落地应用&#xff0c;系统解决包裹体积精准测量与智能分拣两大核心难题。文档共38页PDF&#xff0c;结构完整、支持目录跳转与左侧大纲…

作者头像 李华
网站建设 2026/9/30 4:23:57

不传网盘、免流量:贴汁(TieZ)局域网文件传输+网页直传完整攻略

不传网盘、免流量&#xff1a;贴汁(TieZ)局域网文件传输网页直传完整攻略 【免费下载链接】tiez-clipboard TieZ 是一款基于 Tauri 的跨平台剪贴板管理器 / A cross-platform clipboard manager with history, tags, sync, privacy protection, and fast daily workflows. 项…

作者头像 李华