CCXT Skill em Profundidade: Conectar OpenClaw a 100+ Exchanges

CCXT é a skill universal que conecta OpenClaw a 100+ exchanges. Como funciona, melhores práticas, limitações.

CCXT (Crypto Currency eXchange Trading Library) é uma das bibliotecas open-source mais usadas em crypto. Fornece interface unificada pra interagir com 100+ exchanges via mesma API. A skill @openclaw/skill-ccxt traz isso pro OpenClaw.

O que CCXT resolve

Sem CCXT, conectar OpenClaw a 5 exchanges = 5 implementações diferentes. Cada exchange tem:

  • Naming diferente pra mesmos conceitos (BTC/USDT vs BTC-USDT vs BTCUSDT)
  • Auth diferente (HMAC, JWT, API key + signed nonce)
  • Response formats diferentes
  • Rate limits diferentes

CCXT abstrai tudo isso. Você fala uma única API, ele traduz pra cada exchange.

Instalação

openclaw skill install @openclaw/skill-ccxt

Configure as exchanges que vai usar:

# ~/.openclaw/config.yml
ccxt:
  exchanges:
    binance:
      api_key: "${BINANCE_API_KEY}"
      secret: "${BINANCE_API_SECRET}"
    bybit:
      api_key: "${BYBIT_API_KEY}"
      secret: "${BYBIT_API_SECRET}"
    okx:
      api_key: "${OKX_API_KEY}"
      secret: "${OKX_API_SECRET}"
      password: "${OKX_PASSPHRASE}"  # OKX exige passphrase

Tools que a skill expõe

  • ccxt_get_ticker(exchange, symbol) — preço atual de um par
  • ccxt_get_balance(exchange) — saldos
  • ccxt_create_order(exchange, symbol, side, type, amount, price?) — criar ordem
  • ccxt_cancel_order(exchange, id, symbol) — cancelar ordem
  • ccxt_fetch_order_book(exchange, symbol, depth?) — orderbook
  • ccxt_fetch_my_trades(exchange, symbol?) — histórico próprio
  • ccxt_get_funding_rate(exchange, symbol) — funding rate (futures)

Casos de uso ideais

1. Cross-exchange arbitrage

Comprar BTC mais barato em Bybit, vender mais caro em OKX (após accounting de fees + withdrawal time). CCXT simplifica polling de preço em N exchanges simultâneas.

2. Funding rate arbitrage cross-exchange

Quando funding rate diverge entre Binance e Bybit, abrir posições opostas em cada uma. CCXT permite mesma lógica funcionar em ambas.

3. Failover

Se uma exchange tem outage, bot automaticamente migra trades pra outra. Possível com CCXT por causa da interface unificada.

4. Bot multi-tenant

Mesmo bot servindo múltiplos usuários em exchanges diferentes (cada um com suas API keys). Útil pra ofertas em B2B.

Limitações importantes

1. Features específicas de exchange ficam fora

CCXT abstrai o common ground. Features únicas (ex: Binance's Convert, OKX's Trading Bots) não estão em CCXT. Pra essas, precisa skill específica.

2. Latência adicional

Camada de abstração adiciona alguns ms. Pra HFT importaria; pra OpenClaw normal não.

3. Rate limits ainda são por exchange

CCXT não burla limits. Bot precisa respeitá-los por exchange.

4. Updates de exchange podem quebrar CCXT

Quando exchange muda API, CCXT precisa atualizar. Geralmente é rápido (comunidade ativa) mas pode haver gaps de 1-2 dias.

Best practices

  1. Pin a versão da skill CCXT — não use "latest"
  2. Teste em testnet de cada exchange antes de mainnet
  3. Logs detalhados de todas calls (CCXT pode ter bugs em casos edge)
  4. Fallback manual pra exchanges críticas (skill nativa como backup)
  5. Retry com backoff em network errors

Quando NÃO usar CCXT

  • Você só usa UMA exchange → use a skill nativa daquela exchange
  • Você precisa de features específicas de uma exchange → skill nativa
  • Latência é crítica → skill nativa, não CCXT
  • Você quer ter controle completo sobre auth e error handling

Quando usar CCXT

  • Multi-exchange é parte da estratégia (arbitragem, failover)
  • Você é developer e quer prototipar rapidamente em várias exchanges
  • Você precisa do mesmo código rodando em N setups diferentes

Custo de operar com CCXT

A biblioteca em si é grátis (open-source MIT). Custos reais:

  • Manutenção: mais complexidade que skills nativas
  • Debug: quando algo dá errado, você lida com 2 camadas (CCXT + exchange)
  • Updates: dependência de quem mantém CCXT

Próximas leituras

CCXT é ferramenta poderosa quando usada certo. Não-bala-de-prata, mas próximo. 🦞