mforex API dokumentacja protokołu binarnego wersja 0.9.7
WSTĘP 3 OGÓLNE 3 SERWERY 3 GODZINY HANDLU 3 FORMAT DANYCH 4 DATA I CZAS 4 OGÓLNE ZASADY OBSŁUGI KOMUNIKATÓW 4 PROTOKÓŁ 5 STRUKTURA PAKIETU 5 INFORMACJE OGÓLNE 5 MODEL ZAPYTANIE-ODPOWIEDŹ 5 MODEL STRUMIENIOWY 5 KOMUNIKATY 6 KOMUNIKATY PROTOKOŁU ZAPYTANIE-ODPOWIEDŹ 6 KOMUNIKATY PROTOKOŁU STRUMIENIOWEGO 14 TYPY WYLICZENIOWE 15 2
WSTĘP Ogólne Niniejszy dokument zawiera opis protokołu binarnego używanego podczas komunikacji między użytkownikiem a serwerem transakcyjnym. Dzięki mforex API użytkownicy zyskują programistyczny dostęp do danych rynkowych (zarówno bieżących, jak i historycznych), aktualnego stanu rachunku oraz systemu transakcyjnego mforex. Serwery Serwery API są dostępne pod poniższymi adresami IP: REAL: real.api.mforex.pl:5615 DEMO: demo.api.mforex.pl:5615 Komunikacja z serwerem realnym prowadzona jest przy pomocy szyfrowanego połączenia (SSLv3). Wersje SSL starsze niż v3 nie są obsługiwane. Nazwa certyfikatu, jest taka sama jak nazwa serwera API do którego loguje się użytkownik. Godziny handlu Handel walutami rozpoczyna się w niedzielę o godzinę 23:00 i trwa nieprzerwanie przez cały tydzień, aż do godziny 22:00 w piątek. Pozostałe instrumenty handlowane są w różnych godzinach, zależnie od czasu trwania sesji instrumentu bazowego i zmian czasu w poszczególnych krajach. Godziny handlu dla wszystkich instrumentów podane są w specyfikacji instrumentów. Serwer API przyjmuje połączenia niezależnie od godzin handlu przez 24 godziny na dobę, 7 dni w tygodniu. W szczególności, poza sesją możliwe jest logowanie oraz np. pobranie historycznych danych rynkowych. 3
FORMAT DANYCH Data i czas Data zdefiniowana jest jako liczba 100-nanosekundowych interwałów liczonych od północy pierwszego stycznia 1 roku n.e. wg kalendarza gregoriańskiego. Czas również zdefiniowany jest jako liczba 100-nanosekundowych interwałów liczonych od północy dnia poprzedniego. Ogólne zasady obsługi komunikatów W celu zapewnienia najwyższej jakości świadczonych usług na użytkowników nałożony został szereg ograniczeń: Z API mogą korzystać tylko uprawnieni użytkownicy dalej zwani jako UU. Jeżeli użytkownik nie zostanie zidentyfikowany jako UU, otrzyma on pakiet z błędem przy próbie logowania. Jeżeli po ustanowieniu połączenia UU nie zaloguje się w przeciągu 5 sekund, połączenie zostanie przerwane. Jeżeli UU wyśle wiadomość, która nie będzie rozpoznana przez serwer, połączenie zostanie przerwane Każdy UU posiada ograniczą liczbę wiadomości, które może wysłać w przeciągu minuty. Po przekroczeniu limitu wiadomości użytkownik zostanie rozłączony. Każdy wysłany przez UU pakiet nie powinien przekraczać 4096 B. 4
PROTOKÓŁ Struktura Pakietu Każdy pakiet składa się z 8 bajtowego nagłówka 1 kodowanego w konwencji Little endian i pakietu właściwego. Długość pakietu w bajtach Identyfikator Pakietu Pakiet właściwy Tabela 1: Struktura pakietu Aby uniknąć błędów podczas serializacji/deserializacji pakietów protokół jest wersjonowany. Więcej informacji o wersjonowaniu znajduje się opisie komunikatu LoginRequestPacket. Jeżeli klient wysyłać będzie nieobsługiwane komunikaty zostanie automatycznie rozłączony. Informacje ogólne Komunikacja z serwerem przeprowadzana jest w dwóch modelach: zapytanie odpowiedź komunikacji strumieniowej Model zapytanie-odpowiedź W rzeczonym modelu komunikacja inicjowana jest przez użytkownika. Każdemu zapytaniu z sufiksem request przypisana jest odpowiedź z sufiksem response zawierająca typ wyliczeniowy APIErrorCode przechowujący kod rezultatu zapytania oraz pole typu logicznego Status informujące czy zapytanie zakończyło się sukcesem. Zarówno pakiet typu request jak i response zawiera pole RequestId które pozwala na dobranie je w pary. Wartość przechowywana w polu RequestId powinna 2 być unikatowa dla każdej pary. UWAGA: Wyjątkiem od powyższej reguły jest wiadomość LoginResponsePacket, która rezultat zapytania przechowuje jako typ wyliczeniowy LoginStatus w polu o tej samej nazwie. Model strumieniowy W tym modelu komunikacja jest inicjowana przez serwer. Komunikaty MarginLevelPacket oraz TradeUpdatePacket wysyłane są do wszystkich połączonych użytkowników, bez konieczności rejestracji. Wyjątkiem jest komunikat TickPacket, który wymaga wcześniejszej rejestracji przy użyciu komunikatu TickRegistrationRequestPacket. UWAGA: Komunikat MarginLevelPacket wysyłany jest jedynie przy zmianie Poziomu Zabezpieczenia tj. wyniku ilorazu Salda Rejestru Operacyjnego (Equity) i Wymaganego Depozytu Zabezpieczającego (Margin). W szczególności MarginLevelPacket nie będzie wysłany, jeżeli użytkownik nie posiada otwartych pozycji. W takim przypadku w celu otrzymania aktualnego Poziomu Zabezpieczenia należy skorzystać z protokołu zapytanie-odpowiedź i komunikatu MarginLevelRequestPacket. 1 Pierwsze 4 bajty kodują informację o długości pakietu, następne 4 przechowują identyfikator 2 powinna tj. niespełnienie tego warunku nie jest błędem, jednak powoduje, że poprawne przypisanie odpowiedzi do zapytania może być niemożliwe. 5
Komunikaty Komunikaty protokołu zapytanie-odpowiedź 1. LoginRequestPacket Pakiet umożliwiający zalogowanie się użytkownikowi do serwera. Pakiet ten jest jedynym dopuszczalnym komunikatem, jaki może wysłać klient po nawiązaniu połączenia. Jeżeli wersja protokołu, którym posługuje się użytkownik, nie jest obsługiwana przez serwer, to w pakiecie LoginResponsePacket w polu LoginStatus zostanie zwrócony odpowiedni komunikat. Login Int32 Login użytkownika Password String Hasło użytkownika MajorProtocolVersion Int32 Znaczący numer wersji protokołu MinorProtocolVersion Int32 Nieznaczący numer wersji protokołu 2. LoginResponsePacket Pakiet zwracający informacje o rezultacie logowania użytkownika. RequestId Int32 Identyfikator zawarty w pakiecie LoginRequestPacket Login Int32 Login użytkownika LoginStatus LoginStatus Kod rezultatu procesu logowania 3. LogoutRequestPacket Pakiet zawierający żądanie wylogowania użytkownika. Pakiet ten powinien być wysłany przed rozłączeniem się sesji użytkownika. Serwer po otrzymaniu pakietu w odpowiedzi zrywa połączenie bez odesłania potwierdzenia do użytkownika. 4. HeartBeatRequestPacket Pakiet utrzymujący połączenie z serwerem. Wymagane wysyłanie pakietu co 30 sekund. Jeżeli użytkownik nie wyśle komunikatu w przeciągu 60 sekund od ostatniego, połączenie zostanie zerwane natychmiast. 5. HeartBeatRsponsePacket Pakiet potwierdzający otrzymanie komunikatu HeartBeatRequestPacket. RequestId Int32 Identyfikator zawarty w pakiecie HeartBeatRequestPacket 6
6. CandleRequestPacket Pakiet umożliwiający pobranie historycznych danych rynkowych w postaci świec japońskich. FromTime Int64 Data początkowa okresu, dla którego pobierane są dane rynkowe ToTime Int64 Data końcowa okresu, dla którego pobierane są dane rynkowe Symbol String Symbol instrumentu, dla którego pobierane są dane rynkowe Period CandlePeriod Identyfikator interwału, dla którego pobierane są dane rynkowe 7. CandleResponsePacket Pakiet zwracający informacje na zapytanie zawarte w komunikacie CandleRequestPacket. RequestId Int32 Identyfikator zawarty w pakiecie CandleRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu FromTime Date Data początkowa okresu, dla którego pobierane są dane rynkowe ToTime Date Data końcowa okresu, dla którego pobierane są dane rynkowe Symbol String Symbol instrumentu, dla którego pobierane są dane rynkowe Candles Candle[] Tablica struktur typu Candle Period CandlePeriod Identyfikator interwału, dla którego pobierane są dane rynkowe Candle Struktura zawierająca dane o pojedynczej świecy japońskiej. Open Double Cena otwarcia Close Double Cena zamknięcia Low Double Najniższa wartość w danym okresie High Double Najwyższa wartość w danym okresie Volume Int32 Wysokość wolumenu Time Int64 Czas od którego konstruowana jest świeca japońska 8. AccountSettingsRequestPacket Pakiet reprezentujący zapytanie o ustawienia konta użytkowania. 7
9. AccountSettingsResponsePacket Pakiet zwracający informację o ustawieniach kona użytkownika. RequestId Int32 Identyfikator zawarty w pakiecie AccountSettingsRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu AccountSettings AccountSettings Struktura typu AccountSettings AccountSettings Obiekt zawierający dane o ustawieniach rachunku użytkownika. Name String Nazwa użytkownika Leverage Int32 Domyślna dźwignia na rachunku InterestRate Double Stopa procentowa od której naliczają się odsetki MarginCall Double Poziom aktywacji wezwania do dopłaty MarginStopOut Double Poziom aktywacji zlecenia stop-out MarginMode Kod sposobu obliczania Free Margin MarginMode MarginType MarginType Kod zdarzenia aktywującego Margin Call 10. InstrumentSettingsRequestPacket Pakiet reprezentujący zapytanie o ustawienia wszystkich instrumentów. 11. InstrumentSettingsResponsePacket Pakiet zwracający informację o ustawieniach wszystkich instrumentów. RequestId Int32 Identyfikator zawarty w pakiecie InstrumentSettingsRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu InstrumentSettings Tablica struktur typu InstrumentSettings[] InstrumentSettings 8
InstrumentSettings Obiekt zawierający dane o ustawieniach pojedynczego instrumentu. Name String Nazwa instrumentu Digits Int32 Liczba cyfr w rozwinięciu dziesiętnym ceny ContractSize Double Liczba jednostek instrumentu dla 1 lota ProfitCalcMode ProfitCalcMode Kod sposobu w jaki serwer oblicza wynik z transakcji na danym instrumencie MarginCalcMode MarginCalcMode Kod sposobu w jaki serwer oblicza Wymagany Depozyt Zabezpieczający dla transakcji na danym instrumencie MarginHedged Double Procent wartości nominalnej każdej z przeciwstawnych transakcji, który zablokowany zostanie na depozyt zabezpieczający. MarginDivider Double Współczynnik ilorazowy Wymaganego Depozytu Zabezpieczającego SwapType SwapType Kod sposobu w jaki serwer nalicza koszt codziennego finansowania pozycji SwapLong Double Punkty swap dla pozycji długiej na danym instrumencie dla 1 lota SwapShort Double Punkty swap dla pozycji krótkiej na danym TradeMode TradeMode instrumencie dla 1 lota Kod zakresu handlu jaki jest możliwy dla danego instrumentu Currency String Waluta bazowa danego instrumentu Bid Double Aktualna cena bid Ask Double Aktualna cena ask Low High Double Double Najniższa cena z dania ostatniej aktualizacji ustawień Najwyższa cena z dania ostatniej aktualizacji ustawień Time Int64 Ostatnia aktualizacja ustawień LotMin Double Najmniejszy wolumen zlecenia LotMax Double Największy wolumen zlecenia LotStep Double Krok zmiany wielkości wolumenu zlecenia Commission Double Prowizja od transakcji walutowych CommissionType CommissionType Kod sposobu pobierania prowizji CommisstionLots CommissionLots Kod bazy do naliczania prowizji 12. MarginLevelRequestPacket Pakiet reprezentujący zapytanie o najnowsze szczegóły salda rachunku zalogowanego użytkownika. 9
13. MarginLevelResponsePacket Pakiet zwracający najnowsze szczegóły salda rachunku użytkownika. RequestId Int32 Identyfikator zawarty w pakiecie MarginLevelRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu MarginLevel MarginLevel Struktura zawierająca szczegóły salda rachunku MarginLevel Struktura zawierająca bieżące podsumowanie rachunku zalogowanego użytkownika. Login Int32 Login użytkownika Balance Double Saldo Rachunku Equity Double Saldo Rejestru Operacyjnego FreeMargin Double Wolne Środki Pieniężne LevelType Meta4MarginLevelType Dodatkowe informacje o Wymaganym Depozycie Zabezpieczającym Margin Double Wymagany Depozyt Zabezpieczający Level Double Poziom Zabezpieczenia 14. TickRegistrationRequestPacket Pakiet reprezentujący żądanie rejestracji/derejestracji na strumień kwotowań dla danego instrumentu. Pakiet rejestrujący można wysłać dowolną liczbę razy, jednak dla danego symbolu zostanie utworzony tylko jeden strumień danych. W dowolnym momencie można wyrejestrować się wysyłając pakiet z odpowiednią wartością pola RegistrationAction. Symbol String Nazwa interesującego nas instrumentu RegistrationAction RegistrationAction Kod rezultatu procesu rejestracji/derejestracji 15. TickRegistrationResponsePacket Pakiet zwracający informację o rezultacie próby rejestracji na dane tickowe. RequestId Int32 Identyfikator zawarty w pakiecie TickRegistrationRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu 10
16. TradeTransRequestPacket Pakiet reprezentujący żądanie zawarcia transakcji. TradeCommand TradeCommand Informacja o typie zlecenia TransactionType TransactionType Akcja dokonanej na zadanym zleceniu/transakcji. Price Double Cena zlecenia/transakcji StopLoss Double Poziom zlecenia obronnego Stop Loss TakeProfit Double Poziom zlecenia obronnego Take Profit Symbol String Symbol instrumentu Volume Double Wolumen transakcji w lotach Order Int32 Identyfikator transakcji Comment string Komentarz Expiration Int64 Data wygasania zlecania (tylko oczekujące) 17. TradeTransResponsePacket Pakiet zwracający informację o rezultacie zawarcia transakcji. RequestId Int32 Identyfikator zawarty w TradeTransRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu Order Int32 Identyfikator transakcji TradeEc TradeErrorCode Kod błędu zawarcia transakcji 18. ClosedTradesRequestPacket Pakiet reprezentujący żądanie o kolekcję zamkniętych transakcji. DateFrom Int64 Data początkowa okresu, dla którego pobierane są zamknięte transakcje DateTo Int64 Data końcowa okresu, dla którego pobierane są transakcje 19. ClosedTradesResponsePacket Pakiet zwracający kolekcję zamkniętych transakcji. RequestId Int32 Identyfikator zawarty w pakiecie ClosedTradesRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu Trades TradeRecord[] Tablica zamkniętych transakcji DateFrom Int64 Data początkowa okresu, dla którego pobierane są zamknięte transakcje DateTo Int64 Data końcowa okresu, jw. 11
20. TradesInfoRequestPacket Pakiet reprezentujący żądanie o kolekcję otwartych transakcji oraz zleceń oczekujących. 21. TradesInfoResponsePacket Pakiet zwracający kolekcję otwartych transakcji oraz zleceń oczekujących. RequestId Int32 Identyfikator zawarty w pakiecie ClosedTradesRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu Trades TradeRecord[] Tablica otwartych transakcji oraz zleceń oczekujących TradeRecord Obiekt zawierający dane o transakcji. Login Int32 Login użytkownika Order Int32 Identyfikator transakcji TradeCommand TradeCommand Informacja o typie zlecenia Symbol String Symbol instrumentu Volume Double Wolumen transakcji w lotach Profit Double Wynik na transakcji Swaps Double Wynik finansowania pozycji Comission Double Wartość zapłaconej prowizji StopLoss Double Poziom zlecenia obronnego Stop Loss TakeProfit Double Poziom zlecenia obronnego Take Profit OpenPrice Double Cena otwarcia OpenTime Int64 Czas otwarcia transakcji ClosePrice Double Cena zamknięcia CloseTime Int64 Czas zamknięcia Closed Bool Czy transakcja została zamknięta Digits Int32 Liczba cyfr w rozwinięciu dziesiętnym ceny Comment String Komentarz do transakcji Expiration Int64 Data wygasania zlecania (tylko oczekujące) 22. SessionScheduleRequestPacket Pakiet reprezentujący zapytanie o godziny handlu na żądanym instrumencie. Symbol String Symbol instrumentu 12
23. SessionScheduleResponsePacket Pakiet zawierający informację o godzinach handlu na żądanym instrumencie. RequestId Int32 Identyfikator zawarty w pakiecie SessionScheduleRequestPacket Status Bool Informacja o sukcesie realizacji zapytania ErrorCode APIErrorCode Kod błędu DailySessions DailySession[] Tablica z obiektami opisującymi sesje w danym dniu DailySession Obiekt zawierający informację o sesjach notowań w trybie ciągłym w danym dniu 3. DayOfWeek DayOfWeek Typ wyliczeniowy kodujący dany dzień tygodnia TradingSessions TradingSession[] Tablica obiektów opisujących sesję notowań TradingSession Obiekt reprezentujący pojedynczą sesje notowań w trybie ciągłym, składający się z godziny rozpoczęcia sesji i godziny zakończenia sesji. Wszystkie godziny podane są w czasie środkowoeuropejskim (UTC+01:00 zima/utc+2 - lato). OpenTime Int64 Godzina rozpoczęcia handlu w sesji CloseTime Int64 Godzina zakończenia handlu w sesji 3 Należy pamiętać o tym, iż dla różnych instrumentów obiekt DailySession może zawierać inne sesje. 13
Komunikaty protokołu strumieniowego 1. TickPacket Pakiet zawierający dane o notowaniach instrumentów. Ticks Tick[] Tablica z notowaniami instrumentów Tick Symbol String Symbol instrumentu Bid Double Cena bid Ask Double Cena ask Time Int64 Data notowania Rate Obiekt zawierający dane o kursie konwersji na walutę ConversionRate depozytową ConversionRate Symbol String Symbol instrumentu DepositCurrency String Waluta depozytowa Bid Double Cena sprzedaży Ask Double Cena kupna 2. MarginLevelPacket Pakiet zawierający informację z podsumowaniem rachunku użytkownika. MarginLevel MarginLevel Struktura zawierająca bieżące podsumowanie rachunku zalogowane użytkownika 3. TradeUpdatePacket Pakiet zawierający informację o dokonanej operacji na transakcji. Trade TradeRecord Obiekt zawierający informację o aktualizowanej transakcji Action TradeAction Typ operacji wykonanej na aktualizowanej transakcji 14
Typy wyliczeniowe 1. AccountType Kod rodzaju rachunku, który posiada inwestor. Występowanie: AccountSettings 0 Mini 1 Standard 2 VIP 2. APIErrorCode Kod rezultatu zwracanego przez serwer w odpowiedzi na pakiet typu request. Występowanie:p akiety typu response 0 OK 1 Błąd serwera 2 Niezidentyfikowany błąd 3 Błąd transakcji 3. CandlePeriod Kod interwału z którego brane są dane tickowe używane do konstrukcji świecy japońskiej. Występowanie: CandleRequestPacket, CandleResponsePacket 1 1 minuta 5 5 minut 15 15 minut 30 30 minut 60 60 minut (1 godzina) 240 240 minut (4 godziny) 1440 1440 minut (1 dzień) 10080 10080 minut (1 tydzień) 43200 43200 minut (30 dni) 4. CommissionLots Kod bazy służącej do naliczania prowizji. Występowanie: InstrumentSettings 0 Od każdego lota 1 Od każdej transakcji 15
5. CommissionType Kod sposobu w jaki naliczana jest prowizja. Występowanie: InstrumentSettings 0 Kwotowo 1 Jako pipsy 2 Procentowo 6. DayOfWeek Kod dni tygodnia Występowanie: DailySession 0 Niedziela 1 Poniedziałek 2 Wtorek 3 Środa 4 Czwartek 5 Piątek 6 Sobota 7. LoginStatus Kod rezultat rezultatu logowania. Nieudana autoryzacja może być spowodowana nieprawidłowym hasłem, brakiem praw dostępu do API bądź korzystaniem z nieaktualnej wersji protokołu. 0 OK 1 Nieprawidłowe hasło 2 Brak dostępu do API 3 Zła wersja protokołu 8. MarginCalcMode Kod sposobu w jaki serwer wylicza Wymagany Depozyt Zabezpieczający (Margin) dla danego instrumentu. Występowanie: InstrumentSettings 0 Forex lots*contract_size*leverage*margin_divider 1 CFD lots*contract_size*market_price*margin_divider 2 Futures lots/margin_divider 3 CFD-index lots*contract_size*market_price/margin_divider*(tick_price-tick_size) 4 CFD-leverage lots*contract_size*market_price/leverage*percentage/100 16
9. MarginMode Kod sposobu w jaki serwer wylicza Wolne Środki Pieniężne (Free Margin) dla zalogowanego użytkownika. Domyślnie do wyliczania Free Maregin są tylko stratne transakcje Występowanie: AccountSettings 0 DontUse Nie uwzględniaj otwartych pozycji w obliczeniach 1 UseAll Uwzględniaj zarówno zysk jak i stratę 2 UseProfit Uwzględniaj tylko zyskowne transakcje 3 UseLoss Uwzględniaj tylko stratne transakcje 10. MarginType Kod typu zdarzenia aktywującego Margin Call. Występowanie: AccountSettings 0 Percent Wyrażenie Equity / Margin * 100 spadnie poniżej pewnego poziomu 1 Currency Euity spadnie kwotowo poniżej pewnego poziomu 11. Meta4MarginLevelType Kod dodatkowej informacji o Poziomie Zabezpieczenia (Margin Level). Występowanie: MarginLevel 0 OK Poziom Zabezpieczenia powyżej 100% 1 MarginCall Poziom Zabezpieczenia znajduje się między 80% a 100% 2 StopOut Nastąpiło automatyczne zamknięcie najbardziej stratnej pozycji 12. ProfitCalcMode Kod sposobu w jaki serwer oblicza wynik na transakcji. Występowanie: InstrumentSettings 0 Forex (close_price open_price) * contract_size * lots 1 CDF (close_price open_price) * contract_size * lots 2 Futures (close_price open_price) * tick_price/tick_size * lots 13. RegistrationAction Kod stosowany do rejestrowania/wyrejestrowywania się z strumienia danych tickowych dla danego instrumentu. Występowanie: TickRegistrationRequestPacket 0 Unregister Wyrejestruj się z strumienia danych 1 Register Zarejestruj się na strumień danych 17
14. SwapType Kod sposobu w jaki serwer nalicza koszt codziennego finansowania pozycji Występowanie: InstrumentSettings 0 Points Koszt finansowania wyrażony jest w punktach 1 Dollars Koszt finansowania wyrażony jest w dolarach 2 Interest Koszt finansowania wyrażony jest za pomocą rocznej stopy procentowej naliczanej dziennie 3 Margin Koszt finansowania wyrażony jest w walucie, w której obliczany jest Currency Wymagany Depozyt Zabezpieczający (Margin) 15. TradeAction Kod akcji, jaka została dokonana na transakcji Występowanie: TradeUpdatePacket 0 Otwarcie 1 Modyfikacja 2 Zamknięcie 16. TradeCommand Kod informujący o typie zlecenia, które zostało złożone. Występowanie:TradeTransRequestPacket, TradeRecord 0 Buy 1 Sell 2 Buy limit 3 Sell limit 4 Buy stop 5 Sell stop 6 Balance 7 Credit 18
17. TradeErrorCode Kod rezultatu zwracanego przez serwer w odpowiedzi na próbę złożenie zlecenia. Występowanie: TradeTransResponsePacket 0 OK 1 OK brak operacji 2 Ogólny błąd 3 Nieprawidłowe dane 4 Techniczny problem serwera 5 Stara wersja terminala klienckiego 6 Brak połączenia 7 Brak wymaganych uprawnień 8 Zbyt częsty dostęp do serwera 9 Nieprawidłowa operacja 10 Zabezpieczenie początku sesji 64 Konto zablokowane 65 Nieprawidłowe informacje o koncie 128 Upłynął limit czasu zawarcia transakcji 129 Zlecenie posiada błędne ceny 130 Nieprawidłowe poziomy StopLoss, Take Profit 131 Nieprawidłowy wolumen zlecenia 132 Rynek zamknięty 133 Zawieranie transakcji jest obecnie wyłączone 134 Niewystarczająca ilość pieniędzy do zrealizowania transakcji 135 Cena uległa zmianie 136 Brak notowań 137 Broker jest zajęty 138 Dozwolone tylko zlecenie kupna 139 Za dużo żądań od jednego klienta 140 Transakcja zaakceptowana przez serwer i umieszczona w kolejce 141 Transakcja anulowana przez klienta 142 Odmowa modyfikacji zlecenia 143 Odmowa użycia daty ważności 144 Zbyt wiele zleceń 145 Hedge jest zabroniony 18. TradeMode Kod zakresu handlu jaki jest możliwy dla danego instrumentu. Występowanie: InstrumentSettings 0 No Brak możliwości handlu 1 Close Tylko zamykanie otwartych transakcji 2 Full Brak ograniczeń handlu 19
19. TransactionType Kod informujący o akcji dokonanej na zadanym zleceniu/transakcji. Występowanie: TradeTransRequestPacket 0 Złóż zlecenie 2 Zamknij otwartą transakcję 3 Zmodyfikuj zlecenie/transakcję 4 Usuń zlecenie oczekujące 20