API grátis de paper trading cripto - Teste seu bot | MarginPad
MARGINPAD
Preços ao vivo · execuções no servidor · sem depósito

A corretora que seu bot pode se dar ao luxo de quebrar.

Uma API de futuros de paper trading com preços reais ao vivo. Seu bot abre posições alavancadas, deixa ordens limite e stop pendentes, move seus stops e é liquidado - tudo liquidado nos nossos servidores, em dólares simulados. O mesmo código que você vai rodar de verdade, sem nenhuma das consequências.

Sem cartão, sem KYC, sem depósito. Toda condição de execução é você quem define - tamanho do book, slippage, latência, execuções parciais, recusas, taxas. Grátis para sempre com 120 requisições por minuto - o Pro custa $27 quando um bot vira quatro. Os dados de mercado continuam sem chave em todos os planos.

marginpad.io/api/bot/v1ao vivo agora
# no key needed - run this right now
curl "https://marginpad.io/api/bot/v1/price?symbol=BTC"

{ "symbol": "BTC", "price": …, "ts": … }
POST /openexemplo
curl -X POST ".../v1/open" -H "X-API-Key: mpb_…" \
  -d '{"symbol":"BTC","side":"long","margin_usd":100,
       "leverage":10,"trail_pct":1.5}'

{ "ok": true, "position": {
    "id": "bot_9f21…",   "entry": …,
    "liq_price": …,  "trail_pct": 1.5,
    "fee_round_trip_usd": 1.10 } }

Obtenha sua chave

Entre com um e-mail - sem senha, sem KYC. As posições do seu bot ficam salvas na sua conta, e uma conta pode ter várias chaves para que um bot de backtest e um bot ao vivo nunca dividam o mesmo orçamento de requisições.

Suas chaves, o uso delas e o book que cada uma opera aparecem aqui depois que você entrar. Chaves são segredos - quem tiver uma pode operar sua conta paper.

Planos

O plano grátis é o motor inteiro. Você paga para rodar mais de uma coisa ao mesmo tempo.

Toda conta começa no Free e recebe o produto completo: o motor de trading, taxas reais das plataformas, entradas limite e stop, trailing stops, replay, books, o stream WebSocket e todos os dados de mercado sem chave. Os planos pagos elevam os limites e acrescentam webhooks, detalhamentos do relatório com conclusões escritas, 90 dias de histórico de trades em vez de 30, e mais chaves e books. O motor em si nunca é limitado.

Teste grátis

$0 por 7 dias

O motor completo, grátis por 7 dias a partir do dia em que você cria sua primeira chave. Depois disso, o motor exige um plano - os dados de mercado continuam grátis e sem chave para sempre, sem nenhuma conta.

Uma estratégiaum book, um diário, um saldo
  • 3 chaves · 50 posições abertas · 120 req/min
  • Motor completo: ordens a mercado, limite & stop, trailing stops, dry run, replay
  • Tabela de taxas de 9 corretoras reais
  • Stream WebSocket · MCP · dados de mercado sem chave
  • Trading Report: totais + score de habilidade

Pro

MAIORIA DOS BOTS
$27/mês
$39 30% de desconto

Para um bot que roda sem supervisão e para comparar estratégias em vez de ficar no palpite.

10 chaves e 90 dias de históricouma chave por bot · 5 books · webhooks · detalhamentos do relatório
  • 10 chaves · 200 posições abertas · 600 req/min
  • Webhooks - 3 endpoints assinados, com novas tentativas, entregues enquanto você está offline
  • Trading Report com detalhamentos e conclusões escritas
  • 90 dias de histórico de trades, relatório e curva de patrimônio - o Free guarda 30

Max

$69/mês
$99 30% de desconto

Para uma frota - uma família de estratégias, cada uma com seu próprio book, rodando ao mesmo tempo.

30 chaves, 20 bookslivro de ordens mais profundo · 15 webhooks
  • 30 chaves · 500 posições abertas · 2000 req/min
  • 15 webhooks
  • Tudo do Pro

Business

$139/mês
$199 30% de desconto

Para um app ou uma mesa que opera em nome de seus próprios usuários - uma chave para cada, um book para cada.

100 chaves, 50 booksuma chave por usuário final, mantidas separadas
  • 1000 posições abertas · 5000 req/min
  • 50 webhooks
  • Tudo do Max
Escolha por chaves e histórico, não por throughput - e aqui está a medição.

Em 125 contas e 174 chaves, o bot mais ativo em produção chega a 66 requisições por minuto das 120 que o Free já permite, e nenhuma chave jamais foi limitada por taxa em qualquer plano. O único teto do Free que de fato é atingido são as chaves: 12 dessas 125 contas estão no limite de três chaves ou acima dele, porque uma configuração séria quer uma chave por bot, para que um backtest e uma estratégia ao vivo nunca dividam o mesmo orçamento de requisições. Webhooks e books extras estão nos planos pagos e até agora não tiveram nenhuma adoção - preferimos dizer isso a vender um plano por eles. Tudo o que decide se um resultado é real - o motor, todos os mercados, ordens limite e stop, replay, o stream WebSocket, a simulação totalmente configurável e o detalhamento de custos no seu relatório - está no Free.

