Dokumentacja API¶
Wspólne koncepcje ¶
Wolumen, ceny, typy zleceń i czas obowiązywania
Wolumen¶
Wolumen jest określany w centach (jednostkach 0,0000001 lota).
| Loty | Wolumen (centy) |
|---|---|
| 0,01 | 100,000 |
| 0,1 | 1,000,000 |
| 1,0 | 10,000,000 |
Ceny¶
Wartości cen są w pipettach. Aby przeliczyć: cena_wyświetlana = wartość_pipetty / 10^pipDigits
Dla EURUSD (5 cyfr), wartość pipetty 112345 = 1,12345.
Typy zleceń¶
| Typ | Opis | Wymagane pola |
|---|---|---|
MARKET | Wykonaj natychmiast po bieżącej cenie | symbolId, tradeSide, volume |
LIMIT | Wykonaj po cenie limit lub lepszej | + limitPrice |
STOP | Uruchom, gdy rynek osiągnie cenę stop | + stopPrice |
MARKET_RANGE | Wykonaj w zakresie cenowym | + baseSlippagePrice |
STOP_LIMIT | Zlecenie limit uruchamiane po cenie stop | + stopPrice, limitPrice |
Czas obowiązywania¶
| Zasada | Opis |
|---|---|
GOOD_TILL_CANCEL | Zlecenie pozostaje aktywne do momentu realizacji lub anulowania |
GOOD_TILL_DATE | Zlecenie wygasa w określonym expirationTimestamp |
IMMEDIATE_OR_CANCEL | Zrealizuj to, co jest dostępne natychmiast, anuluj resztę |
Informacje o koncie ¶
GET /v1/balance Get account balance
Zwraca saldo konta, kapitał i dostępny depozyt zabezpieczający.
Brak parametrów.
200 Pomyślna odpowiedź
{
"balance": 10000.00,
"equity": 10250.75,
"freeMargin": 9800.50,
"balanceVersion": 42,
"moneyDigits": 2,
"depositAssetId": 1
}
| Pole | Typ | Opis |
|---|---|---|
balance | double | Saldo konta w walucie depozytu |
equity | double | Saldo + niezrealizowany zysk/strata |
freeMargin | double | Depozyt zabezpieczający dostępny dla nowych transakcji |
balanceVersion | int64 | Licznik wersji salda |
moneyDigits | int32 | Miejsca dziesiętne dla wartości pieniężnych |
depositAssetId | int64 | ID aktywa waluty depozytu |
GET /v1/symbols Pobierz dostępne symbole
Zwraca wszystkie symbole dostępne do handlu na koncie.
Brak parametrów.
200 Tablica obiektów Symbol
[
{
"symbolId": 1,
"symbolName": "EURUSD",
"enabled": true,
"baseAssetId": 2,
"quoteAssetId": 1,
"description": "Euro vs US Dollar"
}
]
Symbol
| Pole | Typ | Opis |
|---|---|---|
symbolId | int64 | ID symbolu (używane w innych wywołaniach API) |
symbolName | string | Nazwa symbolu (np. "EURUSD") |
enabled | boolean | Czy symbol jest zbywalny |
baseAssetId | int64 | ID aktywa bazowego |
quoteAssetId | int64 | ID aktywa kwotowanego |
description | string | Opis czytelny dla człowieka |
GET /v1/assets Pobierz dostępne aktywa
Zwraca dostępne aktywa (waluty).
Brak parametrów.
200 Tablica obiektów Asset
[
{
"assetId": 1,
"name": "USD",
"displayName": "US Dollar"
}
]
Asset
| Pole | Typ | Opis |
|---|---|---|
assetId | int64 | ID aktywa |
name | string | Kod aktywa (np. "USD") |
displayName | string | Nazwa wyświetlana |
Dane rynkowe ¶
GET /v1/prices Pobierz ceny spot
Zwraca bieżące ceny bid/ask dla określonych symboli. To jest migawka – API nie obsługuje przesyłania strumieniowego.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
symbolId | query | int64[] | ID symboli oddzielone przecinkami |
200 Tablica obiektów SpotPrice
[
{
"symbolId": 1,
"bid": 112340,
"ask": 112355,
"high": 112890,
"low": 111950,
"sessionClose": 112100,
"timestamp": 1700000000000
}
]
SpotPrice
| Pole | Typ | Opis |
|---|---|---|
symbolId | int64 | ID symbolu |
bid | int64 | Najlepsza cena bid (pipetty) |
ask | int64 | Najlepsza cena ask (pipetty) |
high | int64 | Najwyższa wartość sesji (pipetty) |
low | int64 | Najniższa wartość sesji (pipetty) |
sessionClose | int64 | Zamknięcie poprzedniej sesji (pipetty) |
timestamp | int64 | Znacznik czasu kwotowania (epoch ms) |
GET /v1/trendbars Pobierz historyczne dane OHLCV
Zwraca historyczne dane świecowe (OHLCV) dla symbolu.
| Nazwa | Znajduje się w | Typ | Wymagane | Ust. domyślne | Opis |
|---|---|---|---|---|---|
symbolId | query | int64 | – | ID symbolu | |
period | query | string | – | Okres słupka | |
fromTimestamp | query | string | – | Czas rozpoczęcia (ISO-8601) | |
toTimestamp | query | string | – | Czas zakończenia (ISO-8601) | |
count | query | int32 | 100 | Maksymalna liczba słupków do zwrócenia |
Dostępne okresy
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
200 Tablica obiektów Trendbar
[
{
"timestamp": 1700000000000,
"open": 112340.0,
"high": 112890.0,
"low": 111950.0,
"close": 112500.0,
"volume": 4521
}
]
Trendbar
| Pole | Typ | Opis |
|---|---|---|
timestamp | int64 | Czas otwarcia słupka (epoch ms) |
open | double | Cena otwarcia (pipetki) |
high | double | Cena maksymalna (pipetki) |
low | double | Cena minimalna (pipetki) |
close | double | Cena zamknięcia (pipetki) |
volume | int64 | Wolumen tickowy |
Zlecenia ¶
POST /v1/orders Złóż nowe zlecenie
Składa nowe zlecenie handlowe. Zwraca ExecutionResponse.
Brak parametrów ścieżki lub zapytania.
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
symbolId | int64 | Symbol do handlu | |
orderType | string | MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT | |
tradeSide | string | BUY lub SELL | |
volume | int64 | Wolumen w centach | |
limitPrice | double | Cena limitu – wymagana dla LIMIT, STOP_LIMIT | |
stopPrice | double | Cena wyzwalacza stop – wymagana dla STOP, STOP_LIMIT | |
stopLoss | double | Cena stop loss | |
takeProfit | double | Cena take profit | |
comment | string | Komentarz w postaci tekstu (maks. 256 znaków) | |
label | string | Etykieta bota (maks. 100 znaków) | |
timeInForce | string | GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL | |
baseSlippagePrice | double | Cena bazowa dla poślizgu – wymagana dla MARKET_RANGE | |
slippageInPoints | int32 | Maks. poślizg w punktach | |
expirationTimestamp | int64 | Znacznik czasu wygaśnięcia (epoch ms) – dla GOOD_TILL_DATE |
{
"symbolId": 1,
"orderType": "MARKET",
"tradeSide": "BUY",
"volume": 10000000,
"stopLoss": 112000,
"takeProfit": 113000
}
200 ExecutionResponse – zlecenie zaakceptowane lub zrealizowane
400 INVALID_REQUEST lub TRADING_BAD_VOLUME
422 NOT_ENOUGH_MONEY
409 MARKET_CLOSED
{
"orderId": 12345,
"positionId": 67890,
"executionType": "ORDER_FILLED",
"order": { "..." : "..." },
"position": { "..." : "..." },
"deal": { "..." : "..." }
}
GET /v1/orders Pobierz zlecenia oczekujące
Zwraca wszystkie zlecenia oczekujące (niezrealizowane).
Brak parametrów.
200 Tablica obiektów oczekujących zleceń Order
PUT /v1/orders/{orderId} Zmień zlecenie oczekujące
Zmienia istniejące zlecenie oczekujące. Zwraca ExecutionResponse.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
orderId | path | int64 | Zlecenie do zmiany |
Dowolny podzbiór następujących pól.
| Pole | Typ | Opis |
|---|---|---|
volume | int64 | Nowy wolumen w centach |
limitPrice | double | Nowa cena limitu |
stopPrice | double | Nowa cena stop |
stopLoss | double | Nowa cena stop loss |
takeProfit | double | Nowa cena take profit |
expirationTimestamp | int64 | Nowy znacznik czasu wygaśnięcia (epoch ms) |
200 ExecutionResponse z ORDER_REPLACED
404 Nie znaleziono zlecenia
DELETE /v1/orders/{orderId} Anuluj zlecenie oczekujące
Anuluje zlecenie oczekujące. Zwraca ExecutionResponse.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
orderId | path | int64 | Zlecenie do anulowania |
200 ExecutionResponse z ORDER_CANCELLED
404 Nie znaleziono zlecenia
GET /v1/orders/history Pobierz historię zleceń
Zwraca historyczne zlecenia w określonym zakresie czasu.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
fromTimestamp | query | string | Czas rozpoczęcia (ISO-8601) | |
toTimestamp | query | string | Czas zakończenia (ISO-8601) |
200 OrderListResponse
| Pole | Typ | Opis |
|---|---|---|
orders | Order[] | Tablica historycznych zleceń |
hasMore | boolean | Czy dostępne są dodatkowe strony |
Pozycje ¶
GET /v1/positions Pobierz otwarte pozycje
Zwraca wszystkie otwarte pozycje i zlecenia oczekujące.
Brak parametrów.
200 Tablica obiektów Position
[
{
"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
}
]
Pozycja
| Pole | Typ | Opis |
|---|---|---|
positionId | int64 | ID pozycji |
symbolId | int64 | ID symbolu |
tradeSide | string | BUY lub SELL |
volume | int64 | Wolumen w centach |
entryPrice | double | Cena wejścia VWAP |
stopLoss | double | Cena stop loss |
takeProfit | double | Cena take profit |
unrealizedPnl | double | Zmienny zysk/strata |
commission | double | Pobrana prowizja |
swap | double | Kwota swap |
GET /v1/positions/{positionId} Pobierz szczegóły pozycji
Zwraca pozycję wraz z powiązanymi zleceniami i transakcjami.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
positionId | path | int64 | Identyfikator pozycji |
200 PositionDetailResponse
| Pole | Typ | Opis |
|---|---|---|
position | Position | Obiekt pozycji |
orders | Order[] | Powiązane zlecenia |
deals | Deal[] | Powiązane transakcje |
PUT /v1/positions/{positionId} Zmień SL/TP pozycji
Aktualizuje stop loss i/lub take profit dla otwartej pozycji. Zwraca ExecutionResponse.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
positionId | path | int64 | Identyfikator pozycji |
| Pole | Typ | Opis |
|---|---|---|
stopLoss | double | Nowa cena stop loss (null, aby usunąć) |
takeProfit | double | Nowa cena take profit (null, aby usunąć) |
trailingStopLoss | boolean | Włącz trailing stop loss |
{
"stopLoss": 111500,
"takeProfit": 113500,
"trailingStopLoss": false
}
POST /v1/positions/{positionId}/close Zamknij pozycję
Zamyka otwartą pozycję całkowicie lub częściowo. Użyj wartości mniejszej niż pełny wolumen pozycji, aby zamknąć częściowo. Zwraca ExecutionResponse.
| Nazwa | Znajduje się w | Typ | Wymagane | Opis |
|---|---|---|---|---|
positionId | path | int64 | Identyfikator pozycji |
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
volume | int64 | Wolumen do zamknięcia w centach |
{
"volume": 10000000
}
422 NOT_ENOUGH_MONEY – niewystarczający depozyt zabezpieczający do częściowego zamknięcia
Transakcje ¶
GET /v1/deals Pobierz historię transakcji
Zwraca zrealizowane transakcje w określonym przedziale czasu.
| Nazwa | Znajduje się w | Typ | Wymagane | Ust. domyślne | Opis |
|---|---|---|---|---|---|
fromTimestamp | query | string | – | Czas rozpoczęcia (ISO-8601) | |
toTimestamp | query | string | – | Czas zakończenia (ISO-8601) | |
maxRows | query | int32 | 50 | Maksymalna liczba transakcji do zwrócenia |
200 Tablica obiektów Deal
[
{
"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
| Pole | Typ | Opis |
|---|---|---|
dealId | int64 | ID transakcji |
orderId | int64 | Zlecenie, które wywołało tę transakcję |
positionId | int64 | ID pozycji |
symbolId | int64 | ID symbolu |
tradeSide | string | BUY lub SELL |
volume | int64 | Żądany wolumen w centach |
filledVolume | int64 | Zrealizowany wolumen w centach |
executionPrice | double | Cena realizacji |
executionTimestamp | int64 | Czas realizacji (epoch ms) |
dealStatus | string | Status – zobacz wartości poniżej |
commission | double | Pobrana prowizja |
Wartości dealStatus
| Wartość | Znaczenie |
|---|---|
FILLED | Zlecenie całkowicie zrealizowane |
PARTIALLY_FILLED | Zlecenie częściowo zrealizowane |
REJECTED | Odrzucone przez serwer transakcyjny |
INTERNALLY_REJECTED | Odrzucone wewnętrznie przed dotarciem do serwera |
ERROR | Wystąpił błąd podczas realizacji |
MISSED | Zlecenie pominięte (np. luka w rynku) |
Schemas { #execution-response-schema } ¶
ExecutionResponse ¶
Wszystkie operacje składania, zmiany i anulowania zleceń zwracają ten obiekt.
| Pole | Typ | Opis |
|---|---|---|
orderId | int64 | Identyfikator dotkniętego zlecenia |
positionId | int64 | Identyfikator dotkniętej pozycji |
executionType | string | Typ wyniku – zobacz wartości poniżej |
order | Order | Szczegóły zlecenia (jeśli dotyczy) |
position | Position | Szczegóły pozycji (jeśli dotyczy) |
deal | Deal | Szczegóły transakcji (jeśli dotyczy) |
Wartości executionType
| Wartość | Znaczenie |
|---|---|
ORDER_ACCEPTED | Zlecenie oczekujące zaakceptowane |
ORDER_FILLED | Zlecenie całkowicie zrealizowane |
ORDER_REPLACED | Zlecenie zmienione |
ORDER_CANCELLED | Zlecenie anulowane |
ORDER_EXPIRED | Zlecenie wygasło |
ORDER_REJECTED | Zlecenie odrzucone |
ORDER_CANCEL_REJECTED | Żądanie anulowania odrzucone |
ORDER_PARTIAL_FILL | Zlecenie częściowo zrealizowane |
SWAP | Zastosowano swap pozycji |
DEPOSIT | Wpłata na konto |
WITHDRAW | Wypłata z konta |
BONUS_DEPOSIT_WITHDRAW | Wpłata lub wypłata bonusu |
Limity częstotliwości ¶
Brama wymusza limity częstotliwości na wielu poziomach.
| Poziom | Opis |
|---|---|
| Na adres IP | Ogranicza całkowitą liczbę żądań z pojedynczego adresu IP |
| Na użytkownika | Ogranicza całkowitą liczbę żądań we wszystkich kontach dla pojedynczego tokena |
| Na konto | Ogranicza żądania kierowane do pojedynczego konta handlowego |
Przekroczono limit częstotliwości
Gdy limit częstotliwości zostanie przekroczony, API zwraca 429 Too Many Requests z nagłówkiem Retry-After.
Obsługa błędów ¶
Gdy żądanie nie powiedzie się, API zwraca odpowiedź błędu JSON.
{
"error": {
"code": "NOT_ENOUGH_MONEY",
"message": "Insufficient free margin for this order",
"httpStatus": 422,
"retryAfter": null
}
}
Kody błędów ¶
| Kod | HTTP | Opis |
|---|---|---|
INVALID_REQUEST | 400 | Nieprawidłowe lub brakujące parametry żądania |
UNAUTHORIZED | 401 | Nieprawidłowy, wygasły lub brakujący token |
TRADING_BAD_VOLUME | 400 | Wolumen jest nieprawidłowy (poniżej minimum lub przekracza pozycję) |
NOT_ENOUGH_MONEY | 422 | Niewystarczający dostępny depozyt zabezpieczający |
SYMBOL_NOT_FOUND | 404 | Identyfikator symbolu nie istnieje |
MARKET_CLOSED | 409 | Rynek dla symbolu jest obecnie zamknięty |
MAINTENANCE | 503 | Serwer handlowy jest w trybie konserwacji |
TIMEOUT | 504 | Serwer handlowy nie odpowiedział na czas |
GATEWAY_RATE_LIMIT | 429 | Przekroczono limit częstotliwości – zobacz nagłówek Retry-After |
Obsługa limitu częstotliwości
Gdy otrzymasz odpowiedź 429, nagłówek Retry-After i pole retryAfter wskazują, ile sekund musisz odczekać przed wysłaniem kolejnego żądania.