> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# Ordens Perpétuas

Este guia é dirigido a **Agent Java SDK `v0.3.0`**, Java 8+ e ao contrato público assinalado. Os exemplos são executados num back-end de parceiro após a inicialização de `client` em [Início rápido](/pt-PT/sdk/agent-sdk/java/quick-start).

## Pré-requisitos de exemplo

Os trechos Java partilham estas importações. Inicialize `client` utilizando o Quick Start e obtenha `platformUserId` a partir da ligação guardada. Os exemplos de IDs de utilizador/encomenda devem ser substituídos pelos seus próprios valores persistentes.

```java
import com.sixmm.agent.*;
import com.sixmm.agent.model.*;
import java.util.*;
```

## `listCurrentPerpetualOrders`

Modelo de pedido: `CurrentPerpetualOrdersRequest`.

```java
import com.sixmm.agent.model.CurrentPerpetualOrdersRequest;
import com.sixmm.agent.model.PerpetualResponse;
import java.util.Collections;

CurrentPerpetualOrdersRequest request = new CurrentPerpetualOrdersRequest();
request.platformUserIds = Collections.singletonList("1188041528");
request.limit = 100;
request.orderCategory = "NORMAL";
request.symbol = "BTCUSDT";
PerpetualResponse response = client.listCurrentPerpetualOrders(request);
System.out.println(response.data.items.size());
System.out.println(response.data.hasMore);
System.out.println(response.data.nextCursor);
```

### Campos de solicitação

| Campo             | Java tipo                | Obrigatório | Significado                                                                                                                                                          |
| ----------------- | ------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `orderCategory`   | `String`                 | Sim         | NORMAL ou CONDITIONAL; consultas condicionais requerem utilizadores explícitos.                                                                                      |
| `platformUserIds` | `java.util.List<String>` | Condicional | 1–100 IDs públicos exclusivos; necessário para os preenchimentos e pedidos condicionais. Omitir consultas suportadas para o âmbito do player direto; \[] é inválido. |
| `symbol`          | `String`                 | Não         | Filtro opcional de pares de negociação.                                                                                                                              |
| `limit`           | `Integer`                | Não         | Padrão 500; 1–1000.                                                                                                                                                  |
| `cursor`          | `String`                 | Não         | Utilize o nextCursor devolvido com filtros inalterados; parar quando hasMore for falso.                                                                              |

O exemplo lê uma página. Para campos obrigatórios, âmbito do leitor, semântica de filtro, limite, cursor e novas tentativas limitadas, siga [Visão geral da consulta](/pt-PT/sdk/agent-sdk/java/perpetual-queries). Mantenha todos os filtros inalterados durante a paginação; não interprete um erro como um resultado vazio.

## `listPerpetualOrderHistory`

Modelo de pedido: `PerpetualOrderHistoryRequest`.

```java
import com.sixmm.agent.model.PerpetualOrderHistoryRequest;
import com.sixmm.agent.model.PerpetualResponse;
import java.util.Collections;

PerpetualOrderHistoryRequest request = new PerpetualOrderHistoryRequest();
request.platformUserIds = Collections.singletonList("1188041528");
request.limit = 100;
request.orderCategory = "NORMAL";
request.symbol = "BTCUSDT";
request.endTime = System.currentTimeMillis();
request.startTime = request.endTime - 3_600_000L;
PerpetualResponse response = client.listPerpetualOrderHistory(request);
System.out.println(response.data.items.size());
System.out.println(response.data.hasMore);
System.out.println(response.data.nextCursor);
```

### Campos de solicitação

