Funkcja int OrderType() zwraca typ operacji handlowej pozycji/zlecenia. Operacja możne być jedną z następujących stałych:
Więcej informacji można znaleźć w specyfikacji MQL4.
#property strict void OnStart() { int Ticket = 130580160; // unikalny numer (ticket) zlecenia //--- przeszukać listę otwartych pozycji/oczekujących zleceń //--- oraz historię zamkniętych pozycji/usuniętych zleceń //--- i wybrać do dalszego przetwarzania if(OrderSelect(Ticket, SELECT_BY_TICKET) == true) { //--- zmiennej CurrentType przypisać typ operacji handlowej1 ENUM_ORDER_TYPE CurrentType = (ENUM_ORDER_TYPE)OrderType(); //--- przekonwertować do wartości tekstowej string CurrentTypeString = EnumToString(CurrentType); //--- wyświetlić dane Print("Typ operacji handlowej zlecenia ",Ticket," = ",CurrentTypeString,"."); } else Print("Nie udało się wybrać zlecenie ",Ticket,". Błąd = ",GetLastError()); }
Rys. 1. Przykład stosowania funkcji OrderType().
Funkcja może być stosowana, np. do filtrowania pozycji/zleceń na podstawie ich typów, w celu ich dalszego przetwarzania.
Przykład skryptu na zamknięcie wszystkich otwartych pozycji na sprzedaż OP_SELL.
#property strict void OnStart() { for(int i = OrdersTotal()-1; i >= 0; i--) //--- wybrać pozycję/zlecenie z indeksem "i" if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) //--- wybrać tylko otwartą pozycję na sprzedaż if(OrderType() == OP_SELL) { //--- odświeżyć notowania RefreshRates(); //--- zamknąć wybraną pozycję if(OrderClose(OrderTicket(), // funkcja OrderTicket() znajdzie unikalny numer (ticket) pozycji OrderLots(), // funkcja OrderLots() znajdzie ilość lotów tej pozycji Ask, // aktualna cena kupna 50) // poślizg cenowy, w punktach == false) //--- wyświetlić informację jeśli nie uda się zamknąć pozycję Print("Nie udało się zamknąć pozycję ",OrderTicket(), ". Błąd nr = ",GetLastError()); } }