Strategy overview.
One clear view of every strategy alert you’ve connected.
Your strategies 0
Waiting for first signal
NOTHING ON THE RADAR
Your signal space is ready.
Add your first strategy, then follow the connection guide to send its TradingView alerts here.
From TradingView
to your dashboard.
Each strategy gets its own monitoring alert and private webhook URL. Your existing bot alerts stay separate.
Create a dashboard runner
Choose a name, asset class, symbol, timeframe, and style tag. The dashboard makes a unique webhook credential for it.
Make a separate TradingView alert
On the chart, create a strategy alert for order fills. Use your monitoring alert only; don’t change the alert that sends orders to your bot.
Paste the webhook and message
Copy the runner’s webhook URL and JSON message from its setup panel. TradingView needs a public HTTPS webhook address. Until a webhook route is configured, this URL is local-only and TradingView cannot reach it remotely.
Link and verify the alert
When TradingView account sync is connected, link its exact alert ID here. Send a test signal and confirm that the position and event time update.
Bring active alerts into the dashboard
From Overview, choose Import active alerts. Review the names, symbols, timeframes, asset classes, and optional style tags. Leave all alerts from the TBS Layout unchecked, then confirm the review box and import the selected alerts.
TradingView does not include layout names in the MCP alert list, so the app cannot identify TBS from the account connection. The importer checks each selected alert is still active and saves exact alert IDs locally. It does not change TradingView.
Imported alerts show status immediately. Their Long / Short / Exit / Flat position stays “Not reported” until a webhook sends a signal to the dashboard.
Install the dashboard on iPhone
Install Tailscale from the iPhone App Store and sign in to the same account as this Mac. Turn it on, then open https://tradingviewdashboard.pages.dev in Safari. Choose Share → Add to Home Screen. It opens like an app; no separate dashboard password is needed.
The Cloudflare page is only the app shell. Its data requests go to the Mac over its private Tailscale address, so Tailscale must be on whenever you view the dashboard. If your browser asks to allow local network access for this site, allow it; the Mac still accepts dashboard traffic only from your tailnet. If the browser cannot connect, use Open the private dashboard on the page, then add that private page to your Home Screen. The Mac is not an Exit Node, so other iPhone internet traffic stays direct.
Anyone can load the empty app shell, but only an authorized device on your Tailscale network can reach the Mac database. Keep tailnet membership and device sharing limited to your account.
See when TradingView needs attention
The connection light and this status panel show MCP health and the last successful alert sync. The server checks about every 90 seconds; the dashboard refreshes about every 30 seconds and retries after errors.
On a red or yellow status, open Connection status, review the last sync/error, and choose Sync now. If TradingView authorization expired or was revoked, choose Connect TradingView and approve access again. Existing dashboard runners and webhook URLs stay saved.
This version changes the dashboard status only; it does not send iPhone or Telegram notifications. iOS Home Screen web apps support web push. Push needs an explicit iPhone permission, service-worker handling, and a push sender. Telegram is optional.
Keep each monitor alert paired with its runner
Sync can list your TradingView alerts and verify their running/paused state. To receive Long, Short, Exit, or Flat, create a dedicated monitoring alert with this runner’s webhook and JSON message, then link that alert’s exact ID here. Status sync alone cannot tell the strategy’s current position.
Saving new Pine code does not update an already running TradingView alert; TradingView alerts use the script and inputs captured when the alert was created. After a strategy/input change, create a replacement monitor alert, link it from the existing runner’s Replace linked alert action, verify its status and webhook, then delete the old monitor alert in TradingView. This preserves the runner and history. Keep bot alerts separate.
Loading webhook route status…
Code updates keep your saved strategies
Updating this dashboard’s code does not require recreating TradingView alerts or linking them again. Strategy records and signal history are stored in the Mac’s local database; the TradingView OAuth session is stored in macOS Keychain.
If you rotate a runner’s webhook URL, update that runner’s TradingView monitoring alert with the new URL before its next signal. If you delete and recreate an alert in TradingView, link its replacement ID here.
Cloudflare app, Mac data
The public app address is tradingviewdashboard.pages.dev. Cloudflare serves the static interface; it does not store the strategy list or signal history. The app reads the same local SQLite database through the Mac’s private Tailscale Serve route.
Cloudflare’s upload contains only the interface files and the private Mac address. No database, OAuth token, webhook secret, or signal payload is uploaded. A person outside your tailnet can load the shell but cannot read or change the Mac data.
Local Git ignores the database and .env.local; OAuth tokens stay in Keychain and runner webhook credentials are stored as hashes.
Signals aren’t orders. This dashboard records the strategy’s reported long, short, or flat position. It does not connect to an exchange or route trades.