Funkcje zarządzania zleceniami (transakcjami)

Jednym z podstawowych rodzajów programów tworzonych w MQL4 są tak zwane doradcze systemy eksperckie (Expert Advisor), które oprócz wyznaczania sygnałów tradingowych na podstawie wyliczeń wskaźników, własnych algorytmów umożliwiają automatyczny handel.

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

W niniejszym rozdziale zostały opisane wszystkie funkcje dostępu do tak zwanego kontekstu handlowego oraz funkcje pomocnicze operujące na aktualnie otwartych jak i historycznych zleceniach tradingowych.

W celu umożliwienia realizacji automatycznego handlu przez oprogramowanie konieczne jest, aby broker miał włączoną możliwość automatycznego handlu, a po stronie terminala musi być włączony handel automatyczny, co można sprawdzić z poziomu programu MQL4 za pomocą funkcji IsTradeAllowed().

Uwaga! Funkcje handlowe mogą być używane tylko w EA oraz skryptach i nie mogą być używane z programach typu wskaźnik własny użytkownika.

OrderClose

Funkcja zamyka otwartą pozycje transakcyjną. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

bool OrderClose( int ticket, double lots, double price, int slippage, color
Color=CLR_NONE )
Parametry
ticket – identyfikator zlecenia
lots – wielkość zamykanej pozycji w lotach
price – preferowana cena zamknięcia
slippage – maksymalna wielkość odchylenia ceny kwotowanej od ceny
zamknięcia
color – kolor strzałki symbolizującej zamknięcie pozycji lub wartość
domyślna CLR_NONE brak koloru
Wartość zwracana
true – jeśli zamknięcie pozycji powiodło się

false – jeśli zamknięcie pozycji nie powiodło się

Przykład:

if( iRSI(NULL,0,14,PRICE_CLOSE,0) > 80 )
{
OrderClose( numer_zlecenia,1,Ask,3,Red);
return(0);
}

OrdersTotal

Funkcja z liczbą aktualnie otwartych pozycji wraz ze zleceniami oczekującymi. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

int OrdersTotal()
Parametry
brak
Wartość zwracana
liczba aktualnie otwartych pozycji

Przykład:

int wszystkie_zlecenia = OrdersTotal();
for(int p=0;p<wszystkie_zlecenia;p++)
{
if(OrderSelect(p,SELECT_BY_POS)==false) continue;
Print(OrderTicket(),” | ”,OrderSymbol(),” | ”,OrderOpenPrice());
}

OrderCloseBy

Funkcja zamyka zlecenia przeciwstawne. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

bool OrderCloseBy( int ticket, int opposite, color Color=CLR_NONE)
Parametry
ticket – identyfikator zlecenia
opposite – identyfikator zlecenia przeciwstawnego
color – kolor strzałki symbolizującej zamknięcie pozycji lub wartość
domyślna CLR_NONE brak koloru
Wartość zwracana

Przykład:

if( iRSI(NULL,0,14,PRICE_CLOSE,0) > 80 )
{
OrderCloseBy(numer_zlecenia,numer_zlecenia_przeciwstawnego);
return(0);
}

OrderClosePrice

Funkcja zwraca cenę zamknięcia aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelectia:().

Składnia:

double OrderClosePrice()
Parametry
brak
Wartość zwracana
cena zamknięcia zlecenia

Przykład:

if( OrderSelect(ticket,SELECT_BY_POS) == true )
Print("Cena zamknięcia zlecenia ",ticket," to ",OrderClosePrice());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderCloseTime

Funkcja zwraca datę i czasu zamknięcia wybranego zlecenia, które jest zamknięte lub zwraca wartość 0 dla zleceń otwartych oraz oczekujących. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect ().

Składnia:

datetime OrderCloseTime()
Parametry
brak
Wartość zwracana
data i czas zamknięcia zlecenia

Przykład:

datetime ctm;
if( OrderSelect(2112,SELECT_BY_POS,MODE_HISTORY)==true)
{
ctm = OrderOpenTime();
if(ctm>0) Print("Czas otwarcia zlecenia 2112 to ", TimeToStr(ctm));
ctm = OrderCloseTime();
if(ctm>0) Print("Czas zamknięcia zlecenia 2112 to ", TimeToStr(ctm));
}
else

Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderComment

Funkcja zwraca łańcuch znakowy opisujący zlecenie, komentarz do zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect ().

Składnia:

string OrderComment()
Parametry
brak
Wartość zwracana
komentarz do zlecenia

Przykład:

