Zum Inhalt

API-Referenz

Allgemeine Konzepte

Volumen, Preise, Ordertypen und Gültigkeitsdauer

Volumen

Das Volumen wird in Cents (Einheiten von 0,0000001 Lots) angegeben.

Lots Volumen (Cents)
0,01 100.000
0,1 1.000.000
1,0 10.000.000

Preise

Preiswerte werden in Pipetten angegeben. Zur Umrechnung: Anzeigepreis = Pipettenwert / 10^pipDigits

Für EURUSD (5 Stellen) entspricht ein Pipettenwert von 112345 = 1,12345.

Ordertypen

Typ Beschreibung Erforderliche Felder
MARKET Sofortige Ausführung zum aktuellen Preis symbolId, tradeSide, volume
LIMIT Ausführung zum Limitpreis oder besser + limitPrice
STOP Auslösung, wenn der Markt den Stop-Preis erreicht + stopPrice
MARKET_RANGE Ausführung innerhalb einer Preisspanne + baseSlippagePrice
STOP_LIMIT Limit-Order, die beim Stop-Preis ausgelöst wird + stopPrice, limitPrice

Gültigkeitsdauer

Richtlinie Beschreibung
GOOD_TILL_CANCEL Order bleibt aktiv, bis sie ausgeführt oder storniert wird
GOOD_TILL_DATE Order läuft zum angegebenen expirationTimestamp ab
IMMEDIATE_OR_CANCEL Ausführung des verfügbaren Volumens, Rest wird storniert

Kontoinformationen

GET /v1/balance Get account balance

Gibt Kontosaldo, Eigenkapital und freie Margin zurück.

Parameter

Keine Parameter.

Antworten

200 Erfolgreiche Antwort

Response body
{
  "balance": 10000.00,
  "equity": 10250.75,
  "freeMargin": 9800.50,
  "balanceVersion": 42,
  "moneyDigits": 2,
  "depositAssetId": 1
}
Feld Typ Beschreibung
balance double Kontosaldo in Einzahlungswährung
equity double Saldo + schwebende GuV
freeMargin double Für neue Transaktionen verfügbare Margin
balanceVersion int64 Saldoversionszähler
moneyDigits int32 Dezimalstellen für Geldwerte
depositAssetId int64 Einzahlungswährungs-Asset-ID
GET /v1/symbols Verfügbare Symbole abrufen

Gibt alle für den Handel auf dem Konto verfügbaren Symbole zurück.

Parameter

Keine Parameter.

Antworten

200 Array von Symbol-Objekten

Response body
[
  {
    "symbolId": 1,
    "symbolName": "EURUSD",
    "enabled": true,
    "baseAssetId": 2,
    "quoteAssetId": 1,
    "description": "Euro vs US Dollar"
  }
]

Symbol

