Skip to main content
Glama
Bearspeed77

TradingView MCP Server

by Bearspeed77

tradingview-mcp

MCP-сервер для рабочего процесса крипто-чарт-анализа, описанного в config/rules.json: он загружает свечи, вычисляет нужные вам индикаторы и оценивает на их основе ваши правила смещения и риска.

Замечание по дизайну: почему это не подключается к TradingView

Руководство по настройке, с которого это началось, управляло десктопным приложением TradingView через Chrome DevTools Protocol (--remote-debugging-port=9222). Такой подход дает серверу полный контроль над сессией браузера, в которую вы вошли — он может читать ваш аккаунт, а не только ваши графики.

Ничего в rules.json этого не требует. Спотовые пары Binance, свечи 1W/1D/4H, RSI, MACD, EMA и объем доступны через публичные конечные точки без аутентификации. Поэтому этот сервер читает публичные рыночные данные, не хранит учетные данные и никогда не касается сессии, в которую вы вошли.

Единственное, что дал бы подход CDP — это данные, до которых этот сервер не может добраться: ваши сохраненные макеты и рисунки, платные индикаторы и каналы бирж, на которые вы подписаны. Если они вам нужны, это компромисс, на который нужно пойти осознанно.

Related MCP server: Trading Signals MCP Server

Установка

npm install
npm test          # 46 unit + integration tests, no network required
npm run smoke     # live end-to-end check against the real API

Зарегистрируйте его в Claude Code, объединив config/mcp-entry.json в ~/.claude.json, заменив <HOME> на ваш домашний каталог:

{
  "mcpServers": {
    "tradingview": { "command": "node", "args": ["<HOME>/tradingview-mcp/src/server.js"] }
  }
}

Если mcpServers уже существует, добавьте ключ tradingview в него, а не заменяйте объект.

Укажите серверу на другой файл правил с помощью TRADINGVIEW_MCP_RULES=/path/to/rules.json.

Инструменты

Инструмент

Что делает

tv_health_check

Конфигурация + доступность источника данных. Сообщает ready: false вместо ошибки.

get_rules

Загруженный rules.json, включая разрешенные значения по умолчанию.

get_price

Последняя цена сделки.

get_candles

Сырые OHLCV, от старых к новым.

get_indicators

RSI, MACD, трендовая EMA, 200 EMA, объем, рыночная структура.

get_bias

Смещение для одного символа/таймфрейма с отображением каждого условия.

scan_watchlist

Смещение по всему списку наблюдения и всем таймфреймам.

get_macro_snapshot

Текущие CRYPTOCAP TOTAL / TOTAL3 / BTC.D.

check_risk

Размер позиции и R:R из ваших правил риска.

Как определяется смещение

bias_criteria в rules.json — это текст, полезный для человека и модели, но не поддающийся машинному анализу. Числовые пороги, которые на самом деле управляют get_bias, находятся в bias_engine, поэтому они намеренно синхронизированы.

Символ считается бычьим, только если выполняются все три условия: цена выше трендовой EMA, дневной RSI в бычьем диапазоне и рыночная структура показывает более высокие максимумы и более высокие минимумы. Медвежий — зеркальное отражение. Все остальное — нейтрально.

get_bias всегда возвращает результаты отдельных условий вместе с меткой, чтобы вы могли видеть почему — и если входные данные недоступны (например, 200 EMA на паре без 200 баров истории), он возвращает unknown с причиной, а не число, которое не может подтвердить.

Два намеренных следствия, о которых стоит знать:

  • RSI выше 70 — это не бычий сигнал. Ваш диапазон заканчивается на 70, поэтому вертикальный взлет читается как нейтральный, а не как сигнал к покупке.

  • Ворота RSI всегда берутся с дневного графика, даже при оценке 4H, потому что rules.json указывает условие RSI "на дневном графике".

Период EMA

В ваших исходных правилах было противоречие: все три bias_criteria ссылались на 500 EMA, в то время как indicators_i_care_about перечисляли только 50 и 200. Я установил bias_engine.trend_ema_period на 50, чтобы соответствовать вашему списку индикаторов — 500 EMA на недельном графике потребовала бы примерно десятилетия свечей, которых у большинства этих пар нет.

Если вы имели в виду 500, это изменение в одной строке в config/rules.json, и путь unknown означает, что вы получите честный ответ "недостаточно истории", а не тихо неверный ответ.

Источники данных и их ограничения

Публичный REST Binance для спотовых пар; CoinGecko /global для агрегатов CRYPTOCAP.

Записи CRYPTOCAP содержат только текущие значения — бесплатная история рыночной капитализации недоступна, поэтому get_indicators и get_bias отказываются от них, а не изобретают ряд. scan_watchlist пропускает их и перечисляет под skipped_macro. TOTAL3 вычисляется как TOTAL x (1 - BTC.D - ETH.D).

Binance блокирует некоторые регионы по географическому признаку. Если tv_health_check сообщает о недоступности из сети, которая, как вы ожидаете, должна работать, это первое, что нужно проверить.

Тестирование

npm test работает полностью офлайн: математика индикаторов проверяется по опубликованным эталонным значениям RSI Уайлдера, а уровень MCP управляется реальным клиентом через транспорт в памяти с фиктивным источником данных.

npm run smoke — это часть, которой нужна реальная сеть — он запускает сервер через stdio так, как это делает клиент, и вызывает живой API.

Не финансовая консультация

Этот сервер сообщает, что ваши собственные правила говорят о публичных данных. Он ничего не решает за вас, а окна no_trades_during в rules.json отображаются как напоминания, а не принудительно — здесь ничего не проверяет экономический календарь.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Scheduled scans across all Binance spot and perpetual pairs using CEL rules (RSI, volume, MAs, price action). Runs server-side 24/7, fires webhooks on match, with delivery proof and alert explainability.
    18
    17 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables research on Binance perpetual futures by scanning public data for four structural signals across BTC, ETH, SOL and 12 meme coins, and generating trading plans with counter-evidence, risk sizing, and trackable signal IDs—without placing trades.
    35 npm
    MIT