Funkcje MQL4-Funkcje zarządzaniami zleceniami (transakcjami)-Order Send w Automatyzacja handlu-Słownik języka MQL4 - bossafx.pl
2018.08.14, godz. 23:42

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);
}
}
bos bank logo
Grupa kapitałowa
Nagroda specjalna i tytuł BROKERA ROKU 2015
Nagroda specjalna i tytuł BROKERA
ROKU 2015, przyznane przez GPW.

Finansowa Marka Roku: wyrazista mlogo_FMR2018new.jpgarka promująca edukację, umocnienie pozycji lidera rynku kontraktów terminowych.

nagroda najlepszy dom maklerski 2015
Najwyższa ocena dla DM BOŚ w ankiecie czytelników Gazety Giełdy Parkiet 2015r.

Kontrakty CFD są złożonymi instrumentami i wiążą się z dużym ryzykiem szybkiej utraty środków pieniężnych z powodu dźwigni finansowej. 81% rachunków inwestorów detalicznych odnotowuje straty w wyniku handlu kontraktami CFD u niniejszego dostawcy. Zastanów się, czy rozumiesz, jak działają kontrakty CFD, i czy możesz pozwolić sobie na wysokie ryzyko utraty pieniędzy.