Feld Typ Beschreibung
symbolId int64 Symbol-ID (wird in anderen API-Aufrufen verwendet)
symbolName string Symbolname (z. B. „EURUSD")
enabled boolean Ob das Symbol handelbar ist
baseAssetId int64 Basis-Asset-ID
quoteAssetId int64 Notierungs-Asset-ID
description string Für Menschen lesbare Beschreibung
GET /v1/assets Verfügbare Assets abrufen

Gibt verfügbare Assets (Währungen) zurück.

Parameter

Keine Parameter.

Antworten

200 Array von Asset-Objekten

Response body
[
  {
    "assetId": 1,
    "name": "USD",
    "displayName": "US Dollar"
  }
]

Asset

Feld Typ Beschreibung
assetId int64 Asset-ID
name string Asset-Code (z. B. „USD")
displayName string Anzeigename

Marktdaten

GET /v1/prices Spot-Kurse abrufen

Gibt aktuelle Geld-/Briefkurse für die angegebenen Symbole zurück. Dies ist eine Momentaufnahme – die API unterstützt kein Streaming.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
symbolId query int64[] Durch Komma getrennte Symbol-IDs
Antworten

200 Array von SpotPrice-Objekten

Response body
[
  {
    "symbolId": 1,
    "bid": 112340,
    "ask": 112355,
    "high": 112890,
    "low": 111950,
    "sessionClose": 112100,
    "timestamp": 1700000000000
  }
]

SpotPrice

Feld Typ Beschreibung
symbolId int64 Symbol-ID
bid int64 Bester Geldkurs (Pipetten)
ask int64 Bester Briefkurs (Pipetten)
high int64 Sitzungshoch (Pipetten)
low int64 Sitzungstief (Pipetten)
sessionClose int64 Schlusskurs der vorherigen Sitzung (Pipetten)
timestamp int64 Kurszeitstempel (Epoch ms)
GET /v1/trendbars Historische OHLCV-Daten abrufen

Gibt historische Candlestick-Daten (OHLCV) für ein Symbol zurück.

Parameter
Name Befindet sich in Typ Erforderlich Standard Beschreibung
symbolId query int64 Symbol-ID
period query string Balkenzeitraum
fromTimestamp query string Startzeit (ISO-8601)
toTimestamp query string Endzeit (ISO-8601)
count query int32 100 Maximale Anzahl zurückzugebender Balken
Verfügbare Zeiträume

M_1 M_2 M_3 M_4 M_5 M_10 M_15 M_30 H_1 H_2 H_3 H_4 H_6 H_8 H_12 D_1 W_1 MN_1

Antworten

200 Array von Trendbar-Objekten

Response body
[
  {
    "timestamp": 1700000000000,
    "open": 112340.0,
    "high": 112890.0,
    "low": 111950.0,
    "close": 112500.0,
    "volume": 4521
  }
]

Trendbar

Feld Typ Beschreibung
timestamp int64 Eröffnungszeit des Balkens (Epoch ms)
open double Eröffnungskurs (Pipetten)
high double Höchstkurs (Pipetten)
low double Tiefstkurs (Pipetten)
close double Schlusskurs (Pipetten)
volume int64 Tick-Volumen

Orders

POST /v1/orders Neue Order platzieren

Platziert eine neue Handelsorder. Gibt eine ExecutionResponse zurück.

Parameter

Keine Pfad- oder Query-Parameter.

Anforderungstext application/json
Feld Typ Erforderlich Beschreibung
symbolId int64 Zu handelndes Symbol
orderType string MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT
tradeSide string BUY oder SELL
volume int64 Volumen in Cents
limitPrice double Limitkurs – erforderlich für LIMIT, STOP_LIMIT
stopPrice double Stop-Trigger-Kurs – erforderlich für STOP, STOP_LIMIT
stopLoss double Stop-Loss-Kurs
takeProfit double Take-Profit-Kurs
comment string Freitextkommentar (max. 256 Zeichen)
label string Bot-Label (max. 100 Zeichen)
timeInForce string GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL
baseSlippagePrice double Basiskurs für Slippage – erforderlich für MARKET_RANGE
slippageInPoints int32 Maximale Slippage in Punkten
expirationTimestamp int64 Ablaufzeitstempel (Epoch ms) – für GOOD_TILL_DATE
Example request body
{
  "symbolId": 1,
  "orderType": "MARKET",
  "tradeSide": "BUY",
  "volume": 10000000,
  "stopLoss": 112000,
  "takeProfit": 113000
}
Antworten

200 ExecutionResponse – Order akzeptiert oder ausgeführt

400 INVALID_REQUEST oder TRADING_BAD_VOLUME

422 NOT_ENOUGH_MONEY

409 MARKET_CLOSED

Example success response
{
  "orderId": 12345,
  "positionId": 67890,
  "executionType": "ORDER_FILLED",
  "order": { "..." : "..." },
  "position": { "..." : "..." },
  "deal": { "..." : "..." }
}
GET /v1/orders Ausstehende Orders abrufen

Gibt alle ausstehenden (nicht ausgeführten) Orders zurück.

Parameter

Keine Parameter.

Antworten

200 Array von ausstehenden Order-Objekten

PUT /v1/orders/{orderId} Ausstehende Order ändern

Ändert eine bestehende ausstehende Order. Gibt eine ExecutionResponse zurück.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
orderId path int64 Die zu ändernde Order
Anforderungstext application/json

Beliebige Teilmenge der folgenden Felder.

Feld Typ Beschreibung
volume int64 Neues Volumen in Cents
limitPrice double Neuer Limitkurs
stopPrice double Neuer Stop-Kurs
stopLoss double Neuer Stop-Loss-Kurs
takeProfit double Neuer Take-Profit-Kurs
expirationTimestamp int64 Neuer Ablaufzeitstempel (Epoch ms)
Antworten

200 ExecutionResponse mit ORDER_REPLACED

404 Order nicht gefunden

DELETE /v1/orders/{orderId} Ausstehende Order stornieren

Storniert eine ausstehende Order. Gibt eine ExecutionResponse zurück.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
orderId path int64 Die zu stornierende Order
Antworten

200 ExecutionResponse mit ORDER_CANCELLED

404 Order nicht gefunden

GET /v1/orders/history Order-Verlauf abrufen

Gibt historische Orders innerhalb eines Zeitraums zurück.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
fromTimestamp query string Startzeit (ISO-8601)
toTimestamp query string Endzeit (ISO-8601)
Antworten

200 OrderListResponse

Feld Typ Beschreibung
orders Order[] Array historischer Orders
hasMore boolean Ob zusätzliche Seiten verfügbar sind

Positionen

GET /v1/positions Offene Positionen abrufen

Gibt alle offenen Positionen und ausstehenden Orders zurück.

Parameter

Keine Parameter.

Antworten

200 Array von Position-Objekten

Response body
[
  {
    "positionId": 67890,
    "symbolId": 1,
    "tradeSide": "BUY",
    "volume": 10000000,
    "entryPrice": 112345.0,
    "stopLoss": 112000.0,
    "takeProfit": 113000.0,
    "unrealizedPnl": 155.25,
    "commission": -7.00,
    "swap": -1.20
  }
]

Position

Feld Typ Beschreibung
positionId int64 Positions-ID
symbolId int64 Symbol-ID
tradeSide string BUY oder SELL
volume int64 Volumen in Cents
entryPrice double VWAP-Einstiegspreis
stopLoss double Stop-Loss-Kurs
takeProfit double Take-Profit-Kurs
unrealizedPnl double Schwebender Gewinn/Verlust
commission double Berechnete Provision
swap double Swap-Betrag
GET /v1/positions/{positionId} Positionsdetails abrufen

Gibt eine Position mit den zugehörigen Orders und Deals zurück.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
positionId path int64 Die Positions-ID
Antworten

200 PositionDetailResponse

Feld Typ Beschreibung
position Position Position-Objekt
orders Order[] Zugehörige Orders
deals Deal[] Zugehörige Deals
PUT /v1/positions/{positionId} SL/TP der Position ändern

Aktualisiert den Stop-Loss und/oder Take-Profit für eine offene Position. Gibt eine ExecutionResponse zurück.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
positionId path int64 Die Positions-ID
Anforderungstext application/json
Feld Typ Beschreibung
stopLoss double Neuer Stop-Loss-Preis (null zum Entfernen)
takeProfit double Neuer Take-Profit-Preis (null zum Entfernen)
trailingStopLoss boolean Trailing-Stop-Loss aktivieren
Example request body
{
  "stopLoss": 111500,
  "takeProfit": 113500,
  "trailingStopLoss": false
}
Antworten
POST /v1/positions/{positionId}/close Position schließen

Schließt eine offene Position vollständig oder teilweise. Verwenden Sie einen Wert, der kleiner als das vollständige Volumen der Position ist, für eine teilweise Schließung. Gibt eine ExecutionResponse zurück.

Parameter
Name Befindet sich in Typ Erforderlich Beschreibung
positionId path int64 Die Positions-ID
Anforderungstext application/json
Feld Typ Erforderlich Beschreibung
volume int64 Zu schließendes Volumen in Cent
Example – full close (1 lot)
{
  "volume": 10000000
}
Antworten

422 NOT_ENOUGH_MONEY – unzureichende Margin für teilweise Schließung


Transaktionen

GET /v1/deals Deal-Verlauf abrufen

Gibt ausgeführte Deals innerhalb eines Zeitraums zurück.

Parameter
Name Befindet sich in Typ Erforderlich Standard Beschreibung
fromTimestamp query string Startzeit (ISO-8601)
toTimestamp query string Endzeit (ISO-8601)
maxRows query int32 50 Maximale Anzahl zurückzugebender Deals
Antworten

200 Array von Deal-Objekten

Response body
[
  {
    "dealId": 11111,
    "orderId": 12345,
    "positionId": 67890,
    "symbolId": 1,
    "tradeSide": "BUY",
    "volume": 10000000,
    "filledVolume": 10000000,
    "executionPrice": 112345.0,
    "executionTimestamp": 1700000000000,
    "dealStatus": "FILLED",
    "commission": -7.00
  }
]

Deal

Feld Typ Beschreibung
dealId int64 Transaktions-ID
orderId int64 Order, die diesen Deal ausgelöst hat
positionId int64 Positions-ID
symbolId int64 Symbol-ID
tradeSide string BUY oder SELL
volume int64 Angefordertes Volumen in Cent
filledVolume int64 Abgeschlossenes Volumen in Cent
executionPrice double Ausführungspreis
executionTimestamp int64 Ausführungszeit (Epoch ms)
dealStatus string Status – siehe Werte unten
commission double Berechnete Provision

dealStatus-Werte

Wert Bedeutung
FILLED Order vollständig abgeschlossen
PARTIALLY_FILLED Order teilweise abgeschlossen
REJECTED Vom Trading-Server abgelehnt
INTERNALLY_REJECTED Intern abgelehnt, bevor der Server erreicht wurde
ERROR Während der Ausführung ist ein Fehler aufgetreten
MISSED Order verpasst (z. B. Lücke im Markt)

Schemas { #execution-response-schema }

ExecutionResponse

Alle Vorgänge zur Orderplatzierung, -änderung und -stornierung geben dieses Objekt zurück.

Feld Typ Beschreibung
orderId int64 Betroffene Order-ID
positionId int64 Betroffene Positions-ID
executionType string Ergebnistyp – siehe Werte unten
order Order Orderdetails (falls zutreffend)
position Position Positionsdetails (falls zutreffend)
deal Deal Deal-Details (falls zutreffend)

executionType-Werte

Wert Bedeutung
ORDER_ACCEPTED Ausstehende Order akzeptiert
ORDER_FILLED Order vollständig abgeschlossen
ORDER_REPLACED Order geändert
ORDER_CANCELLED Order storniert
ORDER_EXPIRED Order abgelaufen
ORDER_REJECTED Order abgelehnt
ORDER_CANCEL_REJECTED Stornierungsanfrage abgelehnt
ORDER_PARTIAL_FILL Order teilweise abgeschlossen
SWAP Positions-Swap angewendet
DEPOSIT Kontoeinzahlung
WITHDRAW Kontoauszahlung
BONUS_DEPOSIT_WITHDRAW Bonus-Einzahlung oder -Auszahlung

Ratenbegrenzungen

Das Gateway erzwingt Ratenbegrenzungen auf mehreren Ebenen.

Niveau Beschreibung
Pro IP Begrenzt die Gesamtanfragen von einer einzelnen IP-Adresse
Pro Benutzer Begrenzt die Gesamtanfragen über alle Konten für ein einzelnes Token
Pro Konto Begrenzt Anfragen, die auf ein einzelnes Handelskonto abzielen

Ratenbegrenzung überschritten

Wenn eine Ratenbegrenzung überschritten wird, gibt die API 429 Too Many Requests mit einem Retry-After-Header zurück.


Fehlerbehandlung

Wenn eine Anfrage fehlschlägt, gibt die API eine JSON-Fehlerantwort zurück.

Error response format
{
  "error": {
    "code": "NOT_ENOUGH_MONEY",
    "message": "Insufficient free margin for this order",
    "httpStatus": 422,
    "retryAfter": null
  }
}

Fehlercodes

Code HTTP Beschreibung
INVALID_REQUEST 400 Ungültige oder fehlende Anfrageparameter
UNAUTHORIZED 401 Ungültiges, abgelaufenes oder fehlendes Token
TRADING_BAD_VOLUME 400 Volumen ist ungültig (unter Minimum oder überschreitet Position)
NOT_ENOUGH_MONEY 422 Unzureichende freie Margin
SYMBOL_NOT_FOUND 404 Symbol-ID existiert nicht
MARKET_CLOSED 409 Markt für das Symbol ist derzeit geschlossen
MAINTENANCE 503 Trading-Server befindet sich im Wartungsmodus
TIMEOUT 504 Trading-Server hat nicht rechtzeitig geantwortet
GATEWAY_RATE_LIMIT 429 Ratenbegrenzung überschritten – siehe Retry-After-Header

Behandlung von Ratenbegrenzungen

Wenn Sie eine 429-Antwort erhalten, geben der Retry-After-Header und das retryAfter-Feld an, wie viele Sekunden Sie warten müssen, bevor Sie die nächste Anfrage senden.