string komentarz;
if( OrderSelect(124,SELECT_BY_TICKET)==false )
{
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());
return(0);
}
komentarz = OrderComment();
Print( komentarz );

OrderCommission

Funkcja oblicza i zwraca wartość prowizji pobieranych od aktualnie zaznaczonego zlecenia. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą.

Składnia

funkcji OrderSelect ().
Składnia:
double OrderCommission()
Parametry
brak
Wartość zwracana
wielkość opłat i prowizji

Przykład:

if( OrderSelect(124,SELECT_BY_POS)==true )
Print("Prowizje dla zlecenia 121 ",OrderCommission());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderDelete

Funkcja usuwa wcześniej otwarte zlecenie oczekujące. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

bool OrderDelete( int ticket, color Color=CLR_NONE)
Parametry
ticket – numer zlecenia
color – kolor strzałki na wykresie oznaczającej usunięcie zlecenia lub
wartość domyślna CLR_NONE czyli brak koloru
Wartość zwracana
true – jeśli funkcja zakończona powodzeniem
false – jeśli funkcja zakończona niepowodzeniem

Przykład:

if( Ask > 1.5239)
{
OrderDelete( numer_zlecenia );
return(0);
}

OrderExpiration

Funkcja zwraca datę ważności dla aktualnie zaznaczonego zlecenia oczekującego. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia:

datetime OrderExpiration()
Parametry
brak
Wartość zwracana
data i czas wygaśnięcia pozycji oczekującej

Przykład:

if( OrderSelect(124, SELECT_BY_TICKET)==true )
Print("Czas wygaśnięcia zlecenia #124 to
",TimeToStr(OrderExpiration()));
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderLots

Funkcja zwraca wielkość, wolumen aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

double OrderLots()
Parametry
brak
Wartość zwracana

wielkość pozycji w lotach

Przykład:

if( OrderSelect(124,SELECT_BY_POS)==true )
Print("wielkość pozycji #124 ",OrderLots());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderMagicNumber

Funkcja zwraca identyfikator (magic numer) aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

int OrderMagicNumber()
Parametry
brak
Wartość zwracana
identyfikator pomocniczy MagicNumber

Przykład:

if( OrderSelect(124,SELECT_BY_POS)==true)
Print("MagicNumber dla zlecenia #124 ", OrderMagicNumber());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderModify

Funkcja modyfikuje wcześniej otwartą pozycję lub zlecenie oczekujące. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Uwaga! Cena otwarcia oraz czas wygaśnięcia może być modyfikowany tylko dla zleceń oczekujących.

Składnia

bool OrderModify( int ticket, double price, double stoploss, double
takeprofit, datetime expiration, color arrow_color=CLR_NONE)
Parametry
ticket – identyfikator zlecenia
price – cena otwarcia tylko dla zleceń oczekujących
stoploss – nowy poziom StopLoss
takeprofit – nowy poziom TakeProfit
expiration – czas wygaśnięcia zlecenia oczekującego
arrow_color – color strzałek dla poziomów StopLoss/TakeProfit lub wartość
domyślna CLR_NONE czyli brak koloru
Wartość zwracana
true – jeśli funkcja, modyfikacja zlecenie zakończona powodzeniem
false – jeśli funkcja, modyfikacja zlecenie zakończona niepowodzeniem

Przykład:

if( TrailingStop > 0 )
{
OrderSelect(124,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Blue);
return(0);
}
}
}

OrderOpenPrice

Funkcja zwraca wartość ceny otwarcia pozycji dla aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

double OrderOpenPrice()
Parametry
brak
Wartość zwracana
cena otwarcia zlecenia

Przykład:

if(OrderSelect(124, SELECT_BY_POS)==true)
Print("Cena otwarcia zlecenia #124 ",OrderOpenPrice());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderOpenTime

Funkcja zwraca datę i czas aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocąm funkcji OrderSelect().

Składnia

datetime OrderOpenTime()
Parametry
brak
Wartość zwracana
data i czas otwarcia zlecenia w formacie datetime

Przykład:

if(OrderSelect(124, SELECT_BY_POS)==true)
Print("Czas otwarcia zlecenia #124 ",OrderOpenTime());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderPrint

Funkcja wyświetla podstawowe informacje w Dzienniku na temat aktualnie wybranego zlecenia. Format informacji to: numer zlecenia | czas otwarcia | typ zlecenia | wielkość pozycji | cena otwarcia| StopLoss | Take Profit | czas zamknięcia | cena zamknięcia | prowizje i opłaty | Swap | zysk/strata | komentarz | MagicNumber | czas wygaśnięcia zlecenia oczekującego. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

