Protokół WebSocket umożliwia 2 typy żądań: polecenia strumieniowe (odbieranie aktualizacji na żywo) oraz pobieranie danych transakcyjnych (wysyłanie żądania do serwera w celu uzyskania określonych informacji).
W właściwości XTB można skonfigurować następujące parametry.
Gdy klient pomyślnie połączy się z serwerami XTB, wywoływane jest zdarzenie OnXTBConnect. Jeśli podczas próby połączenia wystąpi błąd, zdarzenie OnXTBError zostanie wywołane ze szczegółami błędu.
Po wywołaniu zdarzenia OnXTBConnect można rozpocząć wysyłanie i odbieranie wiadomości z serwerów XTB.
oClient := TsgcWebSocketClient.Create(nil);
oXTB := TsgcWSAPI_XTB.Create(nil);
oXTB.Client := oClient;
oXTB.XTB.User := 'user_0001';
oXTB.XTB.Password := 'secret_0001';
oClient.Active := True;
procedure OnXTBConnect(Sender: TObject; const aStreamSessionId: string);
begin
DoLog('#XTB Connected');
end;
procedure OnXTBError(Sender: TObject; aCode, aDescription, aRawMessage: string);
begin
DoLog('#error: ' + aDescription);
end;
| Metoda | Opis |
| Login | Aby wykonać jakąkolwiek operację, aplikacja kliencka musi przeprowadzić proces logowania. Żadna funkcjonalność nie jest dostępna przed prawidłowym zalogowaniem. Metoda logowania jest wywoływana automatycznie po połączeniu klienta z serwerem WebSocket, jeśli wartości User/Password są ustawione. |
| Wylogowanie |
Można subskrybować następujące kanały:
| Metoda | Opis |
| SubscribeBalance | Umożliwia pobieranie aktualnych wartości wskaźników konta w czasie rzeczywistym, gdy tylko staną się dostępne w systemie. |
| SubscribeCandles | Subskrybuje i anuluje subskrypcję świec wykresu API. Interwał każdej świecy wynosi 1 minutę. Nowa świeca pojawia się co minutę. |
| SubscribeKeepAlive | Subskrybuje i anuluje subskrypcję wiadomości „keep alive". Nowa wiadomość „keep alive" jest wysyłana przez API co 3 sekundy. |
| SubscribeNews | Subskrybuje i anuluje subskrypcję wiadomości. |
| SubscribeProfits | Subskrybuje zyski i anuluje subskrypcję zysków. |
| SubscribeTickPrices |
Ustanawia subskrypcję kwotowań i umożliwia uzyskiwanie odpowiednich informacji w czasie rzeczywistym, natychmiast po ich pojawieniu się w systemie. Polecenie getTickPrices można wywoływać wielokrotnie dla tego samego symbolu, jednak dla danego symbolu zostanie utworzona tylko jedna subskrypcja. Należy mieć na uwadze, że gdy dostępnych jest wiele rekordów, kolejność ich otrzymywania nie jest gwarantowana. |
| SubscribeTrades | Ustanawia subskrypcję danych statusu transakcji użytkownika i umożliwia uzyskanie odpowiednich informacji w czasie rzeczywistym, gdy tylko staną się dostępne w systemie. Należy pamiętać, że gdy dostępnych jest wiele rekordów, kolejność ich odbierania nie jest gwarantowana. |
| SubscribeTradeStatus | Umożliwia pobieranie statusu wysłanych żądań handlowych w czasie rzeczywistym, natychmiast gdy jest dostępny w systemie. Należy pamiętać, że gdy dostępnych jest wiele rekordów, kolejność ich odbierania nie jest gwarantowana |
| SubscribePing | Regularne wywoływanie tej funkcji wystarczy do odświeżenia wewnętrznego stanu wszystkich komponentów w systemie. Połączenie strumieniowe, gdy klient nie wysyła żadnego polecenia w trakcie sesji, generuje ruch sieciowy tylko w jednym kierunku. Zaleca się, aby każda aplikacja, która nie wykonuje innych poleceń, wywoływała to polecenie co najmniej raz na 10 minut. |
Można wysyłać następujące żądania:
| Metoda | Opis |
| GetAllSymbols | Zwraca tablicę wszystkich symboli dostępnych dla użytkownika. |
| GetCalendar | Zwraca kalendarz z wydarzeniami rynkowymi. |
| GetChartLastRequest | Należy pamiętać, że ta funkcja może być zazwyczaj zastąpiona jej odpowiednikiem strumieniowym getCandles, który jest zalecanym sposobem pobierania bieżących danych świecowych. Zwraca informacje o wykresie, od daty początkowej do bieżącego czasu. Jeśli wybrany okres CHART_LAST_INFO_RECORD jest większy niż 1 minuta, ostatnia świeca zwrócona przez API może zmieniać się do końca okresu (świeca jest automatycznie aktualizowana co minutę). |
| GetChartRangeRequest | Należy pamiętać, że tę funkcję można zazwyczaj zastąpić jej odpowiednikiem strumieniowym getCandles, który jest preferowanym sposobem pobierania bieżących danych świecowych. Zwraca informacje o wykresie z danymi między podanymi datami początkowymi i końcowymi. |
| GetCommissionDef | Zwraca obliczenie prowizji i kursu wymiany. Wartość jest obliczana jako wartość oczekiwana i dlatego może nie być w pełni dokładna. |
| GetCurrentUserData |
Zwraca informacje o walucie konta oraz dźwigni finansowej konta. |
GetIbsHistory |
Zwraca dane IB z podanego zakresu czasowego. |
| GetMarginLevel | Należy pamiętać, że funkcja ta może być zwykle zastąpiona przez odpowiednik strumieniowy getBalance, który jest preferowanym sposobem pobierania wskaźników konta. Zwraca różne wskaźniki konta. |
| GetMarginTrade | Zwraca oczekiwany depozyt zabezpieczający dla danego instrumentu i wolumenu. Wartość jest obliczana jako oczekiwana wartość depozytu i dlatego może nie być w pełni dokładna. |
| GetNews | Należy pamiętać, że tę funkcję można zazwyczaj zastąpić jej odpowiednikiem strumieniowym getNews, który jest preferowanym sposobem pobierania danych o wiadomościach. Zwraca wiadomości z serwera handlowego, które zostały wysłane w określonym przedziale czasowym. |
| GetProfitCalculation | Oblicza szacowany zysk dla podanych danych transakcji. Należy stosować wyłącznie w aplikacjach typu kalkulator. Zysk dla otwartych transakcji powinien być pobierany z serwera ze względu na większą precyzję obliczeń serwerowych. |
| GetServerTime | Zwraca bieżący czas na serwerze handlowym |
| GetStepRules | Zwraca listę reguł krokowych dla DMA |
| GetSymbol | Zwraca informacje o symbolu dostępnym dla użytkownika |
| GetTickPrices | Należy pamiętać, że tę funkcję można zazwyczaj zastąpić jej odpowiednikiem strumieniowym getTickPrices, który jest preferowanym sposobem pobierania danych o transakcjach. Zwraca tablicę bieżących kwotowań dla podanych symboli — zwracane są wyłącznie kwotowania, które zmieniły się od podanego znacznika czasu. Nowy znacznik czasu uzyskany z odpowiedzi będzie użyty jako argument kolejnego wywołania tego polecenia. |
| GetTradeRecords | Zwraca tablicę transakcji wymienionych w argumencie orders |
| GetTrades | Należy pamiętać, że ta funkcja może być zazwyczaj zastąpiona przez jej odpowiednik strumieniowy getTrades, który jest preferowanym sposobem pobierania danych o transakcjach. Zwraca tablicę transakcji użytkownika. |
| GetTradesHistory | Należy pamiętać, że tę funkcję można zwykle zastąpić jej odpowiednikiem strumieniowym getTrades, który jest preferowanym sposobem pobierania danych o transakcjach. Zwraca tablicę transakcji użytkownika zamkniętych w określonym przedziale czasu. |
| GetTradingHours | Zwraca notowania i godziny handlu. |
| GetVersion | Zwraca bieżącą wersję API. |
| Ping | Regularne wywoływanie tej funkcji jest wystarczające do odświeżenia wewnętrznego stanu wszystkich komponentów w systemie. Zaleca się, aby każda aplikacja, która nie wykonuje innych poleceń, wywoływała to polecenie przynajmniej raz na 10 minut. Należy pamiętać, że strumieniowy odpowiednik tej funkcji to kombinacja poleceń ping i getKeepAlive. |
| TradeTransaction | Rozpoczyna transakcję handlową. tradeTransaction wysyła główne informacje o transakcji do serwera. |
| TradeTransactionStatus | Należy pamiętać, że tę funkcję można zwykle zastąpić jej odpowiednikiem strumieniowym getTradeStatus, który jest preferowanym sposobem pobierania danych o statusie transakcji. Zwraca bieżący status transakcji. W dowolnym momencie przetwarzania transakcji klient może sprawdzić status transakcji po stronie serwera. W tym celu klient musi podać unikatowy numer zlecenia uzyskany z wywołania tradeTransaction. |