tradingview-reader
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTradingView Reader (Read-Only)
TradingView 读取器(只读模式)
Reads TradingView's desktop macOS app for quotes, options chains, and chart state via opencli and a CDP attach to the running TradingView.app process. Powered by the plugin in this repo's tree (a separate plugin from opencli's built-in adapters, installed via opencli's monorepo subpath syntax).
tradingviewopencli-plugins/tradingviewThis skill is read-only. Designed for analysis: pulling options chains, checking IV/greeks, capturing chart state. It does NOT place trades, post ideas, modify watchlists, or change chart layouts.
Important: Unlike browser-based opencli readers (twitter, linkedin), this one talks directly to a running TradingView desktop app over Chrome DevTools Protocol. The user must (a) have installed, and (b) be logged in inside that app. The plugin handles relaunching with the debug port.
TradingView.appHow it works: data commands harvest session cookies via CDP , then fire HTTP requests from Node directly. Page-context fetch is blocked by browser CORS preflight even from TradingView's own pages — the desktop app uses Electron's main process (Node network stack) to bypass this, and we replicate that path. No Browser Bridge extension required, no registration needed.
Storage.getCookiesapps.yaml通过opencli和连接到运行中TradingView.app进程的CDP(Chrome DevTools Protocol),读取TradingView macOS桌面应用中的报价、期权链和图表状态。本技能由本仓库目录下的插件提供支持(该插件独立于opencli的内置适配器,需通过opencli的单仓库子路径语法安装)。
opencli-plugins/tradingviewtradingview本技能为只读模式,专为数据分析设计:可提取期权链、查看隐含波动率(IV)/希腊值、捕获图表状态。不支持下单交易、发布观点、修改观察列表或更改图表布局。
重要说明:与基于浏览器的opencli读取器(如Twitter、LinkedIn读取器)不同,本工具通过Chrome DevTools Protocol直接与运行中的TradingView桌面应用通信。用户必须满足两个条件:(a) 已安装;(b) 已在该应用中登录。插件会自动处理带调试端口的重启操作。
TradingView.app工作原理:数据命令通过CDP的获取会话Cookie,然后由Node直接发送HTTP请求。即使是TradingView自身页面,页面上下文的fetch也会被浏览器CORS预检阻止——桌面应用使用Electron的主进程(Node网络栈)绕过此限制,我们复刻了这一实现路径。无需安装Browser Bridge扩展,也无需注册。
Storage.getCookiesapps.yamlStep 1: Ensure opencli + Plugin Are Installed and Ready
步骤1:确保opencli及插件已安装并就绪
Current environment status:
!`(command -v opencli && opencli tradingview status 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`If the status above shows , skip to Step 2. Otherwise:
READY当前环境状态:
!`(command -v opencli && opencli tradingview status 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`如果上述状态显示,请跳至步骤2。否则:
READYNOT_INSTALLED — Install opencli
NOT_INSTALLED — 安装opencli
bash
npm install -g @jackwener/opencliRequires Node.js >= 21 (or Bun >= 1.0).
bash
npm install -g @jackwener/opencli需要Node.js ≥ 21(或Bun ≥ 1.0)。
SETUP_NEEDED — Install the TradingView plugin and launch with CDP
SETUP_NEEDED — 安装TradingView插件并通过CDP启动
The TradingView adapter is not built into opencli — it's a separate plugin:
bash
undefinedTradingView适配器未内置在opencli中,是一个独立插件:
bash
undefinedInstall the plugin
安装插件
opencli plugin install github:himself65/finance-skills/tradingview
opencli plugin install github:himself65/finance-skills/tradingview
Relaunch TradingView.app with CDP enabled (one-time per session)
启用CDP重启TradingView.app(每次会话只需执行一次)
opencli tradingview launch
The `launch` step quits the running TradingView and reopens it with `--remote-debugging-port=9222`. **Warn the user to save chart layouts first** if they have unsaved drawings.opencli tradingview launch
`launch`步骤会关闭正在运行的TradingView,并以`--remote-debugging-port=9222`参数重新打开。**提醒用户:如果有未保存的图表绘图,请先保存布局**。Common setup issues
常见安装问题
| Symptom | Fix |
|---|---|
| |
| |
| App not launched with debug port — run |
| App is open but logged out — log in inside the desktop app |
| Open any chart or symbol page in TradingView, then retry |
| Empty chain / 0 contracts | Subscription tier on the logged-in account doesn't include options for this symbol |
| 症状 | 解决方法 |
|---|---|
| 执行 |
| 执行 |
| 应用未以调试端口启动——执行 |
| 应用已打开但未登录——在桌面应用中登录账号 |
| 在TradingView中打开任意图表或代码页面,然后重试 |
| 期权链为空 / 0合约 | 当前登录账户的订阅 tier 不包含该代码的期权数据 |
Step 2: Identify What the User Needs
步骤2:明确用户需求
Setup / chart inspection
配置 / 图表检查
| User Request | Command | Key Flags |
|---|---|---|
| Setup / connection check | | — |
| Relaunch app with CDP | | |
| What's on the chart | | |
| Screenshot a chart | | |
| 用户请求 | 命令 | 关键参数 |
|---|---|---|
| 配置 / 连接检查 | | — |
| 通过CDP重启应用 | | |
| 查看当前图表内容 | | |
| 图表截图 | | |
Quotes + options
报价 + 期权
| User Request | Command | Key Flags |
|---|---|---|
| Spot quote | | |
| Options chain (full) | | |
| Options chain (one expiry, ATM band) | | |
| List expiries | | — |
| 用户请求 | 命令 | 关键参数 |
|---|---|---|
| 现货报价 | | |
| 完整期权链 | | |
| 单到期日期权链(平值区间) | | |
| 列出到期日 | | — |
Screener
筛选器
| User Request | Command | Key Flags |
|---|---|---|
| Generic screener (stocks/crypto/forex/futures/bonds) | | |
| US stocks with RSI < 30, sorted by volume | | — |
| Top crypto by market cap | | — |
| Symbol search / autocomplete | | |
| 用户请求 | 命令 | 关键参数 |
|---|---|---|
| 通用筛选器(股票/加密货币/外汇/期货/债券) | | |
| RSI < 30的美股,按成交量排序 | | — |
| 按市值排序的顶级加密货币 | | — |
| 代码搜索 / 自动补全 | | |
News
新闻
| User Request | Command | Key Flags |
|---|---|---|
| Global news headlines | | |
| News for a specific ticker | | |
| Full story by id | | |
| 用户请求 | 命令 | 关键参数 |
|---|---|---|
| 全球新闻头条 | | |
| 特定代码的新闻 | | |
| 通过ID查看完整新闻 | | |
Watchlists + alerts
观察列表 + 警报
| User Request | Command | Key Flags |
|---|---|---|
| List all watchlists | | — |
| Symbols in one watchlist | | — |
| Colored-flag list (red/orange/yellow/green/blue/purple) | | — |
| List all alerts | | — |
| Active alerts | | — |
| Recently triggered alerts | | — |
| Alerts that fired while offline | | — |
| Full alert log | | — |
| 用户请求 | 命令 | 关键参数 |
|---|---|---|
| 列出所有观察列表 | | — |
| 单个观察列表中的代码 | | — |
| 彩色标记列表(红/橙/黄/绿/蓝/紫) | | — |
| 列出所有警报 | | — |
| 活跃警报 | | — |
| 最近触发的警报 | | — |
| 离线时触发的警报 | | — |
| 完整警报日志 | | — |
Step 3: Execute the Command
步骤3:执行命令
General pattern
通用格式
bash
undefinedbash
undefinedUse -f json or -f yaml for structured output
使用-f json或-f yaml获取结构化输出
opencli tradingview options-chain --ticker SNDK --expiry 2026-05-22 -f json
opencli tradingview options-chain --ticker NVDA --strikes-around-spot 8 -f csv
opencli tradingview quote --ticker SPY --exchange NYSEARCA -f json
undefinedopencli tradingview options-chain --ticker SNDK --expiry 2026-05-22 -f json
opencli tradingview options-chain --ticker NVDA --strikes-around-spot 8 -f csv
opencli tradingview quote --ticker SPY --exchange NYSEARCA -f json
undefinedKey rules
关键规则
- Run first if connectivity is uncertain — it reports CDP connection state and active TradingView tabs.
opencli tradingview status - Use for programmatic processing (LLM context, downstream skills).
-f json - Filter by expiry and — full chains can be 3,000+ rows; an unfiltered dump is rarely what the user wants.
--strikes-around-spot - Default for US equities; require explicit
--exchange NASDAQfor ETFs (e.g. SPY = NYSEARCA, QQQ = NASDAQ) or non-US listings.--exchange - For ,
screeneris critical — it controls both the request and the output table. Include--columnsand any field used innameor--filter. Append--sortfor an indicator's timeframe, e.g.|TFfor 1-hour RSI. The default columns are sensible for stocks but should be replaced for crypto / forex / futures (different field catalogs).RSI|60 - For ,
screeneris JSON — array of--filterclauses. Always single-quote the JSON in shell to avoid escaping issues. See{left, operation, right}for the operations cheat sheet.references/commands.md - For , narrow the feed early — the global feed is firehose-level. Use
news,--symbol,--category, or--sectionbefore raising--provider.--limit - For , prefer it over guessing — when the user gives an ambiguous ticker (e.g. "SPY" without exchange), run
searchfirst to confirm the listing, then passsearch --query SPYto subsequent commands.--exchange - For and
watchlists, default to summary — a user asking "what's in my watchlists?" wants list names + counts, not every symbol.alerts - NEVER call any write operation. This skill is read-only — no trades, no watchlist edits, no alert creation/deletion, no chart writes. The plugin intentionally does not expose write endpoints (,
/append,/replace, etc.)./create_alert
- 如果连接不确定,先运行——它会报告CDP连接状态和活跃的TradingView标签页。
opencli tradingview status - 使用——适合程序化处理(LLM上下文、下游技能)。
-f json - 按到期日和筛选——完整期权链可能有3000+行;未过滤的输出很少是用户需要的。
--strikes-around-spot - 美国股票默认——ETF(如SPY=NYSEARCA、QQQ=NASDAQ)或非美国上市代码需显式指定
--exchange NASDAQ。--exchange - 对于,
screener至关重要——它控制请求和输出表格。需包含--columns以及name或--filter中使用的所有字段。为指标添加--sort指定时间框架,例如|TF表示1小时RSI。默认列适用于股票,但针对加密货币/外汇/期货需替换(字段目录不同)。RSI|60 - 对于,
screener为JSON格式——是--filter子句的数组。在shell中务必用单引号包裹JSON以避免转义问题。查看{left, operation, right}获取操作速查表。references/commands.md - 对于,尽早缩小范围——全球新闻流信息量极大。在提高
news之前,先使用--limit、--symbol、--category或--section筛选。--provider - 对于,优先使用搜索而非猜测——当用户给出模糊代码(如未指定交易所的"SPY"),先运行
search确认上市信息,再在后续命令中传递search --query SPY。--exchange - 对于和
watchlists,默认返回摘要——用户询问“我的观察列表里有什么?”时,需要的是列表名称+数量,而非所有代码。alerts - 切勿调用任何写入操作——本技能为只读模式,不支持交易、编辑观察列表、创建/删除警报、修改图表。插件故意未暴露写入端点(、
/append、/replace等)。/create_alert
Output format flag (-f
)
-f输出格式参数(-f
)
-f| Format | Flag | Best for |
|---|---|---|
| Table | | Human-readable terminal output |
| JSON | | Programmatic processing, LLM context |
| YAML | | Structured output, readable |
| Markdown | | Documentation, reports |
| CSV | | Spreadsheet export |
| 格式 | 参数 | 最佳用途 |
|---|---|---|
| 表格 | | 人类可读的终端输出 |
| JSON | | 程序化处理、LLM上下文 |
| YAML | | 结构化输出、可读性强 |
| Markdown | | 文档、报告 |
| CSV | | 导出到电子表格 |
Output columns
输出列
- —
quote,symbol,close,change,change_abs,currencytime - —
options-chain,expiry,dte,strike,type,bid,ask,mid,iv,delta,gamma,theta,vega,rho,theo,bid_iv,ask_ivsymbol - —
options-expiries,expiry,dtecontracts_count - — dynamic; one column per
screenerentry, plus--columns. (Default:symbol,name,close,change,volume,market_cap_basic.)sector.tr - —
search,symbol,description,type,exchange,countrycurrency - (list mode) —
news,id,published,provider,title,urgency,related_symbolslink - (story mode,
newsset) —--id,id,published,provider,title,body,tagslink - —
watchlists,id,name,symbol_countsymbols - —
alerts,id,name,symbol,type,condition,value,active,statusfired_at - —
chart-state,layout_id,symbol,intervalurl - —
screenshot,pathbytes
- —
quote,symbol,close,change,change_abs,currencytime - —
options-chain,expiry,dte,strike,type,bid,ask,mid,iv,delta,gamma,theta,vega,rho,theo,bid_iv,ask_ivsymbol - —
options-expiries,expiry,dtecontracts_count - — 动态列;每个
screener对应一列,外加--columns。(默认:symbol,name,close,change,volume,market_cap_basic。)sector.tr - —
search,symbol,description,type,exchange,countrycurrency - (列表模式) —
news,id,published,provider,title,urgency,related_symbolslink - (文章模式,指定
news) —--id,id,published,provider,title,body,tagslink - —
watchlists,id,name,symbol_countsymbols - —
alerts,id,name,symbol,type,condition,value,active,statusfired_at - —
chart-state,layout_id,symbol,intervalurl - —
screenshot,pathbytes
Step 4: Present the Results
步骤4:展示结果
- Lead with the structure summary — for an options chain, state spot price, expiry being shown, ATM strike, and IV regime first; then the table. For a screener, lead with the count of matches and the filters applied.
- Filter aggressively before showing — never paste a 3,000-row chain or a 500-row screener. Default to ATM ± 6 strikes per expiry for chains; for screeners cap to top 20 unless the user asks for more.
- Highlight skew — when showing both calls and puts, note IV skew direction if material.
- For chart-state, report layout id + symbol + interval + URL succinctly; offer to screenshot.
- For news (list mode), group by provider and lead with timestamps in the user's likely timezone (or always UTC ISO if uncertain). Include the link so the user can open the story. For story mode (set), the body is plain text — present it as-is, optionally trimmed.
--id - For watchlists, summarize counts before listing symbols (e.g. "3 watchlists: Earnings (24 syms), AI plays (12 syms), Hedges (8 syms)"). Don't dump 100-symbol watchlist contents unless asked.
- For alerts, group by status (active vs triggered/fired) and order recent firings by desc. Don't expose alert ids unless the user explicitly asks.
fired_at - For screener results, surface the top movers / extreme values in plain prose first (e.g. "highest market cap NVDA at $4.2T, 12 names below the RSI<30 threshold"), then the table.
- Treat sessions as private — never expose CDP target IDs, cookies, or layout IDs unless the user asks.
- Cross-reference with Funda when the user is making a trade decision — TradingView's options/screener data is convenient but can lag; for trade entry analysis, also fetch from the skill and reconcile.
funda-data
- 先呈现结构摘要——对于期权链,先说明现货价格、显示的到期日、平值行权价和隐含波动率区间,再展示表格。对于筛选器,先说明匹配数量和应用的筛选条件。
- 展示前严格筛选——绝不粘贴3000行的期权链或500行的筛选结果。期权链默认显示每个到期日的平值±6行权价;筛选器默认显示前20条结果,除非用户要求更多。
- 突出隐含波动率偏斜——同时显示看涨和看跌期权时,若偏斜明显需标注方向。
- 对于chart-state——简洁报告布局ID+代码+时间周期+URL;主动提供截图服务。
- 对于news(列表模式)——按提供商分组,优先显示用户所在时区的时间戳(若不确定则统一使用UTC ISO格式)。包含链接方便用户打开文章。对于文章模式(指定),正文为纯文本——直接呈现,可选择性截断。
--id - 对于watchlists——先汇总数量再列出代码(例如:"3个观察列表:财报股(24只)、AI概念股(12只)、对冲股(8只)")。除非用户要求,否则不要输出包含100只代码的观察列表内容。
- 对于alerts——按状态分组(活跃 vs 已触发/已执行),最近触发的警报按降序排列。除非用户明确要求,否则不要暴露警报ID。
fired_at - 对于筛选器结果——先用自然语言突出表现最极端的结果(例如:"最高市值为NVDA的4.2万亿美元,有12只股票RSI<30"),再展示表格。
- 会话数据视为隐私——绝不暴露CDP目标ID、Cookie或布局ID,除非用户要求。
- 当用户做交易决策时,交叉参考Funda数据——TradingView的期权/筛选器数据虽便捷但可能滞后;对于交易入场分析,还需调用技能获取数据并核对。
funda-data
Step 5: Diagnostics
步骤5:诊断
bash
opencli tradingview statusReturns CDP connection state and active TradingView tabs. If CDP is down, run to relaunch with the debug port.
opencli tradingview launchbash
opencli tradingview status返回CDP连接状态和活跃的TradingView标签页。如果CDP连接中断,执行以调试端口重启应用。
opencli tradingview launchError Reference
错误参考
| Error | Cause | Fix |
|---|---|---|
| Plugin not installed | |
| App launched without debug port | |
| Logged out of TradingView | Log in inside the desktop app |
| App open but no TradingView page loaded | Open any chart or symbol page, then retry |
| Subscription tier doesn't cover this symbol's options | Check account tier in the desktop app |
| Wrong exchange | Pass |
| Rate limited | Too many requests | Wait a few seconds, then retry |
| 错误 | 原因 | 解决方法 |
|---|---|---|
| 未安装插件 | 执行 |
| 应用未以调试端口启动 | 执行 |
| 未登录TradingView | 在桌面应用中登录账号 |
| 应用已打开但未加载TradingView页面 | 打开任意图表或代码页面,然后重试 |
| 订阅 tier 不包含该代码的期权数据 | 在桌面应用中检查账户等级 |
| 交易所错误 | 显式传递 |
| 速率限制 | 请求过于频繁 | 等待几秒后重试 |
Reference Files
参考文件
- — Every command with all flags, output examples, and analyst workflows
references/commands.md
- — 包含所有命令、参数、输出示例和分析师工作流
references/commands.md