void OrderPrint()
Parametry
brak
Wartość zwracana

Przykład:

if(OrderSelect(10, SELECT_BY_TICKET)==true)
OrderPrint();
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderProfit

Funkcja zwraca aktualny zysk/stratę otwartej i aktualnie zaznaczonej pozycji (bez swap i prowizji). W otwartej pozycji, jest uzwzględniony niezrealizowany zysk. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

double OrderProfit()
Parametry
brak
Wartość zwracana
zysk/strata z aktualnie otwartych pozycji (bez swap i prowizji)

Przykład:

if(OrderSelect(10, SELECT_BY_POS)==true)
Print("Zysk/strata z pozycji #124 ",OrderProfit());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderSelect

Funkcja wybiera i zaznacza jako aktualną pozycję do dalszego użycia przez inne funkcje operacji handlowych. Jest to podstawowa funkcja, którą musimy użyć za każdym razem, gdy chcemy pobrać informacje z terminala o aktualnie otwartych, oczekujących lub historycznych pozycjach.

Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Pozycje mogą być wybierane na podstawie niepowtarzalnego identyfikatora zlecenia, wówczas parametr select przyjmuje wartość SELECT_BY_TICKET lub poprzez indeks pozycji wówczas parametr select przyjmuje wartość SELECT_BY_POS. Pozycje mogę być wybierane z aktualnie otwartych lub historycznych co ustalamy parametrem pool, który przyjmuje wartość MODE_TRADES lub MODE_HISTORY.

Składnia

bool OrderSelect( int index, int select, int pool=MODE_TRADES )
Parametry
index – identyfikator zlecenia zależny od drugiego parametru select
select – parametr oznaczający typ zaznaczanego indeksu:
SELECT_BY_POS – identyfikator indeksu pozycji
SELECT_BY_TICKET – identyfikator zlecenia
pool – stosowany tylko w trybie SELECT_BY_POS, może przyjmować poniższe
wartości:
MODE_TRADES (default) – wybierane są zlecenia z otwarte i oczekujące
MODE_HISTORY – wybierane są zlecenia zamknięte z historii rachunku
Wartość zwracana
true – jeśli funkcja zakończona powodzeniem
false – jeśli funkcja zakończona niepowodzeniem

Przykład:

if(OrderSelect(124, SELECT_BY_TICKET)==true)
{
Print("Cena otwarcia zlecenie #124 ", OrderOpenPrice());
Print("Cena zamknięcia zlecenia #124 ", OrderClosePrice());
}
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderSend

Funkcja umożliwia otwieranie zleceń natychmiastowych oraz oczekujących. Funkcja zwraca numer zlecenia, jeśli zakończy się powodzeniem lub wartość -1, jeśli wystąpił błąd wykonania funkcji (otwarcia nowego zlecenia). Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Jest to podstawowa funkcja z operacji handlowych oraz jedyna służąca do otwierania nowych pozycji z poziomu własnego programu.

Uwaga! W przypadku zleceń po cenie rynkowej typu OP_SELL lub OP_BUY, jako cenę otwarcia możemy podać tylko aktualną cenę Bid dla typu OP_SELL lub Ask dla typu OP_BUY i nie powinniśmy stosować wyliczanych, normalizowanych cen. Jeśli podamy cenę wyliczoną o nieprawidłowym formacie np. za mało pozycji po przecinku to otrzymamy błąd numer 129 (ERR_INVALID_PRICE).

Jeśli podana cena będzie z aktualną ceną rynkową otrzymamy błąd numer 138 (ERR_REQUOTE), w tym przypadku możemy zastosować parametr slippage i określić maksymalne odchylenie od aktualnej ceny rynkowej, przy jakim zgadzamy się na otworzenie pozycji. Jeśli stosujemy parametr slippage to cena po której pozycja będzie otwarta określona jest przez “widełki” = aktualna cena +-
parametr slippage.

