> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arbitragem-crypto.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Crossing Count (Spot x Future)

## 📖 Descrição

Retorna a quantidade de cruzamentos de preço (spot x future) processada e persistida para um **ticker** e **exchange**, somada sobre uma **janela móvel dos últimos 7 dias** (em vez de acumular indefinidamente todo o histórico). Assim o número reflete a frequência de cruzamento recente e não cresce para sempre. A busca considera apenas registros com `crossing_count > 0`. O resultado é cacheado por **4 horas** para reduzir consultas ao banco. Se não houver registro na janela, retorna `crossingCount: 0`. O campo `spotXFuture` indica que o dado se refere ao contexto Spot x Future.

***

## 🛠️ Requisição

### Método

`GET`

### URL

```plaintext theme={null}
/v1/arbitrage/future/crossing-count
```

### Parâmetros de Query

| Parâmetro  | Tipo   | Obrigatório | Descrição                        |
| ---------- | ------ | ----------- | -------------------------------- |
| `ticker`   | string | Sim         | Ticker do par (ex: "RBNT\_USDT") |
| `exchange` | string | Sim         | Nome da exchange (ex: "Binance") |

### Exemplo de Requisição

```bash theme={null}
curl --location 'localhost:8080/v1/arbitrage/future/crossing-count?ticker=RBNT_USDT&exchange=Binance'
```

***

## 📤 Resposta

### Exemplo de Resposta (registro encontrado)

```json theme={null}
{
    "ticker": "RBNT_USDT",
    "exchange": "Binance",
    "crossingCount": 5,
    "spotXFuture": true
}
```

### Exemplo de Resposta (sem registro)

```json theme={null}
{
    "ticker": "RBNT_USDT",
    "exchange": "Binance",
    "crossingCount": 0,
    "spotXFuture": true
}
```

### Campos da Resposta

| Campo           | Tipo    | Descrição                                                                                            |
| --------------- | ------- | ---------------------------------------------------------------------------------------------------- |
| `ticker`        | string  | Ticker consultado                                                                                    |
| `exchange`      | string  | Exchange consultada                                                                                  |
| `crossingCount` | number  | Soma dos cruzamentos nos últimos 7 dias (0 se não houver registro com crossing\_count > 0 na janela) |
| `spotXFuture`   | boolean | Sempre `true`; indica que o dado é do contexto Spot x Future                                         |

***

## 📝 Notas

<Callout type="info">
  **Comportamento:**

  * A consulta usa a coleção `spot_future_crossing_counts`, com filtro `ticker`, `exchange`, `crossing_count > 0` e `processing_date` dentro dos últimos 7 dias. Os `crossing_count` dos registros na janela são somados (a janela é controlada pela constante `CrossingCountWindowDays` no back-end).
  * O resultado é cacheado por **4 horas** (em memória ou Redis, conforme configuração). Após esse período, a próxima requisição consulta o banco novamente.
  * Os dados são gerados pelo endpoint **POST** `/v1/arbitrage/future/crossing-counts`, que processa as operações do dia e persiste as contagens.
</Callout>

<Callout type="warn">
  **Erros comuns:**

  * `400`: parâmetro `ticker` ou `exchange` ausente ou vazio.
  * `500`: erro interno (ex.: falha na base de dados ou no cache).
</Callout>