| Campo             | Java tipo                | Obrigatório | Significado                                                                                                                                                          |
| ----------------- | ------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `orderCategory`   | `String`                 | Sim         | NORMAL ou CONDITIONAL; consultas condicionais requerem utilizadores explícitos.                                                                                      |
| `platformUserIds` | `java.util.List<String>` | Condicional | 1–100 IDs públicos exclusivos; necessário para os preenchimentos e pedidos condicionais. Omitir consultas suportadas para o âmbito do player direto; \[] é inválido. |
| `symbol`          | `String`                 | Não         | Filtro opcional de pares de negociação.                                                                                                                              |
| `orderId`         | `String`                 | Não         | ID de encomenda normal; não é um número de ordem de transferência de parceiros.                                                                                      |
| `conditionId`     | `String`                 | Não         | ID do pedido condicional; não misture com orderId.                                                                                                                   |
| `clientOrderId`   | `String`                 | Não         | Referência de ordem do cliente de negociação, não agentOrderNo.                                                                                                      |
| `side`            | `String`                 | Não         | Filtro BUY / SELL.                                                                                                                                                   |
| `status`          | `String`                 | Não         | Estado específico do recurso; ver a referência de estado.                                                                                                            |
| `startTime`       | `Long`                   | Não         | Milissegundos Unix inclusivos; utilize uma janela de histórico fixa UTC.                                                                                             |
| `endTime`         | `Long`                   | Não         | Milissegundos Unix exclusivos.                                                                                                                                       |
| `limit`           | `Integer`                | Não         | Padrão 500; 1–1000.                                                                                                                                                  |
| `cursor`          | `String`                 | Não         | Utilize o nextCursor devolvido com filtros inalterados; parar quando hasMore for falso.                                                                              |

O exemplo lê uma página. Para campos obrigatórios, âmbito do leitor, semântica de filtro, limite, cursor e novas tentativas limitadas, siga [Visão geral da consulta](/pt-PT/sdk/agent-sdk/java/perpetual-queries). Mantenha todos os filtros inalterados durante a paginação; não interprete um erro como um resultado vazio.

## Encomendas normais: atuais e históricas

Current: `orders/current` + `orderCategory=NORMAL`; Histórico: `orders/history` + `orderCategory=NORMAL`.

| Campo `data`        | tipo    | Significado e âmbito de aplicação                                                                                                                       |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `symbol`            | string  | Par de negociação, como BTCUSDT                                                                                                                         |
| `orderId`           | string  | ID de encomenda comum da plataforma                                                                                                                     |
| `orderCategory`     | string  | Corrigido NORMAL                                                                                                                                        |
| `clientOrderId`     | string  | Número de encomenda do cliente fornecido pela fonte do pedido de transação; não é o mesmo campo que a transferência de fundos comerciais agentOrderNo   |
| `orderType`         | string  | Tipo de delegado, como LIMIT, MARKET; prevalecerá o valor real da enumeração                                                                            |
| `side`              | string  | Direção de compra e venda BUY / SELL                                                                                                                    |
| `status`            | string  | Estado normal do pedido, consulte a visão geral da consulta                                                                                             |
| `timeInForce`       | string  | Período de validade/estratégia de execução do negócio, como por exemplo GTC, IOC, FOK; interpretado de acordo com valores reais                         |
| `price`             | string  | Preço confiado; pode ser omitido quando não é fornecido qualquer preço, e o preço de transação de mercado não será complementado por si mesmo.          |
| `quantity`          | string  | Quantidade original do pedido                                                                                                                           |
| `filledQuantity`    | string  | Quantidade de transação                                                                                                                                 |
| `remainingQuantity` | string  | Quantidade não transacionada; a consulta atual leva quantidade - filledQuantity, e a consulta histórica leva o valor do registo histórico               |
| `avgFilledPrice`    | string  | O preço médio de transação da peça concluída; pode não haver valor quando não estiver concluído                                                         |
| `reduceOnly`        | boolean | Se deve apenas reduzir posições                                                                                                                         |
| `closeOnly`         | boolean | Se é utilizado apenas para fechar posições                                                                                                              |
| `makerOnly`         | boolean | Se deve ser executado apenas como Maker                                                                                                                 |
| `leverage`          | integer | Aproveite vários; **A ordem ordinária histórica** tem uma origem e a ordem ordinária atual não cria esse valor                                          |
| `marginMode`        | string  | Modo margem; **Ordem ordinária histórica** devolve atualmente uma string de enumeração numérica, como "1", "2"; a ordem ordinária atual não é fornecida |
| `createdAt`         | integer | Tempo de criação do pedido, milissegundos; utilize este campo para filtrar o tempo histórico do pedido                                                  |
| `updatedAt`         | integer | Tempo de atualização do registo delegado, milissegundos                                                                                                 |