Wartość StopLoss i TakeProfit możemy określić podczas otwierania nowego zlecenia, ale muszą być większe niż dopuszczalna przez brokera minimalna wartość stopów (stop level), którą możemy odczytać korzystając z funkcji MarketInfo() parametr MODE_STOPLEVEL. W przypadku ustawienia nieprawidłowych, najczęściej za bliskich poziomów stop otrzymamy błąd o kodzie 130
(ERR_INVALID_STOPS).
Jeśli otwieramy zlecenia oczekujące cena otwarcia nie może być ceną rynkową Ask lub Bid. Minimalny poziom odstępu od aktualnej ceny dla zleceń oczekujących określony przez brokera możemy odczytać za pomocą funkcji MarketInfo() parameter MODE_STOPLEVEL. W przypadku
ustawienia nie prawidłowych cen oczekujących otrzymamy błąd o kodzie 130 (ERR_INVALID_STOPS).
Broker może zablokować zlecenia oczekujące wówczas przy próbie wywołania takiego zlecenie otrzymamy błąd o kodzie 147 (ERR_TRADE_EXPIRATION_DENIED).

Może też zostać nałożone ograniczenie na maksymalna ilość zleceń otwartych i oczekujących wówczas zostanie wygenerowany błąd o kodzie 148 (ERR_TRADE_TOO_MANY_ORDERS).

Składnia

int OrderSend( string symbol, int cmd, double volume, double price, int
slippage, double stoploss, double takeprofit, string comment=NULL, int
magic=0, datetime expiration=0, color arrow_color=CLR_NONE )
Parametry
symbol – symbol rynku
cmd – identyfikator typ zlecenia
volume – wielkość zlecenia wlotach
price – cena po jakiej ma zostać otwarte zlecenie
slippage – maksymalne dopuszczalne odchylenie ceny rynkowej w pipsach od
powyższej ceny otwarcia
stoploss – poziom StopLoss
takeprofit – poziom TakeProfit
comment – komentarz tekstowy do zlecenia
magic – identyfikator dla EA
expiration – czas wygaśnięcia tylko dla zleceń oczekujących
arrow_color – kolor strzałki otwierającej zlecenie lub wartość domyślna
CLR_NONE czyli brak koloru
Wartość zwracana
numer nowego zlecenia lub -1 jeśli błąd

Przykład:

int zlecenie;
if( iRSI(NULL,0,14,PRICE_CLOSE,0) < 20 )
{
zlecenie = OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-
25*Point,Ask+25*Point,"Moje zlecenie kupna",16384,0,Green);
if(zlecenie < 0 )
{
Print("Błąd wykonania funkcji OrderSend ",GetLastError());
return(0);
}
}

OrdersHistoryTotal

Funkcja zwraca liczbę zamkniętych zleceń, które znajdują się w historii rachunku i zależy od zakresu daty wyświetlanej w zakładce pozycji historycznych rachunku.

Składnia

int OrdersHistoryTotal()
Parametry
brak
Wartość zwracana
liczba zamkniętych pozycji znajdujących się w historii

Przykład:

int i,
hTotal = OrdersHistoryTotal();
for(i=0;i<hTotal;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Nie można wybrać pozycji z historii ",GetLastError());
break;
}

}

Print(OrderTicket(),” | ”,OrderSymbol(),” | ”,OrderClosePrice())

OrderStopLoss

Funkcja zwraca wartość StopLoss dla aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

double OrderStopLoss()
Parametry
brak
Wartość zwracana
wartość StopLoss

Przykład:

if(OrderSelect(ticket,SELECT_BY_POS)==true)
Print("StopLoss dla pozycji #124 ", OrderStopLoss());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError()

OrderSwap

Funkcja zwraca wartość Swap dla aktualnie wybranego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

double OrderSwap()
Parametry
brak
Wartość zwracana
wielkość pozycji Swapowych

Przykład:

if(OrderSelect(124, SELECT_BY_TICKET)==true)
Print("Naliczone punkty swap dla pozycji #124 ",OrderSwap());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderSymbol

Funkcja zwraca ciąg znaków, który reprezentuje nazwę symbolu instrumentu finansowego dla aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

string OrderSymbol()
Parametry
brak
Wartość zwracana
nazwa symbolu rynku

Przykład:

if(OrderSelect(124, SELECT_BY_POS)==true)
Print("Symbol rynku dla zlecenia #124 ", OrderSymbol());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderTakeProfit

Funkcja zwraca wartość TakeProfit dla aktualnie zaznaczonego zlecenia. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

double OrderTakeProfit()
Parametry
brak
Wartość zwracana
wartość TakeProfit

Przykład:

if(OrderSelect(124, SELECT_BY_POS)==true)
Print("TakeProfit dla pozycji #124 ", OrderTakeProfit());
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderTicket

Funkcja zwraca numer zlecenia dla aktualnie wybranego zlecenia. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

int OrderTicket()
Parametry
brak
Wartość zwracana
numer identyfikacyjny zlecenia

