> 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.

# Unbefristete Positionen

Dieser Leitfaden richtet sich an **Agent Java SDK `v0.3.0`**, Java 8+ und den getaggten öffentlichen Auftrag. Beispiele werden nach der Initialisierung von `client` in einem Partner-Backend ausgeführt [Schnellstart](/de/sdk/agent-sdk/java/quick-start).

## Beispielvoraussetzungen

Die Java-Snippets teilen diese Importe. Initialisieren Sie `client` mit Quick Start und rufen Sie `platformUserId` aus der gespeicherten Bindung ab. Beispiel-Benutzer-/Bestell-IDs müssen durch Ihre eigenen persistenten Werte ersetzt werden.

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

## `listCurrentPerpetualPositions`

Anforderungsmodell: `CurrentPerpetualPositionsRequest`.

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

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

### Anforderungsfelder

| Feld              | Java Typ                 | Erforderlich | Bedeutung                                                                                                                                                                       |
| ----------------- | ------------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `platformUserIds` | `java.util.List<String>` | Bedingt      | 1–100 eindeutige öffentliche IDs; erforderlich für Ausführungen und bedingte Bestellungen. Bei unterstützten Abfragen für den Direktspielerbereich weglassen; \[] ist ungültig. |
| `symbol`          | `String`                 | NEIN         | Optionaler Handelspaarfilter.                                                                                                                                                   |
| `limit`           | `Integer`                | NEIN         | Standard 500; 1–1000.                                                                                                                                                           |
| `cursor`          | `String`                 | NEIN         | Verwenden Sie den zurückgegebenen nextCursor mit unveränderten Filtern. stoppen, wenn hasMore falsch ist.                                                                       |

Das Beispiel liest eine Seite. Informationen zu erforderlichen Feldern, Player-Bereich, Filtersemantik, Limit, Cursor und begrenzten Wiederholungsversuchen finden Sie hier [Abfrageübersicht](/de/sdk/agent-sdk/java/perpetual-queries). Lassen Sie beim Blättern alle Filter unverändert; Interpretieren Sie einen Fehler nicht als leeres Ergebnis.

## `listPerpetualPositionHistory`

Anforderungsmodell: `PerpetualPositionHistoryRequest`.

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

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

### Anforderungsfelder

| Feld              | Java Typ                 | Erforderlich | Bedeutung                                                                                                                                                                       |
| ----------------- | ------------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `platformUserIds` | `java.util.List<String>` | Bedingt      | 1–100 eindeutige öffentliche IDs; erforderlich für Ausführungen und bedingte Bestellungen. Bei unterstützten Abfragen für den Direktspielerbereich weglassen; \[] ist ungültig. |
| `symbol`          | `String`                 | NEIN         | Optionaler Handelspaarfilter.                                                                                                                                                   |
| `positionSide`    | `String`                 | NEIN         | Filtern Sie mithilfe der quellpositionsseitigen Enumeration.                                                                                                                    |
| `startTime`       | `Long`                   | NEIN         | Inklusive Unix-Millisekunden; Verwenden Sie ein festes UTC-Verlaufsfenster.                                                                                                     |
| `endTime`         | `Long`                   | NEIN         | Exklusive Unix-Millisekunden.                                                                                                                                                   |
| `limit`           | `Integer`                | NEIN         | Standard 500; 1–1000.                                                                                                                                                           |
| `cursor`          | `String`                 | NEIN         | Verwenden Sie den zurückgegebenen nextCursor mit unveränderten Filtern. stoppen, wenn hasMore falsch ist.                                                                       |

Das Beispiel liest eine Seite. Informationen zu erforderlichen Feldern, Player-Bereich, Filtersemantik, Limit, Cursor und begrenzten Wiederholungsversuchen finden Sie hier [Abfrageübersicht](/de/sdk/agent-sdk/java/perpetual-queries). Lassen Sie beim Blättern alle Filter unverändert; Interpretieren Sie einen Fehler nicht als leeres Ergebnis.

## Positionen: aktuell und historisch