O histórico de encomendas inclui encomendas normais encerradas. Cada registo não pode ser considerado totalmente concluído apenas com base no nome da interface. A página do pedido atual é uma consulta de estado atual, não um fluxo de eventos do pedido.

## Pedidos condicionais: atuais e históricos

Current: `orders/current` + `orderCategory=CONDITIONAL`; Histórico: `orders/history` + `orderCategory=CONDITIONAL`. Ambos requerem platformUserIds explícito.

| Campo `data`       | tipo    | significado                                                                                                                       |
| ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `symbol`           | string  | par de negociação                                                                                                                 |
| `conditionId`      | string  | ID de pedidos condicionais, independente do normal orderId                                                                        |
| `orderCategory`    | string  | Corrigido CONDITIONAL                                                                                                             |
| `generatedOrderId` | string  | ID do pedido comum gerado após o acionamento; pode ser omitido se não for gerado                                                  |
| `clientOrderId`    | string  | O número do pedido do cliente de pedidos condicionais, apresentado quando existe                                                  |
| `side`             | string  | BUY / SELL                                                                                                                        |
| `orderType`        | string  | Tipo de pedido pós-acionamento, interpretado de acordo com o valor real                                                           |
| `triggerType`      | string  | Tipo de regra de disparo, explicado pela enumeração de origem real                                                                |
| `workingType`      | string  | Tipo de trabalho/fonte de preço que desencadeia o preço, interpretado como enumeração real                                        |
| `timeInForce`      | string  | Prazo de validade/estratégia de execução da ordem após acionamento                                                                |
| `price`            | string  | O preço do pedido após o acionamento, gerado quando a fonte tem um valor                                                          |
| `quantity`         | string  | Quantidade condicional do pedido                                                                                                  |
| `triggerPrice`     | string  | preço de gatilho                                                                                                                  |
| `reduceOnly`       | boolean | Se deve apenas reduzir posições                                                                                                   |
| `closePosition`    | boolean | Se deve usar a semântica completa de fecho de posição, não pode ser confundido com closeOnly como o mesmo campo                   |
| `leverage`         | integer | Aproveite múltiplos, saída quando diferente de zero                                                                               |
| `marginMode`       | string  | Esta classe retorna CROSS / ISOLATED, que é uma string numérica diferente das ordens/posições históricas comuns                   |
| `status`           | string  | Estado de disparo único condicional, consulte a visão geral da consulta                                                           |
| `triggerStatus`    | string  | A implementação atual utiliza o mesmo valor de estado condicional que o estado                                                    |
| `createdAt`        | integer | Tempo de criação de pedido condicional, milissegundos; as condições históricas são filtradas por este tempo                       |
| `updatedAt`        | integer | Tempo de atualização, saída quando existe um valor, milissegundos                                                                 |
| `deletedAt`        | integer | Apagar tempo de marcação, saída quando existe um valor, milissegundos; não é um campo unificado de hora de transação/cancelamento |

Os pedidos condicionais não disponibilizam filledQuantity, remainingQuantity, avgFilledPrice para pedidos normais. Se necessitar do estado da transação de encomendas comuns após o disparo, consulte encomendas/transações comuns através de generatedOrderId e não infira o volume da transação a partir do estado da encomenda condicional.

## Exemplo de envelope de resposta

Esta é uma página em branco ilustrativa, não uma amostra de uma negociação concluída. As tabelas de campos específicos de recursos acima descrevem `items[].data` preenchido.

```json
{"code":0,"message":"success","data":{"items":[],"nextCursor":"","hasMore":false}}
```

## Fonte e guias relacionados

* [Fonte oficial v0.3.0](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Visão geral da consulta e paginação](/pt-PT/sdk/agent-sdk/java/perpetual-queries)
* [Carteira de financiamento](/pt-PT/sdk/agent-sdk/java/funding-wallet)
* [Guia de atualização](/pt-PT/sdk/agent-sdk/java/upgrade)