MCP-сервер AlgoVesta: пусть Claude, ChatGPT, Cursor и Gemini торгуют на ваших реальных счетах на бирже и в MetaTrader 5
Что это такое: AlgoVesta размещает хостируемый сервер Model Context Protocol (MCP), который предоставляет ИИ-ассистенту двадцать реальных торговых инструментов через одну HTTPS-ссылку. Вставьте эту единственную ссылку в Claude, ChatGPT, Cursor, Claude Code, Gemini CLI или любой другой MCP-совместимый клиент, и ассистент сможет читать балансы, открывать и закрывать позиции, переставлять стоп-лосс и тейк-профит, а также проверять собственные действия сразу на 16 криптобиржах и форекс через MetaTrader 5 — используя настройки риска, уже сохранённые вами в AlgoVesta, за серверной стеной политик, которую не может обойти ни один промпт. Каждое подключение начинается с виртуального баланса $5,000, а каждое действие возвращает квитанцию, подписанную ed25519.
Model Context Protocol: открытый стандарт для подключения ИИ-ассистентов к внешним системам. Большинство MCP-серверов, связанных с трейдингом, транслируют рыночные данные в окно чата. Этот исполняет: это уровень маршрутизации ордеров с детерминированным риск-движком перед ним, а ИИ выступает лишь вызывающей стороной — но никогда не инстанцией, принимающей решения.
Быстрый старт
Настройка занимает три шага и не требует кода. Весь процесс находится во вкладке MCP Connection вашей панели AlgoVesta.
Откройте вкладку MCP Connection и сгенерируйте ключ. По умолчанию новые ключи получают область paper . Полная ссылка показывается один раз — скопируйте её сразу.
Вставьте ссылку в ваш ИИ-клиент как пользовательский MCP-сервер. Ни один API-ключ не покидает AlgoVesta, код не нужен, локальная установка не требуется.
Просто общайтесь. “Как мой портфель?” “Смоделируй лонг на $200 по ETHUSDT с плечом 5x.” “Закрой половину моей позиции по BTC.”
Ваш URL подключения выглядит так:
https://api.algovesta.com/u/avmcp_<your-key>/mcp
Этот URL представляет собой учётные данные. Любой, кто им обладает, может действовать в рамках его области на ваших счетах. Относитесь к нему как к паролю: никогда не вставляйте его в публичный чат, скриншот, общий репозиторий или тикет поддержки. Если он утёк, отзовите его в панели — отзыв вступает в силу немедленно для новых подключений и обрывает открытые потоки событий за считаные секунды.
Какие ИИ-ассистенты могут подключаться
Подключиться может любой клиент, работающий по MCP через Streamable HTTP. В таблице ниже указано то, что было проверено на живом сервере, включая реальные ограничения — некоторые из них являются ограничениями самого ИИ-продукта, а не AlgoVesta, и вы столкнётесь с ними независимо от того, каким MCP-сервером пользуетесь.
| ИИ-клиент | Куда вставить ссылку | Примечания и реальные ограничения |
|---|---|---|
| Claude (веб, десктоп, iOS, Android) | Customize → Connectors → Add custom connector | Полная поддержка. Названия инструментов и диалоги подтверждения поступают напрямую с сервера. |
| Claude Code | claude mcp add --transport http | Командная строка. Полезно для скриптовых или повторяемых рабочих процессов. |
| Cursor | mcp.json, "url" поле | Полная поддержка. Обратите внимание, имя ключа: url здесь — в Gemini CLI используется другое. |
| ChatGPT | Режим разработчика / пользовательский коннектор | Только платные тарифы. Пользовательские MCP-коннекторы недоступны на бесплатном тарифе, и может потребоваться сначала включить режим разработчика. Это ограничение OpenAI. |
| Gemini CLI | ~/.gemini/settings.json, "httpUrl" поле | Только CLI. Веб-приложение Gemini не поддерживает пользовательские MCP-серверы. Используйте httpUrl ключ, а не url. |
| Любой другой MCP-совместимый клиент | Собственные настройки MCP / коннекторов | Сервер реализует стандарт, поэтому клиент с поддержкой удалённого MCP через Streamable HTTP будет работать без каких-либо специфичных для него настроек. |
Пример для Cursor (mcp.json):
{
"mcpServers": {
"algovesta": {
"url": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
}
}
}
Пример для Gemini CLI (~/.gemini/settings.json) — обратите внимание httpUrl:
{
"mcpServers": {
"algovesta": {
"httpUrl": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
}
}
}
Claude Code:
claude mcp add --transport http algovesta https://api.algovesta.com/u/avmcp_<your-key>/mcp
Транспорт и протокол
| Транспорт | Streamable HTTP, без сохранения состояния, ответы в формате JSON. Каждый запрос аутентифицируется независимо. |
| Имя сервера | AlgoVesta |
| Эндпоинт секретной ссылки | https://api.algovesta.com/u/<key>/mcp |
| Эндпоинт OAuth | https://api.algovesta.com/mcp |
| Список инструментов может меняться | tools.listChanged = true. Клиенты обновляют список инструментов при переподключении, поэтому новые инструменты и параметры появляются без удаления и повторного добавления коннектора. |
| Поток событий | Server-sent events по адресу /mcp/events и /u/<key>/events, изолированный по клиенту (tenant), с Last-Event-ID переподключением. |
| Машиночитаемая схема | /mcp/tools.json — полная JSON Schema всех 20 инструментов, именно в том виде, в каком её получает клиент. |
Аутентификация и области действия
Есть два способа подключения, и оба сводятся к одному и тому же контексту клиента (tenant). Инструменты никогда не принимают ID пользователя в качестве параметра — идентичность считывается только из аутентифицированного соединения, из-за чего доступ к чужому счёту структурно невозможен, а не просто запрещён.
Секретная ссылка
Ключ вида avmcp_<32-byte urlsafe random>, встроенный в путь URL. Он хранится в виде хэша Argon2id плюс поискового хэша SHA-256; открытый текст существует только в момент создания и впоследствии никогда не может быть восстановлен. У каждого ключа своя область действия, своя метка и свой статус отзыва, поэтому вы можете использовать один paper-ключ в Cursor и один live-ключ в Claude и отозвать любой из них независимо.
OAuth 2.1
Для клиентов, предпочитающих полноценный флоу авторизации. Поддерживаемые типы grant: authorization_code и refresh_token, с ротацией refresh-токенов. PKCE с S256 обязателен — запрос без него отклоняется. Доступна динамическая регистрация клиентов, поэтому большинство клиентов настраиваются автоматически. Документы обнаружения (discovery):
GET https://api.algovesta.com/.well-known/oauth-authorization-server
GET https://api.algovesta.com/.well-known/oauth-protected-resource
POST https://api.algovesta.com/mcp/oauth/register
GET https://api.algovesta.com/mcp/oauth/authorize
POST https://api.algovesta.com/mcp/oauth/token
Три области действия
| Область действия | Что можно делать | Как получить |
|---|---|---|
read | Портфель, цены, отложенные ордера, симуляции, предпросмотр политик, проверка квитанций, воспроизведение канала. Ни один ордер не может быть выставлен. | Создаётся напрямую. |
paper | Всё, что в read, плюс ордера, исполняемые на бумажном (paper) движке с виртуальным балансом $5,000. Значение по умолчанию для новых ключей. | Создаётся напрямую. |
live | Всё вышеперечисленное, плюс реальные ордера на подключённых биржах и счетах MetaTrader 5. | Требуется второй фактор. Действующий код аутентификатора (TOTP) либо код подтверждения, отправленный на e-mail вашего аккаунта и действительный 10 минут. Проверяется на стороне сервера, без исключений. |
Области действия ранжированы, поэтому инструмент, требующий paper отклонит read ключ с insufficient_scope. Поэтому граница между смоделированными и реальными деньгами является свойством самого ключа, а не промпта, настройки или суждения модели’.
Справочник инструментов — все 20 инструментов
Это именно те инструменты, которые видит ваш ассистент. Инструменты чтения безопасно вызывать без предварительного запроса; шесть инструментов записи запрашивают подтверждение в клиентах, которые это поддерживают, и три из них — place_order, close_position и cancel_order — дополнительно помечены как деструктивные в своих аннотациях.
| Инструмент | Область действия | Тип | Назначение |
|---|---|---|---|
get_portfolio_context | read | только чтение | Все подключённые счета за один вызов |
get_market_price | read | только чтение | Актуальная цена с указанием её свежести |
simulate_order | read | только чтение | Тестовый прогон (dry-run), включая вердикт политики |
place_order | paper / live | деструктивный | Открывает позицию |
close_position | paper / live | деструктивный | Закрывает полностью или частично |
modify_position | paper / live | запись | Переставляет стоп-лосс и тейк-профит |
list_open_orders | read | только чтение | Отложенные лимитные ордера |
cancel_order | paper / live | деструктивный | Отменяет отложенный ордер |
compile_policy | read | только чтение | Превращает правила на обычном языке в предпросмотр политики |
verify_receipt | read | только чтение | Проверяет подпись и цепочку хэшей |
replay_channel | read | только чтение | Тестирует Telegram-канал на исторических данных по вашим правилам |
get_trade_history | read | только чтение | Закрытые сделки и результаты по крипте, MT5 и paper |
compare_venues | read | только чтение | Ранжирует подключённые биржи по измеренной цене и спреду |
list_strategies | read | только чтение | Стратегии TradingView; URL вебхука никогда не возвращается |
create_strategy | paper / live | запись | Новая стратегия, всегда с выключенным исполнением на реальные деньги |
update_strategy | paper / live | запись | Настройки стратегии; auto_trade отклоняется |
backtest_my_signals | read | read-only | Переигрывает ваши прошлые сигналы с другими настройками (задача в очереди) |
simulate_policy | read | read-only | Применяет правила риска к вашим реально закрытым сделкам (задача в очереди) |
import_tradingview_backtest | read | read-only | Пересчитывает выгрузку TradingView с реальной комиссией и проскальзыванием (задача в очереди) |
get_job_status | read | read-only | Прогресс и результат задачи из очереди |
get_portfolio_context
Не принимает параметров. Возвращает нормализованное представление каждого биржевого счёта, каждого счёта MetaTrader 5 и paper-счёта, принадлежащих аутентифицированному ключу — и ничего больше. Именно этот вызов превращает вопрос “как у меня дела?” в один запрос вместо шестнадцати.
Два поля важнее остальных. Для криптосчетов balance и equity описывают только фьючерсный кошелёк; спотовые средства указываются отдельно в spot_balance, поэтому ассистент, читающий только balance может ошибочно решить, что у вас ничего нет. Для счетов MetaTrader 5 positions_source принимает значение либо live_ea, что означает: список позиций сверен с терминалом, либо unavailable, что означает: терминал недоступен. В случае unavailable пустой список позиций не означает “нет открытых позиций” — это означает неизвестно, и описание инструмента предписывает модели прямо сказать об этом, а не успокаивать вас.
get_market_price
Параметры: venue, symbol. Возвращает {ok, venue, symbol, last, bid, ask, ts, source, age_sec}. Цены берутся из общего кэша, обновляемого примерно раз в секунду; при промахе кэша сервер делает один живой REST-запрос к бирже. Если значение старше 10 секунд или вообще не может быть получено, это указывается явно — устаревшая цена никогда не выдаётся за актуальную. Если символ не найден ни на одной подключённой бирже, может быть возвращена информационная цена с DEX вместе с явным предупреждением, что торговать им на ваших подключённых площадках нельзя.
simulate_order
Обязательно: venue, symbol, side, order_type, idempotency_key. Не отправляет ордер. Возвращает ожидаемое исполнение, влияние на маржу и вердикт политики, а также абсолютные цены стоп-лосса и тейк-профита, рассчитанные сервером. Это операция чтения, поэтому корректно ведущий себя ассистент вызывает её без запроса разрешения, показывает вам одну сводку и запрашивает ровно одно подтверждение перед тем, как что-либо выставить.
place_order
Обязательно: venue, symbol, side, order_type, idempotency_key. Опционально: account, market, size_usd, margin_usd, risk_pct, lots, leverage, sl, tp, sl_pct, tp_pct, take_profits, entry_price.
Параметр idempotency_key не для галочки. Если один и тот же ключ приходит дважды для одного пользователя, возвращается сохранённый ответ, и второй ордер не открывается — именно это защищает вас, когда клиент повторяет запрос после таймаута, телефон теряет сигнал в момент подтверждения или модель вызывает инструмент дважды.
Размер позиции задаётся явно намеренно. Для крипты вы передаёте ровно одно из трёх полей, и означают они разное:
| Поле | Значение | Пример при плече 5x |
|---|---|---|
size_usd | Стоимость позиции (номинал) | size_usd=100 → позиция на $100, из них $20 ваших денег |
margin_usd | Обеспечение из ваших собственных средств | margin_usd=20 → позиция на $100 |
risk_pct | Процент используемого свободного баланса в качестве маржи. Это не расчёт риска по дистанции стоп-лосса; дистанция стоп-лосса в расчёт не входит. | risk_pct=1 при балансе $2,000 → маржа $20 → позиция на $100 |
Для форекса и MetaTrader 5 размер задаётся в lots , а leverage вообще не отправляется — продукт торгуется без плеча, и размер определяется объёмом лота. Указанный вами размер лота используется точно и никогда не округляется до удобного значения; если он выходит за пределы лимитов вашего брокера’, ордер отклоняется, а в ответ сообщается допустимый диапазон.
Допуск по размеру ордера. Биржи принимают только определённые шаги лота, поэтому запрошенная сумма подгоняется к ближайшему допустимому шагу. Если отклонение остаётся в пределах 20%, ордер исполняется, а точное отклонение сообщается вам в ответе; свыше 20% ордер не открывается, и вам сообщаются в цифрах, какие ближайшие суммы сработали бы. Этот порог был выбран путём повторного прогона всех реальных ордеров, когда-либо прошедших через функцию расчёта размера, а не выбран интуитивно.
Пропущенные поля берутся из ваших сохранённых настроек. Если вы не указали стоп-лосс, тейк-профит или плечо, ассистенту предписано оставить эти поля пустыми, и сервер заполняет их из настроек, сохранённых в вашей панели — тех же значений, что использует ручная панель и Telegram-бот. В ответе сообщается, какие поля были взяты из сохранённых настроек, в prefs_used. Это сделано из-за реально зафиксированного сбоя: когда эти поля были обязательными, модели приходилось придумывать значения, и пять из пяти ордеров перезаписывали собственные настройки клиента’.
close_position
Обязательно: venue, symbol, side, idempotency_key. Опционально: fraction (от 0 до 1], account, ticket. Работает для крипты и для MetaTrader 5. Закрытие снижает риск, поэтому стена политик никогда его не блокирует — это может сделать только kill switch. Десять вызовов с одним и тем же ключом идемпотентности выполняют ровно одно закрытие. Если подходящей позиции не существует, вы получаете POSITION_NOT_FOUND вместе со списком позиций, которые действительно открыты на этой площадке, чтобы ассистент мог исправиться, а не гадать.
У MetaTrader 5 нет частичного закрытия — Expert Advisor закрывает позицию полностью — поэтому используйте fraction=1 там. Когда по одному символу открыто несколько позиций MT5, ticket становится обязательным, и пока цель неоднозначна, ничего не закрывается.
modify_position
Обязательно: venue, symbol, side, idempotency_key, плюс хотя бы одно из new_sl / new_tp. Стоп-лосс нельзя убрать — правило обязательного SL действует и здесь. Порядок значений проверяется: для лонга нужно new_sl < mark < new_tp, а для шорта наоборот. Если передана только одна сторона, другая остаётся на текущем значении, а не удаляется. Как и при закрытии, неоднозначный тикет MT5 означает, что ничего не изменяется.
list_open_orders
Опционально: venue. Выводит список отложенных лимитных ордеров с order_ref, площадкой, символом, стороной, ценой входа, размером и временем создания.
Прежде чем просить ассистента проверить ваши открытые ордера, стоит знать один нюанс: отслеживаемые этим инструментом отложенные ордера находятся в бумажной (paper) книге ордеров. Ордера, размещённые на реальной площадке через MCP, отправляются как рыночные ордера, поэтому они исполняются сразу, а не остаются в ожидании, и пустой список на реальном счёте означает, что ничего не ожидает исполнения, а не то, что что-то пропало.
cancel_order
Обязательно: venue, order_ref, idempotency_key. Если указанный идентификатор вам не принадлежит, ответом будет NOT_FOUND — никогда не намёк на то, что чужой ордер’ существует. Как и закрытие, это снижает риск, и стена политик его не блокирует.
compile_policy
Обязательно: natural_text. Вы пишете правило на обычном языке — “никогда не рискуй более чем 2% на одну сделку, плечо не выше 10, торговать только BTC и ETH” — и оно компилируется в JSON-политику, возвращаемую как предпросмотр. Компиляция никогда ничего не активирует. Активация является отдельным, осознанным шагом из панели или через POST /api/mcp/policies/{policy_id}/activate, а значит, модель не может ослабить ваши правила, просто рассуждая о них.
verify_receipt
Обязательно: receipt_id. Возвращает signature_valid и chain_valid; действие считается подтверждённым, только если оба значения истинны. Квитанции подписаны ed25519 и связаны в хэш-цепочку по каждому пользователю, поэтому изменение более ранней квитанции ломает все последующие, и chain_valid становится false. Публичный ключ доступен по адресу /mcp/receipts/pubkey, поэтому вы можете проверить всё независимо, не доверяя этому эндпоинту. Более старые квитанции эпохи HMAC возвращают legacy=true.
replay_channel
Обязательно: channel_ref. Опционально: days (до 90, по умолчанию 30), policy_override. Отвечает на вопрос “что если бы я следовал этому Telegram-каналу последние X дней по своим правилам?”, воспроизводя его прошлые сигналы в режиме paper-торговли, причём каждый сигнал проходит через стену политик, поэтому отклонённые никогда не открываются. Прогресс поступает в виде replay_progress событий. Результаты кэшируются на 24 часа, инструмент ограничен 5 воспроизведениями в час. Результат: {trades:[...], summary:{total_pnl, win_rate, max_drawdown, avg_rr, policy_rejections}}.
get_trade_history
Опционально: venue, symbol, days (1–365, по умолчанию 30), limit (1–200, по умолчанию 50), market (crypto / forex / paper). Возвращает закрытые сделки из всех трёх источников одним списком, сначала самые новые, плюс summary. Сводка намеренно консервативна: avg_rr вычисляется только по сделкам, где вход, стоп-лосс и выход известны, а rr_sample сообщает, сколько таких было; total_pnl равен null, если смешаны несколько валют счетов, вместо этого указывается pnl_by_currency; комиссия нигде не фиксируется, поэтому fee остаётся null, а PnL по крипте указан без вычета комиссии. Если источник не удалось прочитать, incomplete_sources называет его, вместо того чтобы выдать короткий список так, будто он полный.
compare_venues
Обязательно: symbol. Опционально: market (futures по умолчанию, либо spot), side. Возвращает для каждой подключённой криптобиржи живую цену и — на площадках, публикующих bid/ask — спред в базисных пунктах, а также разницу цен между площадками. Он не выбирает площадку: ваш ордер всё равно указывает конкретную. Торговые комиссии, глубина стакана и проскальзывание перечислены в basis.not_measured и никогда не оцениваются, а площадка, не публикующая bid/ask, попадает в not_comparable_on_spread, а не ранжируется так, будто её спред равен нулю. Поэтому cheapest_measured означает “наименьший измеренный спред”, а не “самая дешёвая в целом”.
list_strategies
Без параметров. Возвращает ваши стратегии TradingView с их настройками, plan_limit и can_create_more. auto_trade указывается для каждой стратегии, чтобы ассистент мог сказать вам, какие из них работают на реальные деньги. URL вебхука, демо-URL и секрет HMAC исключены из ответа — раскрываются только webhook_url_configured и has_hmac_secret, потому что сам URL является учётными данными.
create_strategy
Опционально: name. Обязательно: idempotency_key. Создаёт стратегию TradingView с выключенным auto_trade; это поле недоступно для записи через MCP, поэтому только что созданная стратегия не может выставлять реальные ордера, пока вы сами не активируете её в панели. Подчиняется квоте стратегий вашего тарифа — при превышении лимита возвращается кодированная ошибка лимита тарифа, а не молчаливое бездействие.
update_strategy
Обязательно: strategy_id, changes, idempotency_key. Изменяет плечо (ограничено диапазоном 1–20), процент риска (0.1–50), проценты стоп-лосса и тейк-профита, настройки трейлинга и безубытка, разрешённые символы, целевой счёт и принимает ли стратегия сигналы. auto_trade, status и ip_allowlist отклоняются и возвращаются в refused_fields; удаление возможно только из панели. Включение reverse_enabled возвращает warning, потому что с этого момента сигнал BUY открывает SHORT.
backtest_my_signals
Необязательно: days (1–90), source, symbols, margin_usd, leverage, sl_pct, tp_pct, max_hold_minutes, taker_fee_bps, partial_tp. Прогоняет сигналы, которые вы действительно получали, по реальным историческим минутным барам mainnet дважды: один раз с исходными стопом, тейком и плечом сигнала, другой — с вашими настройками. Сразу возвращает job_ref; результат забирается через get_job_status. В каждом результате есть coverage (сколько сигналов удалось смоделировать и почему остальные нет) и assumptions (комиссии, проскальзывание, частичный тейк и что не моделируется). Сигналы без стопа, со стопом не с той стороны от входа или без исторических данных считаются и пропускаются, а не угадываются.
simulate_policy
Необязательно: policy_text (обычный язык), rules (уже скомпилированные), days (1–365). Применяет правила риска к вашим реально закрытым сделкам и показывает, какие были бы отклонены, каким правилом и какова разница в PnL. Возвращает job_ref. Два ограничения указываются всегда: правила, зависящие от состояния счёта в момент ордера (открытые позиции, дневной убыток, баланс), оцениваются нулями, потому что это состояние невозможно восстановить по закрытым сделкам — такие правила НЕДОсчитываются, а не пересчитываются; PnL берётся из ваших зафиксированных результатов, приводится по каждой валюте и никогда не складывается между валютами.
import_tradingview_backtest
Обязательно: csv_text. Необязательно: taker_fee_bps, slippage_bps, leverage. Берёт CSV, выгруженный из Strategy Tester TradingView (List of Trades), и пересчитывает его с реальными издержками: комиссия тейкера и измеренное проскальзывание на входе и на выходе. Pine Script никогда не выполняется и не интерпретируется — пересчитывается только ваш выгруженный список сделок — а цены остаются такими, какими их сообщил TradingView. К строкам без колонки количества нельзя применить комиссию, поэтому они остаются оптимистичными, и их число сообщается. Возвращает job_ref.
get_job_status
Необязательно: job_ref. Со ссылкой возвращает состояние задачи и, когда она готова, её результат; без аргумента перечисляет ваши недавние задачи. status — одно из PENDING, RUNNING (с процентом в progress), DONE, FAILED (запланирована повторная попытка), DEAD или CANCELLED. Задачи выполняются по одной, поэтому queue_position показывает, сколько задач впереди. На чужую ссылку приходит ТОТ ЖЕ ответ “не найдено”, что и на несуществующую, поэтому перебрать их нельзя.
Результаты не хранятся вечно, и эти ограничения стоит знать заранее, прежде чем полагаться на них. Полный результат сохраняют только 20 последних завершённых задач; более старые сокращаются до сводки и возвращаются с result_pruned: true, то есть подробные строки удалены, и задачу нужно запустить заново, чтобы их восстановить. Всё удаляется через 30 дней. Запуски бэктестов и политик также записываются в историю бэктестов вашего аккаунта, и результат несёт run_id, под которым они были сохранены.
Стена политик
Именно эта часть делает передачу инструментов языковой модели оправданной. Ваши правила один раз компилируются в JSON, проверяются по фиксированной схеме, а затем оцениваются на сервере и детерминированно для каждого ордера. Модель никогда их не оценивает, никогда не видит способа их обойти, и её нельзя уговорить их ослабить — ни вам самим в момент нетерпения, ни промптом, внедрённым через веб-страницу или сообщение в Telegram, которое она случайно прочитала. Нарушение считается жёстким отказом с записью в журнал аудита.
| Правило | Тип | Значение |
|---|---|---|
max_risk_per_trade_pct | число, 0–100 | Верхний предел доли одной сделки’ от счёта |
max_order_size_usd | число > 0 | Абсолютный предел на стоимость ордера |
max_daily_loss_usd | число > 0 | Остановить торговлю на день после превышения этого убытка |
max_open_positions | целое число | Лимит одновременных позиций |
leverage_cap | число, 1–1000 | Ваш собственный предел плеча |
venue_scope | массив | Ограничить ИИ указанными площадками |
symbol_whitelist | массив | Торговать можно только этими символами |
symbol_blacklist | массив | Этими символами никогда не торговать |
allowed_sides | массив | Только лонг, только шорт или оба варианта |
notes | строка | Ваша собственная пометка |
Скомпилированная политика, не прошедшая проверку схемы, вообще не может быть активирована. Частично действительной политики не бывает.
Модель безопасности
| По умолчанию paper-режим | Каждый новый ключ начинает работу в области paper с виртуальным балансом $5,000. Доступ к реальным деньгам является явным, отдельным действием. |
| Стоп-лосс обязателен | Если нет ни явного стоп-лосса, ни сохранённого значения по умолчанию, ордер отклоняется. Позже его тоже нельзя убрать. |
| Идемпотентность | Каждый инструмент записи требует сгенерированный клиентом ключ длиной не менее 8 символов. Повторы возвращают сохранённый ответ вместо повторного действия. |
| Kill switch | POST /api/mcp/freeze останавливает всё сразу; после этого каждый инструмент возвращает user_frozen. /unfreeze отменяет это. |
| Отзыв по отдельному ключу | Отзовите одного клиента, не затрагивая остальных. Открытые потоки событий обрываются за считаные секунды. |
| Подписанные квитанции | Подпись ed25519 плюс хэш-цепочка по каждому пользователю для каждого действия, проверяемая по публичному ключу. |
| Журнал аудита | Каждый вызов записывается с именем инструмента, аргументами, результатом и задержкой, доступен для чтения по адресу GET /api/mcp/audit и в панели. |
| Изоляция клиентов (tenant) | Инструменты не могут принимать ID пользователя; идентичность определяется только аутентифицированным соединением. |
| Ключи только для торговли | Ваши API-ключи биржи создаются без права на вывод средств и хранятся зашифрованными по AES-256. Ордера отправляются с фиксированных торговых IP-адресов AlgoVesta, которые вы добавляете в белый список на бирже. |
О плече, прямо: AlgoVesta не устанавливает предел плеча для вашего собственного счёта — это делает ваша биржа, а свой собственный предел вы можете задать с помощью правила leverage_cap политики. Форекс через MetaTrader 5 в этом пути торгуется без плеча, размер задаётся лотами. Если кто-то говорит вам, что платформа здесь “ограничивает плечо 20x”, он описывает то, чего не существует.
Ошибки
| Код | HTTP | Когда возникает |
|---|---|---|
unauthorized | 401 | Ключ отсутствует, недействителен или отозван |
insufficient_scope | 401 | Инструменту требуется более высокая область действия, чем у ключа |
forbidden | 403 | Не разрешено для этого счёта |
user_frozen | 403 | Активен kill switch |
policy_violation | 403 | Правило отклонило ордер; в ответе указано, какое именно |
idempotency_conflict | 409 | Один и тот же ключ был повторно использован с другими аргументами |
validation_failed | 422 | Некорректные или противоречивые аргументы |
rate_limited | 429 | Слишком много вызовов; retry_after включается в ответ |
Отказы на уровне бизнес-логики приходят как структурированные результаты, а не как транспортные ошибки, поэтому ассистент может на них реагировать: VENUE_NOT_CONNECTED, ACCOUNT_REQUIRED, ACCOUNT_AMBIGUOUS, ACCOUNT_NOT_FOUND, POSITION_NOT_FOUND, MISSING_FIELDS, INVALID_SIDE, SL_REMOVAL_FORBIDDEN. Сообщения об ошибках никогда не раскрывают внутренние детали и никогда не сообщают ничего о чужом счёте.
Лимиты частоты запросов
| Область действия лимита | Лимит |
|---|---|
| Все вызовы инструментов, на ключ | 60 в минуту |
place_order | 10 в минуту |
replay_channel | 5 в час (результаты кэшируются на 24 часа) |
| Письмо подтверждения области live | 1 в минуту |
События в реальном времени
Изолированный по клиенту (tenant) поток server-sent событий доступен по адресу /mcp/events (OAuth) и /u/<key>/events (секретная ссылка), с Last-Event-ID переподключением, поэтому оборвавшееся соединение возобновляется, а не начинается заново. Типы событий: fill, policy_rejected, position_closed, sl_hit, tp_hit, и replay_progress во время воспроизведения канала.
Площадки — 16 бирж и MetaTrader 5
Одно подключение даёт доступ ко всем ним. Площадка становится доступна ИИ только после того, как вы подключите её в AlgoVesta; запрос к неподключённой площадке возвращает VENUE_NOT_CONNECTED вместо угадывания.
| Биржа | venue значение |
Рынки | Нужен ли passphrase |
|---|---|---|---|
| Binance | binance | Спот, фьючерсы | Нет |
| Bybit | bybit | Спот, фьючерсы | Нет |
| OKX | okx | Спот, фьючерсы | Да |
| KuCoin | kucoin | Спот, фьючерсы | Да |
| Gate.io | gateio | Спот, фьючерсы | Нет |
| Bitget | bitget | Спот, фьючерсы | Да |
| Kraken | kraken | Спот, фьючерсы | Нет |
| Coinbase | coinbase | Спот | Нет |
| BingX | bingx | Спот, фьючерсы | Нет |
| Hyperliquid | hyperliquid | Фьючерсы | Нет |
| Backpack | backpack | Спот, фьючерсы | Нет |
| HTX | htx | Спот, фьючерсы | Нет |
| BloFin | blofin | Спот, фьючерсы | Да |
| Phemex | phemex | Спот, фьючерсы | Нет |
| WOO X | woo | Спот, фьючерсы | Да (Application ID) |
| CoinEx | coinex | Спот, фьючерсы | Нет |
| MetaTrader 5 (форекс, металлы, индексы) | mt5 | Лоты, путь без плеча | Логин у брокера |
| Paper-движок | paper | $5,000 виртуальных | — |
Шесть из них — Binance, Bybit, OKX, Gate.io, KuCoin и Bitget — проверены от начала до конца на реальных деньгах как на фьючерсах, так и на споте: подтверждено, что стоп-лосс и тейк-профит существуют на самой бирже и в точности совпадают с записанными значениями. У каждой биржи свои особенности, и эти различия сделаны намеренно, а не являются пробелами: Bybit и Bitget не принимают вторую ногу тейк-профита на споте, спот OKX маршрутизируется через низкоуровневый (raw) API, чтобы кассовый счёт незаметно не превратился в маржинальный, спот Binance требует минимальный номинал перед покупкой, а рыночные покупки на KuCoin выставляются в режиме cost.
Спот и фьючерсы всегда разделены. Один и тот же символ на этих двух рынках представляет собой отдельную строку, отдельный поток цен и отдельный ключ — один никогда не смешивается с другим.
MetaTrader 5 без какой-либо установки
Для форекса вам не нужно ничего устанавливать. Не нужно арендовать VPS, поддерживать работу терминала MetaTrader на своей машине, подключать Expert Advisor или покупать сторонний bridge-аккаунт. AlgoVesta запускает терминалы MetaTrader 5 на собственных управляемых серверах и держит их круглосуточно подключёнными к вашему брокеру. Вы один раз вводите учётные данные счёта, и с этого момента ваш ИИ-ассистент может торговать этим счётом. Данные о позициях, возвращаемые ассистенту, сверяются с терминалом, а когда сверка невозможна, инструмент прямо говорит об этом, а не намекает на пустой счёт.
Дорожная карта — глобальные акции
Планируется торговля глобальными акциями через Interactive Brokers (IBKR), с целью охватить 170 мировых акций доступных через то же самое MCP-подключение, что и крипта с форексом. Это пункт дорожной карты, и он пока не работает; ничто на этой странице, кроме этого абзаца, его не описывает, и ни один текущий инструмент не может торговать акциями. Когда функция выйдет, она появится как дополнительные значения venue в рамках тех же инструментов, той же стены политик и тех же квитанций.
Измеренная задержка
Это реальные измерения, а не маркетинговые цифры.
| Этап | Измерено |
|---|---|
| Приём и разбор запроса | 17–67 мс (медиана 38 мс) |
| От начала до конца на MetaTrader 5 | Около 1 секунды (измерено 849 мс; 702 мс на закрытие) |
| От начала до конца на криптобирже | Около 3 секунд (измерено 2 785 мс) |
| Paper-движок | Медиана 318 мс — без обращения к бирже |
Время, проведённое внутри вашего ИИ-клиента — на размышления модели и на ваше подтверждение — в эти цифры не входит и обычно преобладает над ними. Этот сервер не является площадкой исполнения с низкой задержкой и не позиционируется как таковая.
REST-эндпоинты панели
Всё, что ИИ не может и не должен делать самостоятельно, находится за вашей обычной авторизованной сессией.
POST /api/mcp/keys create a key (live requires 2FA)
GET /api/mcp/keys list keys
DELETE /api/mcp/keys/{key_id} revoke a key
POST /api/mcp/live-code send the live-scope confirmation code
POST /api/mcp/freeze | /api/mcp/unfreeze kill switch
GET /api/mcp/status connection status
GET /api/mcp/policies list policies
POST /api/mcp/policies/compile compile without activating
POST /api/mcp/policies/{id}/activate activate
POST /api/mcp/policies/{id}/deactivate deactivate
GET /api/mcp/audit audit log
GET /api/mcp/receipts receipts
GET /api/mcp/receipts/{receipt_id}/verify verify one receipt
GET /api/mcp/pubkey receipt public key
GET /api/mcp/paper | POST /api/mcp/paper/reset
Что вам нужно иметь
Само MCP-подключение является частью продукта и отдельно не продаётся. На практике ограничивает то, к чему должен получить доступ ИИ: для paper-торговли нужен только аккаунт, а для live-торговли нужен активный платный тариф и подключённые счета, которые этот тариф разрешает — а для live-торговли на реальные деньги через MetaTrader 5 дополнительно требуется явно включить это для данного счёта. Лимиты тарифов на количество ключей бирж и счетов MetaTrader указаны на странице тарифов. Вы можете опробовать всё на виртуальном балансе $5,000 ещё до того, как всё это станет актуальным.
Часто задаваемые вопросы
live , а эта область выдаётся только после прохождения второго фактора. До этого тот же ассистент работает с виртуальным балансом $5,000 с теми же самыми инструментами, поэтому вы можете отрепетировать весь процесс до того, как станут доступны реальные деньги.get_portfolio_context возвращает их все за один вызов. Если у вас больше одного счёта на одном и том же рынке, параметр account становится обязательным, а неоднозначный запрос отклоняется, а не отправляется на счёт по умолчанию.POST /api/mcp/freeze. После этого каждый инструмент возвращает user_frozen до тех пор, пока вы не снимете блокировку. Чтобы отключить только одного клиента, отзовите именно его ключ — остальные продолжат работать.verify_receipt , либо независимо, по публичному ключу по адресу /mcp/receipts/pubkey. Изменение старой квитанции ломает цепочку для всех последующих квитанций, и именно это делает подделку обнаружимой.Подключите ИИ-ассистента к своим счетам
Начните с виртуального баланса $5,000. Без карты, без установки, а граница live остаётся закрытой, пока вы намеренно её не откроете.
Создать бесплатный аккаунт Смотреть обзорПохожие материалы: MCP для ИИ-ассистентов · MCP-сервер для торговли: Claude и ChatGPT — 16 бирж + MT5 · поддерживаемые биржи · форекс через MetaTrader 5 · автоматизация TradingView · что такое торговый MCP-сервер · безопасность · тарифы.
Торговля сопряжена с риском. Автоматизация его не устраняет, а ИИ-ассистент не является инвестиционной консультацией. Начните с paper-режима.