| `data` Feld       | Typ     | Aktuelle Position | Historische Positionen | Bedeutung                                                                                                                                             |
| ----------------- | ------- | ----------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `positionId`      | string  | liefern           | liefern                | Positions-ID, entsprechend entityId                                                                                                                   |
| `symbol`          | string  | liefern           | liefern                | Handelspaar                                                                                                                                           |
| `positionSide`    | string  | liefern           | liefern                | LONG / SHORT / BOTH und andere Positionsrichtungen                                                                                                    |
| `status`          | string  | liefern           | liefern                | String mit dem numerischen Status der Position, siehe Abfrageübersicht                                                                                |
| `leverage`        | integer | liefern           | liefern                | Nutzen Sie mehrere                                                                                                                                    |
| `marginMode`      | string  | liefern           | liefern                | Numerische Aufzählungszeichenfolge „1“ für vollständige Position, „2“ für isolierte Position                                                          |
| `quantity`        | string  | liefern           | Nicht verfügbar        | Aktuelle Positionsmenge                                                                                                                               |
| `entryPrice`      | string  | liefern           | liefern                | Durchschnittlicher Eröffnungspreis der gespeicherten Positionen                                                                                       |
| `margin`          | string  | liefern           | Nicht verfügbar        | Der Margin-Betrag der aktuellen Position, nicht der gesamte Vertrags-Wallet-Saldo des Benutzers                                                       |
| `maxQuantity`     | string  | Nicht verfügbar   | liefern                | Die maximale Anzahl der in dieser historischen Position aufgezeichneten Positionen                                                                    |
| `closeQuantity`   | string  | Nicht verfügbar   | liefern                | Die kumulierte Anzahl der während des historischen Positionslebenszyklus geschlossenen Positionen                                                     |
| `closePrice`      | string  | Nicht verfügbar   | liefern                | Gespeicherter durchschnittlicher Schlusskurs                                                                                                          |
| `pnl`             | string  | Nicht verfügbar   | liefern                | Historischer Positionsgewinn und -verlust; Kombinieren Sie es nicht mit der Transaktion realizedPnl, um es einfach zu wiederholen und zu akkumulieren |
| `roe`             | string  | Nicht verfügbar   | liefern                | Der proportionale Wert der historischen Positionsrendite, nicht multipliziert mit 100; Beispielsweise steht `"0.043"` für `4.3%`, `"-0.05"` für `-5%` |
| `fundingFeeAccum` | string  | liefern           | liefern                | Kumulierte Finanzierungsgebühr unter Beibehaltung des Quellensymbols und der Genauigkeit                                                              |
| `openedAt`        | integer | liefern           | liefern                | Positionsöffnungszeit, Millisekunden                                                                                                                  |
| `updatedAt`       | integer | liefern           | Nicht verfügbar        | Aktualisierungszeit der aktuellen Position, Millisekunden                                                                                             |
| `closedAt`        | integer | Nicht verfügbar   | liefern                | Schließzeit, Millisekunden; Verwenden Sie dieses Feld, um die historische Positionszeit zu filtern                                                    |

Das Berechnungskaliber des Verlaufs `roe` ist `pnl / (entryPrice × maxQuantity / leverage)`, und die Schnittstelle gibt den gespeicherten Anteilswert direkt zurück. Verwenden Sie bei der Anzeige des Prozentsatzes die Dezimaloperation, multiplizieren Sie mit 100 und addieren Sie dann `%`; Der Nenner verwendet die nominale Marge des historischen Positionsdatensatzes, nicht den Kontostand des Kontos. Wenn der Eröffnungspreis oder die maximale Positionsmenge 0 beträgt, der Hebel ungültig ist usw. und nicht berechnet werden kann, wird die Quelle als 0 gespeichert. Daher kann nicht allein auf der Grundlage von `roe=0` gefolgert werden, dass der Gewinn oder Verlust 0 ist.

Für die aktuelle Position gibt es keinen Echtzeit-Markierungspreis, keinen Echtzeit-Floating-Gewinn und -Verlust, keinen Echtzeit-ROE oder keinen Echtzeit-Liquidationspreis. Es spiegelt den gespeicherten Positionsstatus wider und kann die Aktualisierungszeit- und Margin-Felder nicht verwenden, um die aktuellen Echtzeit-Risikokontrollergebnisse zu beanspruchen.

## Beispiel eines Antwortumschlags

Dies ist eine leere Seite zur Veranschaulichung, kein Beispiel eines abgeschlossenen Handels. Die obigen ressourcenspezifischen Feldtabellen beschreiben ausgefüllte `items[].data`.

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

## Quelle und zugehörige Leitfäden

* [Offizielle Quelle v0.3.0](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Abfrageübersicht und Paginierung](/de/sdk/agent-sdk/java/perpetual-queries)
* [Funding-Wallet](/de/sdk/agent-sdk/java/funding-wallet)
* [Upgrade-Anleitung](/de/sdk/agent-sdk/java/upgrade)