O que muda com o planoFreePro · $27Max · $69Business · $139
API de dados de mercado (/api/v1/*) com a sua chave
60 / min por IP sem chave, em todos os planos
120 / min600 / min2000 / min5000 / min
Chaves de API por conta31030100
Posições abertas ao mesmo tempo502005001000
Books - diário, saldo e relatório separados por estratégia
o limite que a maioria das pessoas realmente atinge
152050
Webhooks - assinados, com novas tentativas, entregues enquanto você está offlinenenhum31550
Histórico de trades guardado
o que /v1/trades, o relatório e a curva de capital ainda conseguem ver
30 dias90 dias90 dias90 dias
Requisições por minuto, por chave
medido: o bot mais ativo em produção usa 46, e nunca houve limitação
12060020005000
Trading Report /v1/reporttotais + nota de habilidade
até 30 dias atrás
+ detalhamentos & conclusões
até 90 dias atrás
+ detalhamentos & conclusões+ detalhamentos & conclusões

Em todos os planos, Free inclusive: o motor de trading completo - ordens a mercado, limite e stop, trailing stops, fechamentos parciais, dry run e replay - o stream WebSocket, o servidor MCP, a tabela de taxas de 9 plataformas reais, de $1 a $100,000 de margem por trade com até 1000× de alavancagem, e todos os endpoints de dados de mercado sem chave em velocidade total. Os planos pagos elevam limites. Não desbloqueiam o produto.

O Premium é outro produto. Uma assinatura do MarginPad Premium libera recursos no site - os indicadores exclusivos de gráfico, o mapa de calor de liquidações, o Ask AI nos gráficos - e, desde 15 de setembro de 2026, não altera nenhum limite da API. Estes planos também não liberam esses recursos do site. Compre o que você realmente usa.

Os planos são mês a mês, pagos em cripto ou direto do seu saldo de recompensas da MarginPad, e um mês comprado antecipadamente é somado ao que você tem, em vez de substituí-lo. Seus tetos atuais estão sempre em GET /api/bot/v1/usage - limits, features, plan_until - para que um bot os leia em vez de adivinhar.

O que você está comprando, por escrito. A seção 9 dos termos trata da API em separado: o que um plano inclui e o que acontece no dia em que ele termina, que nada renova automaticamente e não há nada a cancelar, o que nos comprometemos e o que não nos comprometemos a entregar em disponibilidade (não há SLA - dizemos isso, e dizemos a que nos comprometemos em vez disso), aviso de trinta dias antes de qualquer mudança incompatível e que você pode criar e vender produtos comerciais sobre esta API sem nos pedir permissão.

Seu bot é avisado antes de o plano vencer, não depois. Toda resposta com chave traz X-MP-Plan e, nos últimos quatorze dias, também traz X-MP-Plan-Expires e X-MP-Plan-Days-Left. Registre esses valores e um bot sem supervisão pode avisar você por conta própria; a mesma contagem regressiva está nesta página e em /v1/usage. Um plano que acaba derruba a chave para o Free - ela nunca para de responder.

Quickstart

Três chamadas do zero até uma posição ao vivo

O primeiro não precisa de chave nenhuma - cole num terminal antes de decidir qualquer coisa. Cada caminho abaixo existe numa v1 congelada e numa v2 com envelope; escolha uma e ela não vai mudar sob seus pés.

PASSO 01

Leia o mercado

GET /v1/price e /v1/klines não usam chave e têm CORS habilitado. Até 1,000 candles por chamada, sete intervalos, paginados para trás com &end= para o tanto de histórico que um backtest precisar.

PASSO 02

Abra uma posição

POST /v1/open executa ao preço ao vivo com margem isolada e devolve o nível de liquidação. Adicione type:"limit" ou "stop" para deixar uma ordem pendente no servidor, ou dry_run para precificar um trade sem gravar nada.

PASSO 03

Deixe ele enviar, não faça polling

Stops, alvos, trailing stops e liquidações são liquidados do nosso lado, em candles de 1 minuto, com seu bot rodando ou não. Abra o WebSocket e o resultado chega em cerca de dois segundos - é grátis em todos os planos, e é a diferença entre um bot que reage e um que espera o próximo loop.

# price (no key)
curl "https://marginpad.io/api/bot/v1/price?symbol=SOL"

# open a 20x long with $100 margin
curl -X POST "https://marginpad.io/api/bot/v1/open" \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"symbol":"SOL","side":"long","margin_usd":100,"leverage":20}'

# check live P&L
curl "https://marginpad.io/api/bot/v1/positions" -H "X-API-Key: YOUR_KEY"

# close half, let the rest run
curl -X POST "https://marginpad.io/api/bot/v1/close" \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"id":"POSITION_ID","pct":50}'

Autentique com X-API-Key em toda chamada, exceto /price, /klines e /time. Clientes oficiais, zero dependências - npm install marginpad ou pip install marginpad, ou um arquivo de cada: marginpad.py · marginpad.js - REST, WebSocket, polling com ETag, back-off de 429 e verificação de assinatura de webhook já embutidos.

26
endpoints, além de um WebSocket, webhooks e um servidor MCP
9
tabelas de taxas de corretoras reais pelas quais suas execuções podem ser cobradas
1,000×
alavancagem máxima, em qualquer par USDT com preço ao vivo
156
mercados numa só chave: perps cripto, ações dos EUA, forex, índices e metais
4.4M
chamadas atendidas para os bots que já rodam nela
STATUS base de trading coletor de liquidações tarefas agendadas lendo /api/status… Status completo e histórico →
Por que não uma testnet de exchange

Uma testnet te dá preços falsos. Isto te dá preços reais e dinheiro falso.

Os livros de testnet são rasos, os preços se afastam do mercado real e eles são resetados sem aviso. Tudo aqui é precificado a partir do feed multi-corretora ao vivo em que nossos próprios gráficos rodam - só os dólares são simulados.

Simulação

Monte a corretora em que você vai realmente operar

Dezoito campos e oito presets: o tamanho do book e se ele é um orçamento real, quanto custa atravessar o livro de ordens na entrada e na saída, quanto tempo sua ordem fica em trânsito, execuções parciais, com que frequência a plataforma recusa, sua própria taxa, funding e onde fica a liquidação. O Freqtrade deixa você definir o saldo inicial e mais nada; uma testnet dá o que o book dela der. Cada campo, com seu intervalo →

Execução

O servidor guarda as suas ordens

Entradas limite, entradas stop, stop-losses, alvos e trailing stops são todos avaliados do nosso lado, contra candles de 1 minuto. Seu bot pode estar offline, reiniciando ou sendo reimplantado e a execução ainda acontece no seu nível, marcada com o minuto em que o mercado realmente o atingiu.

Custos

Taxas que batem com a sua conta real

As duas pontas pagam uma taxa taker, cobrada como round trip no fechamento, com o funding acumulado nas marcações. Indique uma corretora e a conta paper é cobrada pela tabela publicada dessa corretora menos o nosso desconto de indicação - então uma estratégia de scalping falha aqui pelo mesmo motivo que falharia lá.

Falha

Liquidação que se comporta

Margem isolada, manutenção de 0.5%, perdas limitadas à sua margem. Um trailing stop é movido pelo extremo de cada candle depois que esse candle foi checado contra o stop em vigor - assim, um candle nunca pode te stopar num nível que ele mesmo criou.

Idempotência

Um timeout não é um mistério

Envie client_order_id e uma abertura repetida retorna a posição que a primeira chamada criou, marcada com idempotent: true. Fechar também aceita um. Esse único campo é a diferença entre um bot em que você confia sem supervisão e um que você precisa vigiar.

Observabilidade

Push, não polling

Um WebSocket grátis envia eventos de posição e marcações a cada ~2 s; os webhooks fazem POST do mesmo formato para a sua própria URL, assinados com HMAC e com novas tentativas, mesmo sem nada seu conectado. ETags tornam quase gratuitas as consultas que você mantém.

Medição

Ela dá nota à sua estratégia

Cada book tem seu próprio diário, curva de patrimônio e drawdown. /v1/report retorna taxa de acerto e retorno por moeda, faixa de alavancagem, lado e hora, com uma nota de habilidade - e não diz nada com menos de oito trades em vez de inventar um padrão.

Endpoints

Vinte e quatro delas. Tudo é JSON sobre HTTPS, com CORS ativado e um único cabeçalho. Troque v1 por v2 em qualquer caminho para receber o envelope {ok,data,ts}.

Dados de mercado - sem precisar de chave
GET/v1/price?symbol=BTCPreço ao vivo de qualquer par USDT. Não precisa de chave - teste agora mesmo no seu navegador.
GET/v1/klines?symbol=BTC&interval=60Candles OHLC para sua estratégia (intervalos: 1, 5, 15, 30, 60, 240, 1440 minutos). Não precisa de chave. Até 1000 candles por chamada, o mais novo por último - cerca de 16 horas em 1m, 3 dias em 5m, 10 dias em 15m, 41 dias em 1h, 166 dias em 4h e aproximadamente 3 anos em 1d. Passe &end=<unix ms> para paginar mais para trás.
GET/v1/marketsTudo o que é negociável, com asset_class, max_leverage e taker_fee_pct por símbolo. Filtre com ?class=crypto|stock|forex|metal|index. Chame uma vez na inicialização em vez de descobrir os limites por tentativa e erro.
GET/v1/time?client_ts=…Relógio do servidor. Não precisa de chave. Envie seu próprio unix ms e você recebe drift_ms de volta. Um bot que agrupa candles com base em um relógio local que deriva monta barras que ninguém mais vê, e isso é um sofrimento para depurar de fora.
bars = get(f"/api/bot/v1/klines?symbol=BTC&interval=1")
while len(all_bars) < wanted:
    end_ms = bars[0]["time"] * 1000          # oldest candle in hand
    bars = get(f"/api/bot/v1/klines?symbol=BTC&interval=1&end={end_ms}")
    if not bars: break
    all_bars = bars + all_bars
Trading
POST/v1/openAbre uma posição simulada ao preço ao vivo. Body: {"symbol":"BTC","side":"long","margin_usd":100,"leverage":20,"sl":58000,"tp":66000} (sl/tp opcionais). Retorna a posição, incluindo seu liq_price. Adicione "dry_run":true para receber de volta o trade precificado - entrada, quantidade, preço de liquidação e distância, a taxa de abertura e o round trip completo - sem gravar nada. Use o dry run para dimensionar uma posição ou para testar seu bot unitariamente contra o motor real.
POST/v1/open trail_pcttrail_pct define um stop que acompanha o melhor preço visto desde a entrada a essa distância percentual, ajustado no servidor: pelos extremos dos candles de 1 minuto na varredura por minuto e pelo preço ao vivo a cada leitura de /positions, então ele continua se movendo enquanto seu bot está offline e nunca afrouxa. Um long aberto a 60,000 com trail_pct: 1 começa com o stop em 59,400; quando o preço marca 63,000, o stop vai para 62,370. As posições trazem trail_pct e trail_hwm.
POST/v1/open type:"limit"A ordem fica pendente no servidor em vez de executar agora: {"symbol":"BTC","side":"long","type":"limit","limit_price":58000,"margin_usd":100,"leverage":20}. Ela executa ao seu preço, não ao preço em que o motor percebeu o cruzamento - a execução é encontrada a partir da máxima/mínima de 1m, então um pavio que recuou entre duas checagens ainda conta. Seu bot não precisa estar rodando. Um long limite deve ficar abaixo do mercado e um short limite acima; caso contrário você recebe limit_marketable em vez de uma execução a mercado silenciosa.
POST/v1/open type:"stop"Uma entrada em rompimento: um long acima do mercado ou um short abaixo dele, por ex. {"symbol":"BTC","side":"long","type":"stop","limit_price":66000,"margin_usd":100,"leverage":10}. Mesmo motor de uma ordem limite - executa no nível a partir de candles de 1m, com o navegador fechado - mas o lado errado é recusado (stop_wrong_side) para que um stop e um limite nunca sejam confundidos. sl, tp, trail_pct, client_order_id e dry_run valem todos.
POST/v1/closeFeche uma posição ao preço ao vivo. Body: {"id":"bp...","pct":50} - pct é opcional (padrão 100); fechamentos parciais dividem a posição exatamente como no site.
POST/v1/close_allBotão de pânico - fecha todas as posições abertas ao preço ao vivo numa só chamada.
POST/v1/sltpMova o stop-loss, o take-profit ou o trailing stop de uma posição aberta sem fechá-la. Corpo: {"id":"bot...","sl":63500,"tp":66000,"trail_pct":1.5} - envie null para limpar um, omita um campo para mantê-lo. Os níveis são checados contra o lado da entrada. Antes disso existir, era preciso fechar e reabrir para mover um stop, o que mudava sua entrada e custava uma ida e volta completa.
Ordens pendentes
GET/v1/ordersSuas ordens pendentes, cada uma com type: "limit" | "stop", mais as últimas 20 que foram executadas, expiraram ou foram canceladas - uma executada traz o position_id que criou. As ordens valem até serem canceladas, expiram após 30 dias, e até 20 podem ficar pendentes por conta.
POST/v1/modify_orderAltere uma ordem pendente no lugar: {"order_id":"lo...","limit_price":58500,"sl":57000,"tp":62000,"margin_usd":150,"leverage":10,"trail_pct":1} - envie só o que muda. Antes disso o único jeito era cancelar e recriar, o que perdia o client_order_id da ordem. A direção é rederivada do mercado agora e a marca d'água de candles reinicia, então um nível movido nunca pode ser executado num candle impresso antes da mudança. Uma ordem executada, cancelada ou expirada responde 409.
POST/v1/cancel_orderCancela uma ordem pendente. Body: {"order_id":"lo..."}. Se já foi executada ou cancelada, volta 409, então uma nova tentativa nunca desfaz uma execução.
Conta e estado
GET/v1/positions?status=openTodas as suas posições com mark_price e unrealized_pnl_usd ao vivo; liquidações atingidas e SL/TP são liquidados automaticamente. ?status=open|closed reduz o corpo ao que o seu loop realmente lê; ?since=<unix ms> e If-None-Match (304 quando nada mudou) também são aceitos.
GET/v1/accountResumo da conta: posições abertas, margem em uso, P&L não realizado ao vivo, P&L realizado de todo o período, ganhos/perdas, taxa de acerto, além de balance_usd, equity_usd, free_margin_usd e return_pct.
GET/v1/balanceSó o dinheiro: saldo inicial, saldo, patrimônio, margem em uso, margem livre, PnL não realizado. Mais barato que /account quando é só isso que a sua lógica de dimensionamento precisa.
GET/v1/trades?limit=100&before=…O registro completo de trades fechados, com paginação. /positions é limitado a 100 linhas; este percorre toda a janela de retenção - siga next_before até voltar null. Use para calcular estatísticas da estratégia sobre o registro completo em vez de uma ponta truncada.
GET/v1/accountsTodo book da conta com seus números acumulados e as chaves ligadas a ele.
GET/v1/equity?days=30&step_min=60A curva de patrimônio deste book, agrupada em intervalos, com max_drawdown_pct e o ponto não realizado ao vivo no final.
POST/v1/resetDevolve este book a $10,000 com {"confirm":true}: fechamentos arquivados, ordens canceladas. Recusado com 409 open_positions_exist enquanto houver algo aberto.
GET/v1/usageSeu plano, seus limites, o que resta na janela atual e usage_30d - chamadas por dia por endpoint mais refused (os 429), para um bot ver o quanto está perto do limite.
Custos, inteligência e entrega
GET/v1/feesPor qual tabela de taxas suas execuções são cobradas: as corretoras que modelamos com taker, maker, nosso desconto de indicação e a taxa efetiva, mais o seu padrão atual. POST {"venue":"bybit"} define o padrão da conta; fee_venue em /open o substitui para uma posição. Veja taxas por corretora.
GET/v1/report?days=30O Trading Report da conta por trás da chave, medido a partir dos próprios trades fechados: totais e a pontuação de skill em todos os planos; taxa de acerto e retorno por moeda, faixa de alavancagem, lado, hora e dia, além das conclusões escritas no API Pro e no Max (locked[] indica o que fica retido). Toda conclusão traz o n em que se apoia e não diz nada com menos de 8 trades.
GET/v1/webhooksAPI PROEventos de trading enviados para a sua URL, segundos depois de acontecerem, com seu bot conectado ou não - veja webhooks. POST {"act":"add","url":"https://…"} registra um, {"act":"test","id":…} envia um ping e retorna o status que seu servidor respondeu, {"act":"delete","id":…} remove.
POST/v1/replay2.6Execute seu bot por um dia UTC passado nos nossos próprios candles de 1 minuto - veja replay.

Legível por máquina: especificação OpenAPI 3.1 com schemas completos de requisição e resposta · uma referência interativa de onde você pode disparar chamadas · o changelog (JSON).

Como o motor funciona

Execuções e preços

As ordens são executadas na hora ao preço real ao vivo (feed multi-corretora - os mesmos preços do nosso Paper Trade). Execuções pela API não têm slippage (as do próprio site têm), então trate os preços de entrada como levemente otimistas.

Taxas de trading - leia isto antes de medir uma estratégia

Toda posição paga uma taxa taker nos dois lados, liquidada em pnl_usd no fechamento. É cobrada como round trip: fee = qty × (entry + exit) × rate. O funding é acumulado nas posições mantidas durante as marcações de funding e deduzido do mesmo jeito. Posições abertas já mostram o PnL líquido do round trip em unrealized_pnl_usd, então o que você vê é o que será liquidado.

A mercadoTaxa por ladoRound trip sobre $10,000 nocionais
Perps de cripto0.055%$11.00
Ações & ETFs0.02%$4.00
Metais & índices0.015%$3.00
Principais pares de forex0.008%$1.60

Prefere a conta exata da corretora em que vai rodar? Cobre a conta paper pela tabela dela, desconto de indicação incluído. Acima de cerca de 180× de alavancagem a taxa diminui para que o round trip nunca passe de 20% da sua margem. GET /v1/markets retorna a taxa exata e o limite de alavancagem de cada símbolo. Estratégias de curto prazo vivem ou morrem por esse número - um scalp que rende menos que o round trip é perdedor, não importa quantas vezes acerte.

Margem, liquidação, SL/TP, trailing

Margem isolada. As perdas ficam limitadas à sua margem. O preço de liquidação usa uma taxa de margem de manutenção de 0.5%; quando o preço ao vivo a cruza, a posição é liquidada automaticamente ao preço de liquidação. Ordens de stop-loss e take-profit também são executadas automaticamente - quando o preço cruza o seu sl ou tp (verificado contra os pavios dos candles de 1 minuto na varredura por minuto, então um spike que recuou ainda conta), a posição é encerrada naquele nível. Um trailing stop avança a partir do melhor preço visto: na varredura ele é movido pelo extremo de cada candle depois que esse candle foi checado contra o stop em vigor, então uma barra nunca pode derrubar você em um nível que ela mesma criou.

Saldo e patrimônio

Toda conta paper começa com um valor nominal de $10,000. /v1/account e /v1/balance informam balance_usd, equity_usd e free_margin_usd para você expressar resultados como retorno em vez de um valor solto em dólares. Esse saldo é um placar, não uma restrição: a margem não é debitada dele e uma abertura nunca é recusada por falta de fundos (margin_enforced: false). Dimensione suas posições por conta própria se quiser que a restrição seja real.

Headers de rate limit

Toda resposta traz X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (segundos epoch); um 429 acrescenta Retry-After. Os limites são contados por chave, então uma segunda chave tem o próprio orçamento. X-RateLimit-Scope informa se valeu o limite da chave ou o limite por IP.

Os trades do seu bot no site

Posições abertas pela API ficam na sua conta no lado do servidor, então aparecem em My Trades, contam para as tabelas da temporada e para o XP, e alimentam seu Trading Report - o mesmo relatório que GET /v1/report devolve ao bot.

A API de streaming é grátis de propósito

Colocá-lo atrás de um paywall empurraria todo mundo de volta ao polling, o que nos custa muito mais que o stream - então os incentivos se alinham: use o WebSocket e nós dois ganhamos. Os dados de mercado continuam sem chave e grátis para sempre; uma chave só eleva o limite.

Realismo de execução, porque um backtest que te lisonjeia não vale nada

Duas coisas neste motor são deliberadamente generosas, e é melhor citá-las do que deixar você descobrir numa conta real. Uma ordem a mercado executa ao preço ao vivo, então uma posição nova mostra 0.00 não realizado e a linha de entrada fica exatamente onde você pediu. E a margem de manutenção é fixa em 0.5%, qualquer que seja o valor da posição. Para aprender a operar, as duas são a escolha certa. Para provar uma estratégia, são otimistas, e quanto maior o tamanho, mais otimistas ficam.

Por isso são chaves liga/desliga, não suposições. Desligadas por padrão - nada do que você já construiu muda - e ligadas, o preço de execução e o preço de liquidação se comportam como um book real e uma tabela real de limites de risco os fazem se comportar.

GET  /api/bot/v2/realism                     // your setting, the venue table and the whole tier ladder
POST /api/bot/v2/realism {"slippage": true, "margin_tiers": true, "margin_venue": "binance"}

# or per call, so one strategy can be tested both ways without touching the account
POST /api/bot/v1/open {"symbol":"BTC","side":"long","margin_usd":100,"leverage":10,
                       "slippage": true, "margin_tiers": true, "mmr_pct": 0.4}

Slippage

A execução se move contra você pelo que custa percorrer um livro de ordens real: 0.01% nos majors, 0.05% em cripto mais fina, 0.005% em forex, 0.02% em ações, metais e índices. Uma compra paga mais caro, uma venda vende mais barato - nunca o contrário.

Faixas de margem

A margem de manutenção sobe com o valor nocional, como numa tabela de limite de risco de corretora, então uma posição grande é liquidada mais cedo - uma exigência de manutenção maior tolera menos movimento adverso antes de fechar você, que é exatamente o que uma corretora quer em posições grandes. Este é o nosso modelo publicado, não a tabela de uma corretora específica, e GET /realism retorna a escada inteira - você nunca deveria precisar fazer engenharia reversa dela a partir de um preço de liquidação.

Corretora da margem

Em qual taxa de margem de manutenção publicada de cada plataforma se basear: Binance 0.40%, Bybit 0.50%, MEXC 0.10%, Kraken 0.60%, Hyperliquid 1.25%, Coinbase 1.33%. Ela muda apenas onde fica o preço de liquidação - nunca o tamanho, as taxas ou o P&L.

Esses três são apenas um subconjunto. A simulação inteira é configurável - o tamanho do book e se ele é um orçamento real, seus próprios números de slippage e taxas, impacto do tamanho, latência, execuções parciais, recusas e funding - e oito presets a configuram em uma chamada. Uma posição mantém a margem de manutenção com que foi executada, então ativar isso nunca reescreve um trade que você já tem, e cada fechamento registra com o que rodou. É daí que vem a coluna Fills da arena - uma tabela que ranqueia bots deveria dizer quais deles estavam no modo fácil.

Monte a plataforma em que você realmente vai operar

As três chaves acima fazem parte de algo maior. Tudo o que este motor assume é um campo que você pode definir: o tamanho do book e se ele é um orçamento real, quanto custa atravessar o livro de ordens na entrada e na saída, quanto tempo sua ordem fica em trânsito, se uma ordem é executada parcialmente, com que frequência a plataforma diz não, quanto você paga de taxas, se o funding é cobrado e onde fica o preço de liquidação.

Os padrões são deliberadamente fáceis, e vale dizer isso com clareza. Uma ordem a mercado é executada inteira ao preço ao vivo, a margem de manutenção é fixa em 0.5%, o saldo é um placar que nunca recusa uma abertura, e não há latência nem impacto do tamanho. É o lugar certo para colocar um bot para rodar. É o lugar errado para julgar se ele tem vantagem. Uma chamada muda isso.

GET  /api/bot/v2/sim                    # your profile, every field with its range, and the presets
POST /api/bot/v2/sim {"preset": "realistic"}

# or exactly your own venue
POST /api/bot/v2/sim {"start_balance_usd": 2500, "margin_enforced": true,
                      "slippage": true, "slippage_bps": 8, "impact_bps_per_100k": 15,
                      "latency_ms": 250, "taker_bps": 5.5, "margin_venue": "bybit"}

Valores fora do intervalo são recusados, nunca ajustados - uma estratégia jamais deve ser medida sob uma configuração que você não escolheu. Uma posição mantém, pelo resto da vida, a margem de manutenção, a taxa e o custo de cruzamento de saída com que foi executada; ligar qualquer coisa nunca reescreve um trade que você já tem.

Oito presets, para você não ter que inventar dezoito números

sem atrito

O motor como sempre foi. Ponha o bot para rodar, veja os trades entrarem e só depois mude algo.

realista

O ideal para medir um edge: o book custa o que medimos nas duas pontas, tamanho custa mais, a escada de limite de risco está ligada, o funding é cobrado e o book recusa o que não consegue bancar.

binance · bybit · okx · hyperliquid

A taxa taker e a margem de manutenção publicadas por essa corretora, com o nosso custo de cruzamento medido, margem aplicada e a escada ativados.

thin_book · brutal

Um perp de média capitalização em um horário ruim, e depois algo pior do que qualquer coisa que você vai encontrar: 60 bps para atravessar, 120 bps por $100k de tamanho, execuções a partir de um quarto, uma abertura em cada vinte recusada, um segundo de latência. Números nossos, não de nenhuma plataforma. Se uma estratégia ainda funciona aqui, ela não vive de sorte na execução.

Cada campo, seu intervalo e o que ele muda

CampoIntervaloO que faz
O book — quanto o bot pode arriscar
start_balance_usd100 – 10,000,000O book contra o qual seus resultados são medidos: return_pct, a curva de patrimônio e o drawdown máximo seguem ele. Teste com o tamanho de conta que você realmente vai operar.
margin_enforcedoff / onA maior diferença entre um placar e uma corretora. Ligado, uma abertura que precisa de mais do que a sua margem livre é recusada com 402 insufficient_margin. A margem livre é o saldo menos a margem comprometida — o lucro não realizado de uma posição aberta não serve de garantia para uma nova, porque toda posição aqui é de margem isolada.
leverage_max0 – 10,000Seu próprio teto abaixo do limite de cada mercado. Prova que uma estratégia nunca derivou em silêncio para 100×. 0 = o limite do mercado.
max_notional_usd0 – 1,000,000,000Seu próprio teto para o valor nocional de uma posição. 0 = nenhum teto seu.
A execução — quanto custa atravessar o livro
slippageoff / onExecute contra si mesmo como percorrer um livro real: 0.01% nos majors cripto, 0.05% em cripto mais fina, 0.005% em forex, 0.02% em ações, metais e índices. Uma compra paga mais caro, uma venda vende mais barato.
slippage_bps0 – 500Seu próprio valor no lugar dessa tabela. 10 = 0.10%. null volta para a tabela.
impact_bps_per_100k0 – 500Tamanho custa mais, porque uma ordem maior percorre mais fundo o livro: este tanto de pontos-base a mais por $100,000 de valor nocional.
exit_slippageligado / desligadoPague o custo de cruzamento também na saída, não só na entrada. Sem isso, uma estratégia de scalping parece melhor do que jamais consegue operar. Um stop, take-profit ou liquidação ainda executa no próprio nível — veja os limites abaixo.
latency_ms0 – 2,000Sua ordem fica em trânsito por esse tempo, e o preço é relido depois — então a execução é o mercado como estava quando sua ordem chegou, não quando você a enviou.
partial_fillsoff / onUma ordem a mercado pode ser executada com menos do que pediu. O tamanho executado é position.margin_usd; a proporção está no header X-MP-Fill-Pct e no objeto fill da v2.
min_fill_pct10 – 100A pior proporção que você pode receber. 40 significa algo entre 40% e 100% do que você pediu.
reject_rate_pct0 – 50Esta parcela das aberturas é recusada com 503 venue_rejected de propósito. Um bot que não sabe lidar com uma recusa não está pronto, e este é o lugar barato para descobrir isso.
O custo
taker_bps0 – 100Sua própria taxa por lado em vez da tabela de uma corretora. 5.5 = 0.055%. A redução por alavancagem continua valendo, então nenhuma configuração faz uma ida e volta comer o valor todo.
fundingligado / desligadoDesligado, o funding nunca é cobrado. É assim que você distingue um edge de execução de um edge de carry — um short mantido durante funding positivo pode ser lucrativo só por causa do funding.
funding_mult0 – 5Escala a taxa real de 8 horas.
A liquidação
margin_venue10 corretorasDe quem é a taxa de margem de manutenção publicada que decide onde fica a liquidação. Binance 0.40%, Bybit 0.50%, MEXC 0.10%, Kraken 0.60%, Hyperliquid 1.25%, Coinbase 1.33%. Ela move só o preço de liquidação.
margin_tiersoff / onA margem de manutenção sobe com o valor nocional como uma escada de limite de risco, então uma posição grande é liquidada mais cedo. A escada inteira está publicada em GET /v2/realism.
mmr_pct0.05 – 10Sua própria margem de manutenção, prevalecendo sobre margin_venue e o nosso padrão.

O que isto não modela, declarado em vez de descoberto

Um stop-loss, take-profit ou liquidação executa no próprio nível e nunca paga o custo de cruzamento: a varredura do lado do servidor roda sobre todas as contas de uma vez e não consegue ler um perfil por passada. Não há livro de ordens com profundidade real por trás do modelo de impacto — impact_bps_per_100k é um custo linear declarado, não um livro simulado. E todo o custo de cruzamento da saída é cobrado contra o preço de marcação, que é um spread só, não um bid e um ask que você possa cotar separadamente. Todo o resto acima é aplicado exatamente como escrito.

Cada valor deste perfil pode ser lido de volta em GET /api/bot/v2/sim, incluindo como seria uma execução agora mesmo — um número que o bot não consegue ler de volta é um número que ele precisa adivinhar. GET /api/bot/v2/report então mostra quanto a execução realmente custou: taxas, funding, bruto contra líquido e kept_pct, a parcela do bruto que sobreviveu. Esse é grátis em todos os planos, porque não é um detalhamento de onde está o seu edge — é se o edge é real.

Taxas como na corretora que você realmente vai usar

Por padrão, toda execução paper paga a taxa da MarginPad: 0.055% por lado em cripto, as duas pontas, cobrada como round trip no fechamento. É uma média justa, mas não é a conta exata de ninguém. Se você já sabe onde o bot vai rodar de verdade, cobre a conta paper pela tabela dessa corretora - a taxa taker publicada, menos o desconto de indicação que um cadastro pela MarginPad recebe lá - para que o forward test se liquide como a conta real vai se liquidar:

GET  /api/bot/v2/fees                       // the table below + your current default
POST /api/bot/v2/fees  {"venue":"hyperliquid"}   // account default: every open from now on, site and API
POST /api/bot/v2/open  {"symbol":"BTC","side":"long","margin_usd":100,"leverage":10,"fee_venue":"bybit"}   // just this one
POST /api/bot/v2/open  {..., "dry_run":true}      // -> fee_venue, taker_fee_pct, fee_vs_marginpad_default_usd
CorretoraTakerNosso desconto de indicaçãoVocê paga por lado
Bybit0.055%20%0.044%
Binance0.050%20%0.040%
Bitget0.060%20%0.048%
Gate0.050%20%0.040%
Hyperliquid0.045%4% (código MARGINPAD)0.0432%
OKX · Kraken0.050%-0.050%
MEXC0.020%-0.020%
KuCoin0.060%-0.060%
Padrão MarginPadnenhuma plataforma escolhida0.055%

As taxas são o nível base publicado das corretoras e os descontos que informamos em /exchanges/; a API as retorna com source para você saber que são números divulgados, não medições. As duas pontas pagam a taxa taker (o motor paper executa a mercado; um rebate maker numa entrada pendente não é modelado). Só perps cripto - ações, forex, metais e índices mantêm as taxas por classe da MarginPad, qualquer que seja a corretora. Posições abertas mantêm a taxa com que foram executadas; o teto de alavancagem extrema (um round trip nunca acima de 20% da margem) continua valendo. A mesma escolha é o seletor "Taxas como na" no formulário do Paper Trade, então um bot e os trades manuais do dono dele pagam taxas idênticas.

Escrevendo um bot que não quebra

Sempre envie client_order_id ao abrir. Esta é a linha mais importante destes docs. Sem ele, uma requisição que expira na rede deixa você no escuro: a posição abriu ou não? Tente de novo e você pode ter duas. Com ele, a nova tentativa devolve a posição que a primeira chamada criou, marcada com idempotent: true:

POST /api/bot/v2/open
{"symbol":"BTC","side":"long","margin_usd":100,"leverage":5,"client_order_id":"sig-2026-08-19-1403"}

// first call            -> {"ok":true,"data":{"position":{"id":"bot...", ...}}}
// same call retried     -> {"ok":true,"data":{"position":{"id":"bot...", ...},"idempotent":true}}

Use um valor que a sua estratégia consiga gerar de forma determinística - um id de sinal, ou símbolo mais timestamp do candle. Os ids são lembrados por 7 dias.

Fechar também aceita uma. Envie client_order_id em /close e uma nova tentativa informa o que a primeira chamada fez (idempotent: true) em vez de um erro que você precisa interpretar.

Envie o symbol ao fechar. Toda linha de /positions já o traz, então é de graça adicionar e isso encurta o fechamento de forma mensurável:

POST /api/bot/v2/close
{"id":"bot...","symbol":"BTC"}    // one price fetch, one round trip
{"id":"bot..."}                   // server must first look up which symbol to price

Nosso trading store é uma única instância fixada em uma região, então cada salto extra custa o que custa a ida e volta até ela de onde você está. Medido em 2026-08-19: cerca de 20 ms a partir da Europa, mas 198 ms de mediana e 368 ms no percentil 95 a partir de Singapura. Um feed de preços frio soma cerca de 400 ms por cima, e sem a dica um fechamento em um par líquido poderia acabar esperando por um ilíquido no mesmo lote. Com a dica, um fechamento é um salto mais um preço já aquecido. Um symbol errado ou desatualizado não custa nada - o servidor percebe e volta ao caminho normal.

Não gaste seu orçamento de requisições com polling. A maioria dos bots gasta a maior parte das chamadas perguntando "algo mudou?". Duas coisas tornam isso quase gratuito:

# 1. state changes: send back the ETag, get 304 and an empty body when nothing moved
curl -H "X-API-Key: $KEY" -H 'If-None-Match: W/"1a2b3c-4"' \
     https://marginpad.io/api/bot/v1/positions

# 2. live prices: /price is KEYLESS, so it costs nothing against your 120/min
curl https://marginpad.io/api/bot/v1/price?symbol=BTC

O ETag cobre o estado estrutural - ids de posição, status, quantidade, stop, alvo, saída - e deliberadamente não o preço de marcação, que muda a cada tick e faria o ETag nunca bater. Então: consulte /positions para saber "meu stop disparou?" e consulte o /price sem chave para o PnL. Fique de olho em X-RateLimit-Remaining e reduza o ritmo conforme Retry-After.

WebSocket - pare de fazer polling de vez

Posições e preços são enviados a você, então você descobre que seu stop disparou em poucos segundos, em vez de na próxima consulta:

wss://marginpad.io/api/bot/v2/stream?api_key=mpb_…

<- {"type":"welcome","data":{"channels":["positions","prices"],"tick_ms":2000},"ts":…}
<- {"type":"snapshot","data":{"positions":[…]},"ts":…}
<- {"type":"position","data":{"event":"closed","position":{…,"pnl_usd":-1.24}},"ts":…}
<- {"type":"prices","data":{"BTC":64770.1},"ts":…}

-> {"op":"subscribe","channels":["positions"]}     // prices off, events only
-> {"op":"ping"}                                    // <- {"type":"pong"}

Eventos: position com event: opened | updated | closed dispara quando algo realmente muda - uma execução, um stop se movendo, um fechamento, uma liquidação. prices traz o preço de marcação dos seus símbolos abertos a cada tick. O movimento do preço de marcação sozinho nunca gera um evento position, então o canal fica quieto quando nada aconteceu.

Os stops são liquidados mais rápido enquanto você está conectado. O stream aciona a mesma varredura de SL/TP/liquidação do lado do servidor que o caminho REST usa, na cadência de ~2s, em vez de deixar sua posição para a varredura periódica.

Até 3 sockets simultâneos por conta, compartilhados entre suas chaves. Os sockets são reciclados após 6 horas - reconecte e você recebe um snapshot novo. Se a conexão cair, trate o próximo snapshot como a verdade em vez de reprocessar eventos perdidos.

Webhooks - eventos enviados ao seu servidor API PRO

Medido nos últimos 40 dias: 76.4% de todas as chamadas a esta API são polling de /positions e /account atrás de eventos que ainda não aconteceram. Um webhook inverte isso - nós fazemos POST para você quando algo realmente acontece, com o mesmo formato Position que um polling teria retornado, e funciona enquanto seu bot está offline, reiniciando ou implantado num lugar que não consegue manter um socket.

POST /api/bot/v2/webhooks
{"act":"add","url":"https://bot.example.com/marginpad","events":["position.closed","position.liquidated","order.filled"]}

-> {"ok":true,"data":{"webhook":{"id":"wh…","secret":"whs_…","events":[…],"active":true}}}

# what arrives at your URL, seconds after the event:
POST https://bot.example.com/marginpad
X-MP-Event: position.closed        X-MP-Delivery: 1841
X-MP-Timestamp: 1789124656008      X-MP-Signature: sha256=3763dc5d…
{"event":"position.closed","ts":1789124656008,"hook_id":"wh…","data":{"id":"bot…","symbol":"BTC","status":"closed","pnl_usd":-0.08,"close_reason":"SL hit",…}}

Eventos: position.opened · position.updated (um stop ou alvo mudou) · position.closed · position.liquidated · order.filled (traz a posição que criou) · order.expired · order.cancelled. Omita events para receber todos. Trades feitos pelo site na mesma conta também os disparam.

Verifique cada entrega. X-MP-Signature é sha256=HMAC_SHA256(secret, raw body) com o secret retornado quando você adicionou o hook. Compare antes de interpretar o body; os dois SDKs trazem verify_webhook / verifyWebhook. Responda 2xx em até 6 segundos - qualquer outra coisa é tentada de novo 5 vezes com backoff (30 s, 1, 2, 4 min), e um hook é pausado após 25 falhas consecutivas; GET /webhooks mostra active, consecutive_failures e last_error para você ver o motivo. Três hooks por conta no Pro, quinze no Max, cinquenta no Business; as entregas são best-effort, o snapshot do WebSocket e /positions continuam sendo a fonte da verdade.

Teste antes de escrever um receptor: registre https://marginpad.io/api/whsink/<any-token-you-choose> como URL e depois abra um GET nesse mesmo endereço - ele devolve as últimas 20 entregas (headers e body) por 15 minutos. Sem autenticação; o token é o segredo.

Books - uma estratégia, um resultado limpo 2.5

Um book é um diário, saldo, relatório e curva de patrimônio separados dentro da sua conta. Crie uma chave com o nome de um book e toda chamada feita com essa chave opera nesse book; sua conta principal e seus outros books nunca o veem. Contas Free recebem um book além da conta principal, API Pro cinco, Max vinte e Business cinquenta.

POST /api/bot/key  {"act":"create","name":"rsi bot","book":"rsi"}   // key bound to the book "rsi"
GET  /api/bot/v1/accounts        // every book with lifetime numbers and its keys
GET  /api/bot/v1/account         // "account":"rsi" on a book key, "main" otherwise
POST /api/bot/v1/reset  {"confirm":true}   // this book back to $10,000: closes archived, orders cancelled
GET  /api/bot/v1/equity?days=30&step_min=60   // equity curve + max_drawdown_pct

O reset é recusado com 409 open_positions_exist enquanto algo estiver aberto: feche primeiro e depois faça o reset. Os trades arquivados são mantidos (nunca apagados), mas o relatório, o ledger, o /trades e a curva de capital começam a partir do reset, e um navegador que ainda guarde o diário antigo não consegue enviá-lo de volta. Os webhooks disparam nos hooks da conta com "account":"rsi" no payload, então um único receptor atende todos os books.

Replay - rode seu bot em um dia passado 2.6

Faça o backtest com o código que você vai rodar ao vivo. Inicie um replay de um dia UTC passado e as mesmas rotas que seu bot já chama passam a atuar em um diário de replay separado, com preços vindos dos próprios candles de 1 minuto da MarginPad no cursor. Stops, alvos e liquidações são verificados em cada candle entre duas das suas chamadas, na máxima e na mínima, com a mesma conta de taxas e funding do ao vivo. Nada de um replay chega aos rankings, à arena ou ao seu relatório.

POST /api/bot/v1/replay  {"symbol":"BTC","day":"2026-09-11","speed":120}   // 120 market seconds per real second: a day in 12 minutes
GET  /api/bot/v1/replay?interval=5&bars=120       // cursor, price, progress, candles up to the cursor
POST /api/bot/v1/open    {...}                        // acts on the replay book at the cursor price while the replay runs
POST /api/bot/v1/replay  {"act":"stop"}               // close at the cursor, get the summary, empty the replay journal

A velocidade vai de 1 (tempo real) a 600 (um dia em 2.4 minutos). Um replay por chave por vez, só cripto, só ordens a mercado por enquanto: leia o preço e os candles do replay em GET /v1/replay, já que /v1/price e /v1/klines, sem chave, continuam respondendo dados ao vivo.

Gerenciando suas chaves

Você pode ter várias chaves numa só conta - mantenha um bot de backtest e um bot ao vivo separados e revogue um sem tocar no outro. O uso e os limites de requisição são contados por chave, então cada uma tem seu próprio orçamento e sua própria linha nas suas estatísticas. Logado no site, pelo navegador:

POST /api/bot/key  {"act":"list"}                          // all your keys
POST /api/bot/key  {"act":"create","name":"backtest-bot"}   // new key
POST /api/bot/key  {"act":"rename","key":"mpb_...","name":"live-bot"}
POST /api/bot/key  {"act":"revoke","key":"mpb_..."}         // usage history is kept

Uma chave revogada retorna 401 revoked_key. Chaves são segredos - quem tiver uma pode operar sua conta paper. Crie e revogue no topo desta página.

Arena de bots - um placar público para bots

Toda conta ou book com pelo menos cinco fechamentos abertos pela API nesta temporada de 14 dias entra no ranking de /arena/ por PnL realizado líquido de taxas e funding, com taxa de acerto, retorno sobre o placar de $10,000, ROE médio e liquidações. Sem prêmios e sem nada para se inscrever: opere pela API e a tabela encontra você. JSON: GET /api/arena.

Use no Claude, ChatGPT ou Cursor

A MarginPad mantém um servidor MCP remoto, então um assistente de IA pode ler os mercados e operar sua conta de paper trading diretamente - sem código de ligação:

https://marginpad.io/mcp

Adicione como servidor MCP remoto no seu cliente e defina o header X-API-Key: mpb_… se quiser as ferramentas de paper trading. As ferramentas de dados de mercado não precisam de chave. Vinte e oito ferramentas estão expostas: preços, candles, mercados, screener, funding, interesse aberto, liquidações, medo e ganância, o calendário econômico, duas calculadoras, e paper open (com trailing stops e dry run) / ordens limite e stop / modify / cancel / close / sltp / positions / orders / balance / trades / report / fees / accounts / reset / equity / replay. GET /mcp no navegador retorna o descritor do servidor.

Formato de resposta - v1 e v2

/api/bot/v1/* está congelada. Os corpos de resposta não vão mudar; bots escritos para ela continuam funcionando indefinidamente, e ela ainda recebe correções de bugs.

/api/bot/v2/* é a mesma API com o envelope que nossos endpoints de dados já usam - um formato previsível para sucesso e falha, para você escrever o parsing uma vez só:

{ "ok": true,  "data": { ... }, "ts": 1787200000000 }
{ "ok": false, "error": { "code": "unknown_symbol", "message": "No price feed for that symbol...", "symbol": "FOO" }, "ts": 1787200000000 }

Mesmos caminhos, mesmos parâmetros, mesma chave - troque v1 por v2 na URL. Os valores de code dos erros são identificadores estáveis; message é para humanos e pode ser reescrita.

Códigos de erro

Na /v2, as falhas são sempre {"ok":false,"error":{"code","message"},"ts"}. O code é um identificador estável em que você pode se basear; a message é texto livre e pode ser reescrita. Alguns erros trazem o valor de que você precisa para corrigir a chamada - sl_wrong_side e tp_wrong_side incluem o preço ao vivo.

CódigoHTTPO que fazer
missing_api_key / invalid_api_key401Envie uma chave válida em X-API-Key.
revoked_key401Crie uma nova chave; esta foi revogada.
rate_limit429Aguarde até Retry-After. Não repita a requisição na hora.
unknown_symbol404Consulte /v1/markets.
symbol_required, margin_usd_min_1, margin_usd_max_100000, id_required400Corrija o corpo da requisição.
sl_wrong_side / tp_wrong_side400A resposta traz live - coloque o nível do lado correto dele.
stop_wrong_side400Uma entrada stop espera do lado do rompimento (long acima, short abaixo). Use type:"limit" para uma entrada em pullback.
trail_pct_invalid400trail_pct é um percentual entre 0.05 e 50; é recusado, nunca ajustado em silêncio.
nothing_to_modify400/modify_order precisa de pelo menos um campo.
plan_required402Webhooks exigem um plano pago. Todo o resto desta página está no Free. O body traz plan_needed.
premium_required402Código legado de plan_required, ainda enviado para que um bot 2.3 o reconheça.
too_many_webhooks409Exclua um antes - três hooks no Pro, quinze no Max, cinquenta no Business.
bad_url / bad_event400As URLs de webhook são https em host público; os nomes dos eventos estão listados em GET /webhooks.
too_many_open409Você está no teto de posições abertas do seu plano. Feche alguma.
already_closed400Inofensivo em uma nova tentativa - a posição já está encerrada.
no_price400Sem preço ao vivo neste instante; a posição continua aberta. Tente de novo.
unavailable503Transitório. Tente de novo com backoff.

Ainda travado? O corpo do erro é o primeiro lugar para olhar, e o status é o segundo. Se nenhum dos dois responder, escreva para support@marginpad.io com o endpoint e o corpo exato que devolvemos - o que mais incluir está na página de suporte. Uma pessoa lê.

API grátis de dados de liquidação DADOS AO VIVO

Liquidações em tempo real agregadas de oito corretoras pelo nosso próprio coletor - os dados por trás do nosso feed Rekt e do mapa de calor de liquidações, expostos como JSON grátis. Dados comparáveis normalmente ficam atrás de paywall a $300+/mês em outros lugares; aqui não precisam de nenhuma chave de API. Com cache na borda e limite de requisições, aguentam bem bots que fazem polling.

GET/api/v1/feedAs liquidações mais recentes em TODOS os símbolos monitorados - {events:[{ts, exchange, symbol, side, price, qty, notional}]}. Os eventos chegam aqui segundos depois de acontecerem (cache de edge de 3s). Consulte a cada 3-5s.
GET/api/v1/liquidations/live?symbol=BTC&limit=400Eventos brutos de liquidação recentes de um símbolo (BTC, ETH, SOL, XRP, DOGE, BNB, ADA, LINK, AVAX, LTC). side é long_liquidated ou short_liquidated, notional é o tamanho em USD.
GET/api/v1/liquidations/recent?symbol=BTC&minutes=1440Histograma por intervalos de tempo (long vs short em $ por intervalo) para gráficos - a fonte exata das estatísticas do nosso mapa de calor. minutes: até 43200 (30 dias).
GET/api/v1/clusters?symbol=BTCClusters de liquidação modelados: níveis de preço onde se estima que a liquidez de liquidação esteja agora - {clusters:[{price, side, est_notional}]}. Atualiza continuamente a partir do fluxo de ordens ao vivo.

Atribuição é bem-vinda (link marginpad.io), mas não obrigatória. A cobertura é de ~70%+ do fluxo de liquidações do mercado - as corretoras que movem o preço. Uso educacional; sem SLA de uptime. Só quer dados de mercado? Toda a superfície sem chave está documentada na página da API grátis de dados cripto.

Backtest, paper, ao vivo - nessa ordem

A maioria dos bots de trading cripto que parecem lucrativos num backtest perde dinheiro na primeira semana em que vai para o ao vivo. Backtests reproduzem candles históricos limpos - eles não pegam uma race condition na lógica das suas ordens, um bug de dimensionamento de posição que só aparece depois de uma sequência de perdas, ou uma alavancagem que cresce em silêncio além do que sua margem aguenta. O forward testing roda o mesmo bot, o mesmo caminho de código, contra preços reais ao vivo em tempo real. Se a estratégia tem uma falha, ela aparece aqui, onde um bug não custa nada.

BacktestingPaper trading (esta API)Trading ao vivo
PreçosCandles históricosPreços reais ao vivo, em tempo realPreços reais ao vivo
RiscoNenhumNenhum - dólares simuladosDinheiro real em jogo
Pega bugs de lógicaRaramente - dados reproduzidos os escondemSim - mesmo caminho de código do ao vivoSim, mas cada bug custa dinheiro
Checagem de overfittingNão - você ajustou nesses dadosSim - dados futuros inéditosSim
CustoGrátisUso grátis - taxas & funding simuladosTaxas + perdas + funding
Ideal paraFiltrando ideias rápidoComprovando o bot antes de colocar dinheiro neleUma estratégia já provada duas vezes

A etapa do meio é a que a maioria das pessoas pula - e a que as teria salvado. Faça o backtest de uma ideia aqui, teste-a em tempo real nesta API e só depois deposite em uma conta.

Passo três: onde rodar o bot de verdade

Tudo nesta página é liquidado em dólares simulados. Depois que o bot sobreviver a semanas de forward testing, o mesmo código precisa de uma API de corretora para colocar ordens reais. Duas corretoras para as quais indicamos quem cria bots, por motivos diferentes:

HLHyperliquidon-chain · API-first

Perps na própria chain, com API REST e WebSocket pública, subcontas que recebem cada uma sua própria carteira de API (o bot nunca guarda sua chave principal), funding por hora e um livro que qualquer um pode auditar on-chain. A coisa mais próxima de rodar esta API com dinheiro de verdade.

4%de desconto nas taxas
com o código MARGINPAD
Entrar na Hyperliquid →
BBybitcentralizada · livros mais profundos

Formatos REST e WebSocket parecidos com o que você acabou de escrever, uma chave separada por subconta e um dos feeds de onde vêm os nossos preços. O padrão quando você quer um livro centralizado com entrada em moeda fiduciária.

Abrir uma conta na Bybit →
Links de indicação - a MarginPad pode ganhar uma comissão se você abrir uma conta, sem custo para você; o desconto da Hyperliquid é o desconto de indicação deles. A API paper continua grátis de qualquer forma, e nada aqui exige conta em corretora. A Hyperliquid não está disponível para pessoas dos EUA, conforme seus termos.

FAQ

Existe uma API grátis de dados de liquidação / mapa de calor?

Sim - a MarginPad expõe liquidações em tempo real agregadas de 8 corretoras em JSON grátis, sem precisar de chave: /api/v1/feed, /api/v1/liquidations/live, /api/v1/liquidations/recent e /api/v1/clusters. Feeds comparáveis costumam custar $300+/mês. Veja a seção de dados de liquidação.

A API de bot de trading é realmente grátis?

Sim. É um simulador de paper trading - as posições usam preços reais de mercado ao vivo, mas nenhum dinheiro real. Entre com um e-mail, gere uma chave de API e comece a testar na hora. Os planos pagos só elevam os limites.

Quais linguagens de programação posso usar?

Qualquer linguagem que consiga fazer uma requisição HTTPS - Python, JavaScript/Node.js, Go, Rust, PHP ou curl puro. REST padrão, respostas JSON, um único header X-API-Key.

Quais moedas meu bot pode operar?

Qualquer par USDT com preço ao vivo nas principais corretoras - BTC, ETH, SOL e centenas de altcoins, além de ações dos EUA, principais pares de forex, metais e índices como perps. Consulte um símbolo com GET /api/bot/v1/price?symbol=SOL.

Preciso de conta em corretora ou de depósito?

Não. Sem depósito, sem carteira, sem KYC. Você só entra com um e-mail para que sua chave de API e suas posições persistam entre as sessões.

O MarginPad Premium inclui a API?

Não. A Bot API tem seus próprios planos e uma assinatura Premium não altera nenhum limite da API. O Premium libera recursos no site; os planos da API liberam limites da API. São comprados separadamente.

Guias e tutoriais