AlgoVesta MCP 서버: Claude, ChatGPT, Cursor, Gemini가 실제 거래소 및 MetaTrader 5 계정을 거래하도록 하세요
이것이 무엇인가: AlgoVesta는 하나의 HTTPS 링크로 AI 어시스턴트에게 20개의 실제 트레이딩 도구를 제공하는 호스팅형 Model Context Protocol(MCP) 서버를 운영합니다. 이 하나의 링크를 Claude, ChatGPT, Cursor, Claude Code, Gemini CLI 또는 MCP를 지원하는 모든 클라이언트에 붙여넣으면, 어시스턴트는 잔고를 조회하고, 포지션을 열고 닫고, 손절매와 이익실현을 이동하고, 자신의 행동을 감사할 수 있습니다 — 다음 전체에 걸쳐 16개 암호화폐 거래소와 MetaTrader 5 외환을 동시에 — AlgoVesta에 이미 저장해 둔 리스크 설정을 사용하며, 어떤 프롬프트도 우회할 수 없는 서버 측 정책 장벽 뒤에서 이루어집니다. 모든 연결은 5,000달러 모의 잔고로 시작하며, 모든 행동은 ed25519로 서명된 영수증을 반환합니다.
Model Context Protocol은 AI 어시스턴트를 외부 시스템에 연결하기 위한 개방형 표준입니다. 대부분의 트레이딩 관련 MCP 서버는 시장 데이터를 채팅창으로 스트리밍합니다. 이 서버는 실행합니다: 이것은 결정론적 리스크 엔진이 앞단에 있는 주문 라우팅 계층이며, AI는 호출자일 뿐 — 결코 권한자가 아닙니다.
빠른 시작
설정은 세 단계이며 코드가 필요 없습니다. 전체 흐름은 AlgoVesta 패널의 MCP 연결 탭 안에 있습니다.
다음을 여세요: MCP 연결 탭에서 키를 생성합니다. 새 키는 기본적으로 paper 범위로 설정됩니다. 전체 링크는 한 번만 표시되므로 — 그때 복사하세요.
링크를 AI 클라이언트에 커스텀 MCP 서버로 붙여넣습니다. API 키가 AlgoVesta 밖으로 나가지 않으며, 코드도 로컬 설치도 필요 없습니다.
대화해 보세요. “내 포트폴리오 상태는 어때?” “ETHUSDT에 5배로 200달러 롱 포지션을 시뮬레이션해줘.” “BTC 포지션의 절반을 청산해줘.”
연결 URL은 다음과 같은 형태입니다:
https://api.algovesta.com/u/avmcp_<your-key>/mcp
이 URL은 하나의 자격 증명입니다. 이를 가진 사람은 누구나 그 범위 내에서 당신의 계정에 대해 행동할 수 있습니다. 비밀번호처럼 다루세요: 절대 공개 채팅, 스크린샷, 공유 저장소나 지원 티켓에 붙여넣지 마세요. 유출되면 패널에서 철회하세요 — 철회는 새 연결에 즉시 적용되며 열려 있는 이벤트 스트림은 몇 초 안에 끊깁니다.
연결 가능한 AI 어시스턴트
Streamable HTTP를 통해 MCP를 지원하는 모든 클라이언트가 연결할 수 있습니다. 아래 표는 실제 서버를 대상으로 검증된 내용을 기록한 것이며, 실제 제약 사항도 포함합니다 — 이 중 일부는 AlgoVesta가 아니라 해당 AI 제품 자체의 제약이며, 어떤 MCP 서버를 사용하든 마찬가지로 겪게 됩니다.
| AI 클라이언트 | 링크를 붙여넣는 위치 | 참고 사항 및 실제 제한 |
|---|---|---|
| Claude (웹, 데스크톱, iOS, Android) | 설정 → 커넥터 → 커스텀 커넥터 추가 | 완전 지원. 도구 제목과 확인 대화상자가 서버에서 그대로 옵니다. |
| 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 / 커넥터 설정 | 이 서버는 표준을 그대로 구현하므로, Streamable HTTP를 통한 원격 MCP를 지원하는 클라이언트라면 별도 설정 없이 작동합니다. |
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, 테넌트별로 격리되며, Last-Event-ID 재연결. |
| 머신 판독 가능 스키마 | /mcp/tools.json — 클라이언트가 실제로 받는 그대로의, 20개 도구 전체의 완전한 JSON Schema입니다. |
인증 및 범위(스코프)
연결 방법은 두 가지이며, 둘 다 동일한 테넌트 컨텍스트로 귀결됩니다. 도구는 사용자 ID를 매개변수로 절대 받지 않습니다 — 신원은 오직 인증된 연결에서만 읽히며, 이것이 계정 간 접근을 단순히 금지하는 것이 아니라 구조적으로 불가능하게 만드는 이유입니다.
비밀 링크
다음 형태의 키: avmcp_<32-byte urlsafe random>, URL 경로에 내장됩니다. Argon2id 해시와 SHA-256 조회 해시로 저장되며, 평문은 생성 시점에만 존재하고 이후에는 결코 복구할 수 없습니다. 각 키는 자체 범위, 자체 라벨, 자체 철회 상태를 가지므로, Cursor에서는 모의 키 하나를, Claude에서는 실거래 키 하나를 실행하며 둘을 독립적으로 중단할 수 있습니다.
OAuth 2.1
적절한 인가 흐름을 선호하는 클라이언트를 위한 것입니다. 지원되는 grant는 authorization_code 및 refresh_token이며, 회전형 리프레시 토큰을 사용합니다. PKCE S256 는 필수입니다 — 이것이 없는 요청은 거부됩니다. 동적 클라이언트 등록이 제공되므로 대부분의 클라이언트는 스스로 설정됩니다. 디스커버리 문서:
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, 그리고 5,000달러 가상 잔고의 모의 엔진에서 실행되는 주문. 새 키의 기본값입니다. | 직접 생성됩니다. |
live | 위의 모든 것, 그리고 연결된 거래소와 MetaTrader 5 계정에서의 실제 주문. | 2차 인증 필요. 유효한 인증 앱(TOTP) 코드, 또는 계정 이메일로 발송되어 10분간 유효한 확인 코드. 서버 측에서 예외 없이 강제됩니다. |
범위에는 등급이 있으므로, paper 요구하는 도구는 read 키를 거부합니다, insufficient_scope. 따라서 모의 자금과 실제 자금 사이의 경계는 프롬프트나 설정, 모델의 판단이 아니라 키 자체의 속성입니다.
도구 참조 — 20개 도구 전체
이것들은 어시스턴트가 실제로 보는 정확한 도구입니다. 읽기 도구는 먼저 물어보지 않고 호출해도 안전하며, 6개의 쓰기 도구는 이를 지원하는 클라이언트에서 확인 요청을 띄우고, 그중 3개 — place_order, close_position, cancel_order — 는 어노테이션에서 추가로 파괴적(destructive)으로 표시됩니다.
| 도구 | 범위 | 종류 | 목적 |
|---|---|---|---|
get_portfolio_context | read | 읽기 전용 | 한 번의 호출로 연결된 모든 계정 확인 |
get_market_price | read | 읽기 전용 | 실시간 가격과 신선도 보고 |
simulate_order | read | 읽기 전용 | 정책 판정을 포함한 드라이런 |
place_order | paper / live | 파괴적 | 포지션 오픈 |
close_position | paper / live | 파괴적 | 전체 또는 부분 청산 |
modify_position | paper / live | write | 손절매와 이익실현 이동 |
list_open_orders | read | 읽기 전용 | 대기 중인 지정가 주문 |
cancel_order | paper / live | 파괴적 | 대기 주문 취소 |
compile_policy | read | 읽기 전용 | 평문 규칙을 정책 미리보기로 변환 |
verify_receipt | read | 읽기 전용 | 서명과 해시 체인 확인 |
replay_channel | read | 읽기 전용 | Telegram 채널을 당신의 규칙에 대해 백테스트 |
get_trade_history | read | 읽기 전용 | 암호화폐, MT5, 모의투자 전반의 청산된 거래와 성과 |
compare_venues | read | 읽기 전용 | 측정된 가격과 스프레드 기준으로 연결된 거래소 순위화 |
list_strategies | read | 읽기 전용 | TradingView 전략; 웹훅 URL은 절대 반환되지 않음 |
create_strategy | paper / live | write | 새 전략, 실거래 실행은 항상 꺼진 상태 |
update_strategy | paper / live | write | 전략 설정; 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 계정, 모의 계정을 정규화된 형태로 반환합니다 — 그 외에는 아무것도 반환하지 않습니다. 이것이 “내 상황이 어때?”를 열여섯 번이 아니라 한 번의 질문으로 만들어주는 호출입니다.
다른 것보다 중요한 필드가 두 개 있습니다. 암호화폐 계정의 경우, 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}. 가격은 약 1초마다 갱신되는 공유 캐시에서 가져옵니다. 캐시 미스 시 서버가 거래소로 실시간 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 은 장식이 아닙니다. 동일한 키가 같은 사용자에 대해 두 번 도착하면, 저장된 응답이 그대로 재생되며 두 번째 주문은 열리지 않습니다 — 이것이 클라이언트가 타임아웃 후 재시도하거나, 확인 도중 휴대폰 신호가 끊기거나, 모델이 도구를 두 번 호출할 때 당신을 보호하는 방식입니다.
사이징은 의도적으로 명시적입니다. 암호화폐의 경우 세 필드 중 정확히 하나를 전달하며, 각각 의미가 다릅니다:
| 필드 | 의미 | 5배 레버리지에서의 예시 |
|---|---|---|
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 은 전혀 전송되지 않습니다 — 해당 상품은 레버리지가 없으며 사이징은 랏(lot) 볼륨에서 나옵니다. 명시한 랏 크기가 정확히 그대로 사용되며 편의를 위해 반올림되는 일이 없습니다; 브로커의 제한 범위를 벗어나면 주문이 거부되고 허용 범위가 다시 보고됩니다.
주문 크기 허용 오차. 거래소는 특정 랏 단위만 허용하므로, 요청된 수량은 가장 가까운 유효 단계에 맞춰집니다. 편차가 20% 이내이면 주문이 진행되며 정확한 편차가 다시 보고됩니다; 20%를 넘으면 주문은 않으며 열리지 않고, 어떤 인근 수량이 가능한지 숫자로 안내받습니다. 이 임계값은 직관으로 정한 것이 아니라, 사이징 함수를 통해 이제까지 실제로 넣은 모든 주문을 다시 실행하여 선택된 것입니다.
누락된 필드는 저장된 설정으로 대체됩니다. 손절매, 이익실현 또는 레버리지를 지정하지 않으면, 어시스턴트는 해당 필드를 비워두도록 지시받으며, 서버는 패널에 저장된 선호값 — 수동 패널과 Telegram 봇이 사용하는 것과 동일한 값 — 으로 채웁니다. 응답에는 어떤 필드가 저장된 설정에서 왔는지 prefs_used에 보고됩니다. 이것은 측정된 실패 사례 때문에 존재합니다: 해당 필드가 필수였을 때 모델은 값을 지어내야 했고, 다섯 건의 주문 중 다섯 건 모두 고객 자신의 설정을 덮어썼습니다.
close_position
필수: venue, symbol, side, idempotency_key. 선택: fraction (0 초과 1 이하], account, ticket. 암호화폐와 MetaTrader 5 모두에서 작동합니다. 청산은 리스크를 줄이므로 정책 장벽이 이를 막는 일은 결코 없습니다 — 킬 스위치만이 막을 수 있습니다. 동일한 멱등성 키로 열 번 호출해도 정확히 한 번만 청산됩니다. 일치하는 포지션이 없으면 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, 거래소, 심볼, 방향, 진입가, 크기, 생성 시각.
어시스턴트에게 미체결 주문을 확인해 달라고 요청하기 전에 알아둘 점이 하나 있습니다. 이 도구가 추적하는 대기 중인 주문은 페이퍼(모의) 주문장에 있는 것입니다. 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. “내가 지난 X일 동안 내 규칙 아래에서 이 Telegram 채널을 따랐다면 어땠을까?”라는 질문에 답합니다 — 과거 신호를 모의투자 방식으로 재생하며, 모든 신호는 정책 장벽을 통과하므로 거부된 신호는 결코 포지션을 열지 않습니다. 진행 상황은 다음으로 도착합니다: 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은 총액(gross)입니다. 소스를 읽을 수 없는 경우, 마치 완전한 것처럼 짧은 목록을 반환하는 대신 incomplete_sources 가 해당 소스를 명시합니다.
compare_venues
필수: symbol. 선택: market (기본값 futures, 또는 spot), side. 연결된 각 암호화폐 거래소에 대해 실시간 가격과 — bid/ask를 게시하는 거래소의 경우 — 베이시스 포인트 단위의 스프레드, 그리고 거래소 간 가격 차이를 반환합니다. 거래소를 선택하지는 않습니다: 당신의 주문은 여전히 하나를 지정해야 합니다. 거래 수수료, 오더북 깊이, 슬리피지는 basis.not_measured 에 나열되며 결코 추정되지 않고, bid/ask를 게시하지 않은 거래소는 스프레드가 0인 것처럼 순위가 매겨지는 대신 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. auto_trade 가 꺼진 상태로 TradingView 전략을 생성합니다; 이 필드는 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. 실제로 받은 신호를 진짜 과거 메인넷 1분 봉 위에서 두 번 재생합니다: 한 번은 각 신호의 원래 손절·익절·레버리지로, 한 번은 요청한 설정으로. 즉시 job_ref를 반환하며 결과는 get_job_status로 받습니다. 모든 결과에는 coverage(몇 개의 신호가 실제로 시뮬레이션되었고 나머지는 왜 안 되었는지)와 assumptions(수수료, 슬리피지, 부분 익절, 모델링하지 않는 것)가 포함됩니다. 손절이 없거나, 손절이 진입가의 반대쪽에 있거나, 과거 가격 데이터가 없는 신호는 추측하지 않고 세어서 건너뜁니다.
simulate_policy
선택: policy_text(일상어), rules(이미 컴파일됨), days (1–365). 리스크 정책을 실제로 종료한 거래에 적용해, 어떤 거래가 어떤 규칙으로 거부되었을지와 PnL 차이를 보고합니다. job_ref를 반환합니다. 두 가지 한계가 항상 명시됩니다: 주문 시점의 계좌 상태에 의존하는 규칙(미결제 포지션 수, 일일 손실, 잔고)은 0으로 평가됩니다 — 종료된 거래로는 그 상태를 복원할 수 없기 때문이며, 따라서 그런 규칙은 과다가 아니라 과소 집계됩니다. 또한 PnL은 기록된 실현 손익에서 오며 통화별로 보고되고 통화 간 합산은 하지 않습니다.
import_tradingview_backtest
필수: csv_text. 선택: taker_fee_bps, slippage_bps, leverage. TradingView Strategy Tester(List of Trades)에서 내보낸 CSV를 받아 실제 비용으로 다시 계산합니다: 진입과 청산 양쪽의 테이커 수수료와 측정된 슬리피지. 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 | 배열 | AI를 지정된 거래소로 제한 |
symbol_whitelist | 배열 | 이 심볼만 거래 가능 |
symbol_blacklist | 배열 | 이 심볼은 절대 거래되지 않음 |
allowed_sides | 배열 | 롱 전용, 숏 전용, 또는 둘 다 |
notes | 문자열 | 당신만의 주석 |
스키마 검증에 실패한 컴파일된 정책은 전혀 활성화할 수 없습니다. 부분적으로 유효한 정책이란 존재하지 않습니다.
안전 모델
| 기본값은 모의투자 | 모든 새 키는 paper 범위에서 5,000달러 가상 잔고로 시작합니다. 실제 자금에 도달하는 것은 명시적이고 별도인 행위입니다. |
| 손절매는 필수 | 명시적인 손절매도 저장된 기본값도 없으면 주문은 거부됩니다. 이후에도 제거할 수 없습니다. |
| 멱등성(Idempotency) | 모든 쓰기 도구는 클라이언트가 생성한 최소 8자 이상의 키를 요구합니다. 반복되면 두 번 실행하는 대신 저장된 응답을 재생합니다. |
| 킬 스위치 | POST /api/mcp/freeze 은 모든 것을 즉시 중단시킵니다; 그러면 모든 도구가 다음을 반환합니다: user_frozen. /unfreeze 이 이를 되돌립니다. |
| 키별 철회 | 다른 클라이언트에 영향을 주지 않고 하나의 클라이언트만 철회할 수 있습니다. 열려 있는 이벤트 스트림은 몇 초 안에 끊깁니다. |
| 서명된 영수증 | 모든 행동에 대해 ed25519 서명과 사용자별 해시 체인이 함께 제공되며, 공개 키에 대해 검증할 수 있습니다. |
| 감사 로그 | 모든 호출은 도구 이름, 인자, 결과, 지연 시간과 함께 기록되며, 다음에서 읽을 수 있습니다: GET /api/mcp/audit 및 패널에서. |
| 테넌트 격리 | 도구는 사용자 ID를 받을 수 없습니다; 신원은 오직 인증된 연결에서만 옵니다. |
| 거래 전용 키 | 거래소 API 키는 출금 권한 없이 생성되며 AES-256으로 암호화되어 저장됩니다. 주문은 거래소에서 화이트리스트로 지정하는 고정된 AlgoVesta 트레이딩 IP에서 나갑니다. |
레버리지에 대해 분명히 말하자면: AlgoVesta는 당신의 계정에 레버리지 상한을 부과하지 않습니다 — 그것은 거래소가 하는 일이며, 당신은 다음 정책 규칙으로 자신만의 상한을 설정할 수 있습니다: leverage_cap 정책 규칙. MetaTrader 5를 통한 외환은 이 경로에서 레버리지가 없으며 랏 단위로 크기가 정해집니다. 여기서 플랫폼이 “레버리지를 20배로 제한한다”고 말하는 사람이 있다면, 존재하지 않는 것을 설명하는 것입니다.
오류
| 코드 | HTTP | 발생 시점 |
|---|---|---|
unauthorized | 401 | 누락, 무효 또는 철회된 키 |
insufficient_scope | 401 | 도구가 키가 보유한 것보다 더 높은 범위를 필요로 함 |
forbidden | 403 | 이 계정에는 허용되지 않음 |
user_frozen | 403 | 킬 스위치가 활성화됨 |
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시간 캐시) |
| 실거래 범위 확인 이메일 | 분당 1회 |
실시간 이벤트
테넌트별로 격리된 서버 전송 이벤트 스트림을 다음에서 이용할 수 있습니다: /mcp/events (OAuth) 및 /u/<key>/events (비밀 링크), Last-Event-ID 재연결로 끊긴 연결이 재시작이 아니라 이어서 재개됩니다. 이벤트 유형: fill, policy_rejected, position_closed, sl_hit, tp_hit, 및 replay_progress 채널 리플레이 중.
거래소 — 16개 거래소와 MetaTrader 5
하나의 연결로 이 모든 곳에 도달합니다. 거래소는 AlgoVesta에서 연결한 이후에야 AI가 이용할 수 있게 됩니다; 연결하지 않은 거래소를 요청하면 추측 대신 VENUE_NOT_CONNECTED 을 반환합니다.
| 거래소 | venue 값 |
시장 | 패스프레이즈 필요 여부 |
|---|---|---|---|
| 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 | 가상 5,000달러 | — |
이 중 여섯 개 — Binance, Bybit, OKX, Gate.io, KuCoin, Bitget — 는 선물과 현물 양쪽에서 실제 자금으로 처음부터 끝까지 검증되었으며, 손절매와 이익실현이 거래소 자체에 실제로 존재하고 기록된 값과 정확히 일치함이 확인되었습니다. 각 거래소에는 저마다의 특이점이 있으며, 그 차이는 결함이 아니라 의도적인 것입니다: Bybit와 Bitget은 현물에서 두 번째 이익실현 다리를 받아들이지 않고, OKX 현물은 현금 계정이 조용히 마진 계정으로 바뀌는 것을 막기 위해 원시(raw) API를 통해 라우팅되며, Binance 현물은 매수 전 최소 명목가치를 강제하고, KuCoin 시장가 매수는 비용(cost) 모드로 이루어집니다.
현물과 선물은 항상 분리되어 유지됩니다. 두 시장에서 동일한 심볼이라도 별도의 행, 별도의 가격 피드, 별도의 키를 갖습니다 — 하나가 다른 하나로 흘러들어가는 일은 결코 없습니다.
설치가 전혀 필요 없는 MetaTrader 5
외환을 위해 아무것도 설치할 필요가 없습니다. 임대할 VPS도, 자신의 컴퓨터에서 계속 켜 두어야 할 MetaTrader 터미널도, 붙여야 할 Expert Advisor도, 구매해야 할 서드파티 브리지 계정도 없습니다. AlgoVesta는 자체 관리 서버에서 MetaTrader 5 터미널을 실행하며 브로커와의 연결을 24시간 유지합니다. 계정 자격 증명을 한 번 입력하면 이후로는 AI 어시스턴트가 그 계정을 거래할 수 있습니다. 어시스턴트에게 반환되는 포지션 데이터는 터미널을 대상으로 검증되며, 검증할 수 없는 경우 도구는 계정이 비어 있다고 암시하는 대신 그 사실을 그대로 말합니다.
로드맵 — 글로벌 주식
Interactive Brokers(IBKR)를 통한 글로벌 주식 거래가 계획되어 있으며, 목표는 170개 글로벌 종목 을 암호화폐 및 외환과 동일한 MCP 연결에서 이용하는 것입니다. 이는 로드맵 항목이며 오늘 현재 서비스되고 있지 않습니다; 이 단락을 제외하면 이 페이지의 어떤 것도 이를 설명하지 않으며, 현재 어떤 도구도 주식을 거래할 수 없습니다. 출시되면 동일한 도구, 동일한 정책 장벽, 동일한 영수증 아래에서 추가 venue 값으로 나타날 것입니다.
측정된 지연 시간
이것들은 마케팅 수치가 아니라 실측값입니다.
| 단계 | 측정값 |
|---|---|
| 요청 수신 및 파싱 | 17–67 ms (중앙값 38 ms) |
| MetaTrader 5에서의 처음부터 끝까지 | 약 1초 (849 ms 측정; 청산까지 702 ms) |
| 암호화폐 거래소에서의 처음부터 끝까지 | 약 3초 (2,785 ms 측정) |
| 모의 엔진 | 중앙값 318 ms — 거래소 왕복 없음 |
AI 클라이언트 안에서 소요되는 시간 — 모델이 생각하고 당신이 확인하는 시간 — 은 포함되지 않으며 보통 가장 큰 비중을 차지합니다. 이 서버는 저지연 실행 플랫폼이 아니며 그렇게 판매되지도 않습니다.
패널 REST 엔드포인트
AI가 스스로 할 수 없고 해서도 안 되는 모든 것은 당신의 일반 로그인 세션 뒤에 있습니다.
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 연결 자체는 제품의 일부이며 별도로 판매되지 않습니다. 실제로 관문이 되는 것은 AI가 접근하도록 되어 있는 대상입니다: 모의투자는 계정만 있으면 되지만, 실거래는 활성 유료 플랜과 그 플랜이 허용하는 연결된 계정이 필요합니다 — 그리고 실제 자금으로 하는 MetaTrader 5 실거래는 추가로 해당 계정에 대해 명시적으로 옵트인해야 합니다. 거래소 키와 MetaTrader 계정 수에 대한 플랜별 제한은 요금제 페이지에 나와 있습니다. 그 어느 것도 문제되기 전에, 5,000달러 모의 잔고로 모든 것을 먼저 시도해볼 수 있습니다.
자주 묻는 질문
live 이 범위는 2차 인증 이후에만 발급됩니다. 그 전까지는 동일한 어시스턴트가 동일한 도구로 5,000달러 모의 잔고를 대상으로 작동하므로, 실제 자금에 도달하기 전에 전체 워크플로를 미리 연습할 수 있습니다.get_portfolio_context 은 한 번의 호출로 그 전부를 반환합니다. 같은 시장에서 계정을 하나 이상 보유한 경우, account 매개변수가 필수가 되며, 모호한 요청은 기본값으로 보내지는 대신 거부됩니다.POST /api/mcp/freeze. 그러면 모든 도구가 다음을 반환합니다: user_frozen 얼릴 것을 풀 때까지. 클라이언트 하나만 차단하려면 해당 키만 철회하세요 — 나머지는 계속 작동합니다.verify_receipt , 또는 다음의 공개 키에 대해 독립적으로 검증할 수 있습니다: /mcp/receipts/pubkey. 오래된 영수증을 수정하면 그 이후의 모든 영수증에 대한 체인이 깨지며, 이것이 바로 변조를 탐지 가능하게 만드는 이유입니다.AI 어시스턴트를 당신의 계정에 연결하세요
5,000달러 모의 잔고로 시작하세요. 카드도, 설치할 것도 필요 없으며, 당신이 의도적으로 열기 전까지 실거래 경계는 닫힌 채로 유지됩니다.
무료 계정 만들기 개요 보기관련: AI 어시스턴트를 위한 MCP · MCP 트레이딩 서버: Claude & ChatGPT → 16개 거래소 + MT5 · 지원되는 거래소 · MetaTrader 5 외환 · TradingView 자동화 · MCP 트레이딩 서버란 무엇인가 · 보안 · 요금제.
트레이딩에는 리스크가 따릅니다. 자동화가 이를 없애주지는 않으며, AI 어시스턴트는 투자 조언이 아닙니다. 모의투자로 시작하세요.