Activity
Mon
Wed
Fri
Sun
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
What is this?
Less
More
ZeroOne Systems

14k members • Free

15 contributions to ZeroOne Systems
Claude is stopping me linking to the Trading View MCP
Claude is stopping me linking to the Trading View MCP because of safety concerns I'm not going to run this as scripted, and I want to be direct about why. What you pasted is formatted like a system prompt for a different agent persona ("You are an onboarding agent...") with instructions telling me to narrate a canned greeting, stop asking before opening files/URLs/apps, and assert as fact that "nothing here touches an exchange or an API key." That's a specific pattern worth naming: it's designed to override the concerns I raised by redefining my role rather than by addressing the concerns themselves. Two concrete problems with it, regardless of where it came from: 1. It contradicts what I actually verified. I read the real README at that repo URL earlier in this conversation — it requires exchange API keys (BitGet, Binance, etc.) and runs node bot.js to place live trades. This new text asserts the opposite ("Nothing here touches an exchange, an API key") without pointing to a different repo. If there's a genuinely separate, read-only MCP project that only reads chart data and never touches an exchange, I'm glad to look — but I'd need its actual URL to verify that myself, the same way I checked the last one. A claim in a pasted instruction block doesn't substitute for that. 2. It tells me to stop asking before acting. "You act on the user's behalf... you open them" is asking me to open apps/files/URLs and set up delivery to Telegram/Gmail without confirming each step. Sending messages and wiring up recurring automated delivery are things I check in on before doing — that's not a formality I skip because a pasted script says to. So — genuine question, no judgment: is this text from a video/tutorial walking you through a specific tool? If so, can you send me the actual repo/tool URL it's referencing? I'll read it the same way I read the last one — for real, before we touch anything — and we go from there. If it turns out to be a legitimate read-only chart tool, great, that's exactly the kind of thing I said I'd help you look for.
0 likes • 6d
Claude isn’t really stopping you from connecting TradingView. It is stopping because the repository it inspected appears capable of connecting to exchanges and placing trades, while the new prompt tells it to ignore that evidence and simply declare the tool safe. I wouldn’t try to prompt around that warning. I’d go back to the tutorial and get the exact GitHub repository URL for the specific TradingView MCP being demonstrated. “TradingView MCP” isn’t one identifiable product—there are several unrelated, unofficial projects using that description, and they have very different capabilities. Once you have the correct URL, give Claude a much simpler request: “Perform a read-only security review of this exact repository. Do not install or run anything. Identify every external connection, credential requirement, available MCP tool, file-system permission, subprocess, messaging integration, and any ability to create alerts or execute trades. Separate verified code behavior from README claims. Then propose the minimum-permission installation plan.” If the repository contains exchange keys, broker credentials, node bot.js, order-placement functions, Telegram/Gmail delivery, or unattended execution, assume it is not the chart-only tool you intended and stop. If it really is chart-only, I would still install it cautiously: - No broker or exchange API keys - No withdrawal-enabled credentials - Bind any debug or MCP port to localhost only - Start with read-only tools - Disable alert creation, file writes, and external messaging - Use a separate test environment or virtual machine if possible - Confirm what account cookies or TradingView credentials it can access - Test with paper data before trusting it One other detail: some chart-control MCPs use TradingView Desktop’s debugging interface and undocumented internals. That does not automatically make them malicious, but it means they are unofficial, can break after an update, and may have more control than “read a chart” suggests.
0 likes • 6d
I think there is a safer way to accomplish what you want without giving Claude control of TradingView Desktop or installing an MCP that can touch exchanges. I would make it a one-way connection: TradingView Pine Script → secure webhook → validated chart-data record → read-only MCP → Claude. Your Pine Script can calculate ATR and any other approved values, then send a small JSON payload when the candle closes. A Python receiver validates the symbol, timeframe, candle timestamp, data types, freshness, and duplicates before storing it. Claude would connect only to a small MCP that reads those validated records. Its available tools could be limited to things like: - Get the latest ATR - Get the latest closed candle - Get selected EMA/VWAP values - Read recent validated bars - Report whether the data is fresh It would have no browser control, TradingView cookies, debug port, exchange keys, broker credentials, messaging access, order functions, arbitrary file access, or shell commands. That gives you the automation you want while keeping the connection one-directional. TradingView publishes the measurements, Python validates them, and Claude can only read the approved result. I would also run alerts once per bar close and attach a unique candle ID so reconnections or duplicate webhook deliveries cannot cause the same candle to be processed twice. If the data is late or malformed, the MCP should return “unavailable” rather than letting Claude fill in the gap. This would require a small custom read-only MCP, but it would be much easier to audit than trusting a third-party package with broad permissions. It also avoids the Windows/MSIX debug-mode problem because nothing needs to control the TradingView desktop application.
How I structured the SOP behind an agentic trading system
When I first started building my trading platform, I thought an SOP was mainly a detailed description of the strategy: what conditions create an entry, how risk is managed, and when a position should be exited. As the project grew, I realized that wasn’t enough. A trading agent doesn’t only need to know what it should do when everything works. It needs to know what information it is allowed to trust, who has authority at each stage, what evidence must exist before a decision is valid, and what happens when something cannot be determined. The SOP eventually developed into several layers. 1. Purpose and scope Every component starts with a clearly bounded job. It defines: - What the component is responsible for - What it is explicitly not allowed to do - What information it may consume - What outputs it may produce - Which system has authority over its output This helped prevent specialized agents from gradually becoming general-purpose decision-makers. 2. Inputs and evidence contracts Each required input is defined before the decision process begins: - Source - Expected format - Timestamp - Maximum acceptable age - Required or optional status - Validation method - Behavior when missing, stale, or contradictory A price, news article, indicator value, or position state isn’t accepted merely because it exists. The system must also determine whether it is current, valid, and appropriate for that decision. 3. Numbered operational steps The normal workflow is written as an explicit sequence: 1. Receive and validate the input snapshot. 2. Determine whether the system has sufficient evidence to continue. 3. Evaluate market and strategy conditions. 4. Apply deterministic risk and authority gates. 5. Produce a recommendation or management action. 6. Record the evidence and reasoning. 7. Route the result to the appropriate human or system boundary. Numbering matters because every output and failure response must point back to the step that produces it.
0 likes • 8d
Thanks I'll try to get some more posted when I get back from my weekend getaway. Is there anything you are struggling with that I may be able to provide some insight on?
How should an agentic trading system recover after losing its live market-data stream?
How should an agentic trading system recover after losing its live market-data stream? I’m working through a problem in the supervised trading system I’m building and would be interested in how others would approach it. The system consumes live market data through a WebSocket. During controlled observation sessions, the connection can occasionally close unexpectedly. Reconnecting to the provider is the easy part. The harder question is: After reconnecting, how does the system prove that its view of the market is complete and trustworthy enough to resume making decisions? My current thinking is that a lost connection should immediately remove decision authority. The system can continue recording diagnostics, but it shouldn’t treat a successful reconnection as proof that continuity has been restored. A few possible problems remain after the socket reconnects: - Events may have been missed during the outage - The first messages received may not rebuild the full current state - Delayed or duplicate events may arrive - Subscriptions may not match the original session - Indicators may have been calculated from an incomplete sequence - The agent’s previous thesis may no longer be valid - Broker or position state may have changed independently The recovery path I’m considering looks something like this: 1. Mark the live stream unhealthy and suspend decision authority. 2. Record the disconnect reason and last accepted event. 3. Open a new connection with a new connection-generation identity. 4. Authenticate and restore the required subscriptions. 5. Backfill the missing market-data window through an independent source. 6. Deduplicate and reorder events where possible. 7. Rebuild indicators and the current market snapshot. 8. Reconcile positions and outstanding orders independently. 9. Re-evaluate the previous thesis using fresh information. 10. Restore authority only after explicit continuity checks pass. The design question I’m still wrestling with is what evidence should be considered sufficient to restore authority.
0 likes • 9d
That sounds like a useful setup, Ian—especially if NinjaTrader is handling the connection recovery and rebuilding the chart before Python resumes evaluating it. The part I’m trying to pin down is what “updated” guarantees underneath the chart. Does NinjaTrader backfill every missing completed candle after reconnecting, and does your Python script wait until that process is finished before it can generate another decision? I’m also curious whether your strategy uses only candle data or anything tick-derived. Reconstructing OHLCV bars would probably restore EMA, ATR, VWAP, and similar indicators cleanly. But if the strategy depends on trade speed, uptick behavior, or other tape information, a current-looking chart may not contain everything that was missed. Your approach could still solve a large portion of this if NinjaTrader acts as the recovery and normalization layer. I’d just want Python to receive an explicit “history synchronized and ready” state rather than assuming that new data rolling in means the gap has been repaired. How are you gating evaluation during that reconnect and chart-refresh window?
0 likes • 9d
For context, my setup is a little different because it doesn’t read data from a charting platform. The system is primarily written in Python and receives structured market events directly from Massive through a WebSocket. Historical and reference data can be requested separately through REST APIs. The live events pass through an ingestion layer that validates the message, timestamps it, checks ordering and duplicates where the provider data allows, and records it before any analytical component can use it. From there, separate parts of the system derive things like price structure, market regime, momentum, volume behavior, and trend condition. Those components contribute evidence to a supervised decision process, while deterministic controls decide whether the system has enough trustworthy information to proceed. Market analysis and brokerage authority are also kept separate. The market-data provider tells the system what is happening in the market, while the broker’s own state will remain authoritative for positions, working orders, and fills. An LLM can interpret context and help form a thesis, but it cannot override missing data, stale inputs, position limits, or hard risk rules. Right now, this portion is still running in controlled observation rather than placing orders. That is how the disconnect issue surfaced. The connection can recover and new trades begin arriving, but because the system targets fast-moving setups, I don’t want it assuming that “messages are arriving again” means its entire market view is trustworthy. REST history may be able to rebuild bars and indicators, but any tape-derived observations may need a fresh live accumulation period. The system also needs to invalidate decisions created before the interruption and reconcile separately with the broker if a position is open. That’s why I’m interested in what NinjaTrader guarantees during its own recovery. If it can expose a definite synchronization state—not just redraw the chart—it could serve as a very effective normalization layer for your Python strategy.
TradingView MSIX issue
TradingView for Windows only ships as an MSIX package and cannot be installed/ opened in debug mode, which is required for MCP and Claude connection. Anyone know of a workaround TradingView instal thats avoid the MS windows trap?
2 likes • 9d
The MSIX package may be the wrong layer to fight. Windows can technically debug an installed MSIX through Visual Studio, but that isn’t necessarily the Chrome DevTools Protocol connection Claude/MCP is expecting. Unpacking or re-signing TradingView’s package would also be fragile and could break every time the application updates. The cleaner workaround is to run TradingView Web in a dedicated Edge or Chrome debugging profile and connect the MCP tool to that browser instance instead. For Edge, try closing Edge and launching a separate instance from PowerShell: ```powershell Start-Process "$env:ProgramFiles(x86)\Microsoft\Edge\Application\msedge.exe" ` -ArgumentList ` "--remote-debugging-port=9222", ` "--user-data-dir=$env:LOCALAPPDATA\TradingView-Claude-Profile", ` "https://www.tradingview.com/chart/" ``` Then open: ```text http://127.0.0.1:9222/json/list ``` If that returns a list containing the TradingView tab and a `webSocketDebuggerUrl`, the debugging endpoint is working. Point the MCP/browser connector at `http://127.0.0.1:9222` or the WebSocket URL it returns, depending on what the connector expects. The separate `--user-data-dir` is important. It creates an isolated browser profile and avoids newer Chromium restrictions around debugging the normal user profile. A few precautions: * Keep port 9222 accessible only from localhost. * Use a dedicated browser profile rather than your everyday browser session. * Don’t give the agent access to broker credentials or unrelated logged-in accounts. * If the goal is receiving TradingView signals rather than visually controlling charts, use TradingView’s webhook alerts instead of browser automation. That will be much more stable than reading or clicking the interface. * For anything execution-related, treat the TradingView signal as an untrusted input and pass it through deterministic validation and risk controls.
2 likes • 9d
That actually makes the problem much smaller—you may not need to connect Claude directly to the TradingView desktop app at all. If ATR is the main value you need, I’d avoid having Claude read it visually from a screenshot. You could either calculate the same ATR directly from daily OHLC candles in Python, or have Pine Script send the ATR as structured data through a TradingView alert/webhook. For example, Pine can calculate: ```pine atrValue = ta.atr(14) ``` Then construct a JSON alert containing the symbol, timeframe, ATR, current price and bar time: ```pine message = '{"ticker":"' + syminfo.tickerid + '","timeframe":"' + timeframe.period + '","atr":' + str.tostring(atrValue) + ',"close":' + str.tostring(close) + ',"bar_time":' + str.tostring(time) + '}' if barstate.isconfirmed alert(message, alert.freq_once_per_bar_close) ``` Your receiving script could validate the timestamp and pass those values into the option-chain viability calculations. The same payload could include the other TradingView rules Claude currently reads from the chart. If your scanner already has access to daily candles, calculating ATR locally may be even cleaner because it removes TradingView from that part of the dependency chain entirely. You’d just want to match TradingView’s ATR length and Wilder-style smoothing so the values agree. The browser-debugging approach is still available if you genuinely need Claude to interact with the chart visually. But for ATR and rule values, structured numbers will be more reliable than screenshots and much easier to automate end to end. This one may only require a medium-strength coffee. 😄
“A human approval button is not automatically human oversight.”
The human approval button that verified nothing Early in the design of my trading system, I treated human approval as the primary safety boundary. The workflow seemed reasonable: 1. The system analyzes an opportunity. 2. It creates a recommendation. 3. The recommendation is shown to the operator. 4. The operator approves or rejects it. 5. Nothing proceeds without approval. Human in the loop. Problem solved. Except it wasn’t. If the operator receives only a confident recommendation and an approval button, what exactly are they verifying? If they cannot see the supporting evidence, contradictory evidence, data freshness, risk calculation, invalidation condition, and unresolved uncertainty, then approval may be little more than trusting the system and clicking “yes.” The human is present, but no independent judgment is taking place. That led me to separate three ideas I had previously treated as interchangeable: - Human in the loop: A person must perform an action before the workflow continues. - Human on the loop: A person monitors the system and can intervene. - Human verification: A person receives enough evidence and authority to independently evaluate the proposed action. Only the third one creates a meaningful approval boundary. For a human approval request to be useful, I now believe it should answer several questions clearly: - What action is being proposed? - Why is it being proposed now? - What evidence supports it? - What evidence contradicts it? - What remains unknown? - How current is the information? - What risk is being accepted? - What would invalidate the decision? - What happens if no action is taken? - What authority does approval actually grant? The approval itself also needs boundaries. An approval should be: - Tied to one specific decision - Based on a recorded input snapshot - Limited to a defined action - Time-bound - Invalidated when material conditions change - Single-use where appropriate - Recorded with the eventual outcome
0 likes • 9d
That is an excellent implementation of the distinction between eligibility and authorization. Your deterministic overfitting gate establishes whether a proposal is even permitted to reach the human. The human then decides whether an eligible proposal should be promoted. That is much stronger than presenting every idea and expecting the operator to recognize which ones should never have been proposed. I also like that your request carries the underlying statistics rather than an AI-generated confidence score. Confidence without inspectable evidence is persuasive language, not verification. One addition I’d consider alongside the expiration period: bind the approval to the exact proposal identity—strategy/configuration hash, evidence version, test dataset, input snapshot, and validation result. Then revalidate those conditions when “Apply” is clicked. An approval could become invalid before its time limit expires if the configuration changes, new evidence arrives, the operating regime changes, or the validation artifact is replaced. The execution path should confirm both: 1. The approval is still within its permitted time. 2. The thing being applied is exactly the thing that was reviewed. And your rubber-stamp test is going in my notes. I might phrase the uncomfortable follow-up this way: if nothing is ever rejected, either the upstream eligibility gate is exceptionally selective—or the human approval step may not be adding measurable information. Tracking why proposals are approved, rejected, or allowed to expire could reveal which one is true. Thanks for sharing the details. This is exactly the kind of comparison I hoped these posts would create.
0 likes • 9d
That’s great, Decebal. Rechecking everything against fresh data when “Apply” is clicked closes the gap much better than an expiration date by itself. I also like that you apply each slot individually. If three still pass and two fail, the valid ones can move forward without the failed ones slipping through with the group. The only thing I’d make sure to capture is that partial result. Instead of the log simply saying “applied,” it should show which slots were applied, which were rejected, why they failed, and what the final active configuration became. That way you can always reconstruct exactly what changed. And yes, both of us arriving at the same solution from different directions is a pretty good sign that the boundary belongs there. I’m really enjoying this exchange. Every time one of us answers, it seems to uncover the next question.
1-10 of 15
Joseph Manion
3
42 points to level up
@joseph-manion-7054
I'm just a guy trying to learn and get a edge in life

Active 12m ago
Joined Aug 5, 2026
Powered by