Przykład:

if( OrderSelect(124, SELECT_BY_TICKET)==true )
Print("Czas wygaśnięcia zlecenia #124 to
",TimeToStr(OrderExpiration()));
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

OrderType

Funkcja z wraca typ zlecenia dla aktualnie wybranego zlecenia. Zwracana wartość odpowiada dostępnym w terminalu typom zleceń, które zamieszczone zostały poniżej.

OP_BUY

wartość

opis

0

pozycja kupna

OP_SELL

wartość

opis

1

pozycja sprzedaży

OP_BUYLIMIT

wartość

opis

2

pozycja oczekującą kupna po spadku do podanej ceny

OP_SELLLIMIT

wartość

opis

3

pozycja oczekującą sprzedaży po wzroście do podanej ceny

OP_BUYSTOP

wartość

opis

4

pozycja oczekującą kupna po wzroście do podanej ceny

OP_SELLSTOP

wartość

opis

5

pozycja oczekującą sprzedaży po spadku do podanej ceny

stała wartość opis
OP_BUY 0 pozycja kupna
OP_SELL 1 pozycja sprzedaży
OP_BUYLIMIT 2 pozycja oczekującą kupna po spadku do podanej ceny
OP_SELLLIMIT 3 pozycja oczekującą sprzedaży po wzroście do podanej ceny
OP_BUYSTOP 4 pozycja oczekującą kupna po wzroście do podanej ceny
OP_SELLSTOP 5 pozycja oczekującą sprzedaży po spadku do podanej ceny

Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Uwaga! Aby korzystać z tej funkcji konieczne jest wcześniejsze „zaznaczenie” zlecenia za pomocą funkcji OrderSelect().

Składnia

int OrderType()
Parametry
brak
Wartość zwracana
typ zlecenia

Przykład:

int order_type;
if(OrderSelect(124, SELECT_BY_POS)==true)
{
Print("Typ zlecenia dla pozycji #124 ",OrderType());
}
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

Kody błędów operacji handlowych

W poniższej tabeli zamieszczono błędy krytyczne, które powodują natychmiastowe zatrzymanie wykonywania się programu:

ERR_NO_ERROR

wartość

opis

0

Brak błędu

ERR_NO_RESULT

wartość

opis

1

Nie ma błędu, ale wynik jest nieprawidłowy

ERR_COMMON_ERROR

wartość

opis

2

Błąd ogólny

ERR_INVALID_TRADE_PARAMETERS

wartość

opis

3

Nieprawidłowe parametry handlu

ERR_SERVER_BUSY

wartość

opis

4

Serwer trading owy jest zajęty

ERR_OLD_VERSION

wartość

opis

5

Starsza wersja klienta platform

ERR_NO_CONNECTION

wartość

opis

6

Brak połączenie z serwerem

ERR_NOT_ENOUGH_RIGHTS

wartość

opis

7

Brak uprawnieni do wykonania tej operacji

ERR_TOO_FREQUENT_REQUESTS

wartość

opis

8

Za dużo żądań wysyłanych do serwera

ERR_MALFUNCTIONAL_TRADE

wartość

opis

9

Błąd wewnętrzny serwera

ERR_ACCOUNT_DISABLED

wartość

opis

64

Konto wyłączone

ERR_INVALID_ACCOUNT

wartość

opis

65

Błędny numer konta

ERR_TRADE_TIMEOUT

wartość

opis

128

Przekroczony czas wykonania zlecenia

ERR_INVALID_PRICE

wartość

opis

129

Nieprawidłowa cena

ERR_INVALID_STOPS

wartość

opis

130

Nieprawidłowy poziom stop

ERR_INVALID_TRADE_VOLUME

wartość

opis

131

Nieprawidłowa wielkość zlecenia

ERR_MARKET_CLOSED

wartość

opis

132

Rynek jest zamknięty

ERR_TRADE_DISABLED

wartość

opis

133

Handel jest wyłączony

ERR_NOT_ENOUGH_MONEY

wartość

opis

134

Brak środków na koncie

ERR_PRICE_CHANGED

wartość

opis

135

Cena uległa zmianie

ERR_OFF_QUOTES

wartość

opis

136

Kwotowania są niedostępne

ERR_BROKER_BUSY

wartość

opis

137

Serwer brokera jest niedostępny

ERR_REQUOTE

wartość

opis

138

Rekwotowanie

ERR_ORDER_LOCKED

wartość

opis

139

Zlecenie jest zablokowane

ERR_LONG_POSITIONS_ONLY_ALLOWED

wartość

opis

140

Dopuszczalne są tylko pozycje długie

ERR_TOO_MANY_REQUESTS

wartość

opis

141

Za dużo żądań do serwera

ERR_TRADE_MODIFY_DENIED

wartość

opis

145

Nie można modyfikować zlecenia, ponieważ rynek jest zamknięty

ERR_TRADE_CONTEXT_BUSY

wartość

opis

146

Terminal handlowy jest zajęty

ERR_TRADE_EXPIRATION_DENIED

wartość

opis

147

Zlecenia oczekujące są zablokowane

ERR_TRADE_TOO_MANY_ORDERS

wartość

opis

148

Ilość bieżących zleceń przekracza dopuszczalny limit

ERR_TRADE_HEDGE_PROHIBITED

wartość

opis

149

Otwarcie pozycji przeciwnej do aktualnie otwartej jest niedostępne

ERR_TRADE_PROHIBITED_BY_FIFO

wartość

opis

150

Próba zamknięcia pozycji narusza zasady FIFO

stała wartość opis
ERR_NO_ERROR 0 Brak błędu
ERR_NO_RESULT 1 Nie ma błędu, ale wynik jest nieprawidłowy
ERR_COMMON_ERROR 2 Błąd ogólny
ERR_INVALID_TRADE_PARAMETERS 3 Nieprawidłowe parametry handlu
ERR_SERVER_BUSY 4 Serwer trading owy jest zajęty
ERR_OLD_VERSION 5 Starsza wersja klienta platform
ERR_NO_CONNECTION 6 Brak połączenie z serwerem
ERR_NOT_ENOUGH_RIGHTS 7 Brak uprawnieni do wykonania tej operacji
ERR_TOO_FREQUENT_REQUESTS 8 Za dużo żądań wysyłanych do serwera
ERR_MALFUNCTIONAL_TRADE 9 Błąd wewnętrzny serwera
ERR_ACCOUNT_DISABLED 64 Konto wyłączone
ERR_INVALID_ACCOUNT 65 Błędny numer konta
ERR_TRADE_TIMEOUT 128 Przekroczony czas wykonania zlecenia
ERR_INVALID_PRICE 129 Nieprawidłowa cena
ERR_INVALID_STOPS 130 Nieprawidłowy poziom stop
ERR_INVALID_TRADE_VOLUME 131 Nieprawidłowa wielkość zlecenia
ERR_MARKET_CLOSED 132 Rynek jest zamknięty
ERR_TRADE_DISABLED 133 Handel jest wyłączony
ERR_NOT_ENOUGH_MONEY 134 Brak środków na koncie
ERR_PRICE_CHANGED 135 Cena uległa zmianie
ERR_OFF_QUOTES 136 Kwotowania są niedostępne
ERR_BROKER_BUSY 137 Serwer brokera jest niedostępny
ERR_REQUOTE 138 Rekwotowanie
ERR_ORDER_LOCKED 139 Zlecenie jest zablokowane
ERR_LONG_POSITIONS_ONLY_ALLOWED 140 Dopuszczalne są tylko pozycje długie
ERR_TOO_MANY_REQUESTS 141 Za dużo żądań do serwera
ERR_TRADE_MODIFY_DENIED 145 Nie można modyfikować zlecenia, ponieważ rynek jest zamknięty
ERR_TRADE_CONTEXT_BUSY 146 Terminal handlowy jest zajęty
ERR_TRADE_EXPIRATION_DENIED 147 Zlecenia oczekujące są zablokowane
ERR_TRADE_TOO_MANY_ORDERS 148 Ilość bieżących zleceń przekracza dopuszczalny limit
ERR_TRADE_HEDGE_PROHIBITED 149 Otwarcie pozycji przeciwnej do aktualnie otwartej jest niedostępne
ERR_TRADE_PROHIBITED_BY_FIFO 150 Próba zamknięcia pozycji narusza zasady FIFO

Niniejszy materiał, przygotowany przez DM BOŚ S.A. ma charakter wyłącznie informacyjny, prezentowany jest w celach edukacyjnych i nie stanowi porady prawnej oraz nie jest rekomendacją osobistą w ramach świadczenia usługi doradztwa inwestycyjnego zgodnie z przepisami prawa. DM BOŚ S.A. nie udziela gwarancji dokładności, aktualności, oraz kompletności niniejszych informacji. Zaleca się przeprowadzenie we własnym zakresie niezależnego przeglądu informacji z niniejszego materiału.

1/1