Funkcje transakcji:   OrderType()

Funkcja int OrderType() zwraca typ operacji handlowej pozycji/zlecenia. Operacja możne być jedną z następujących stałych:

  • OP_BUY                  - kupić po bieżącej cenie rynkowej Ask ,
  • OP_SELL               - sprzedać po bieżącej cenie rynkowej Bid .
  • OP_BUYLIMIT     - umieścić zlecenie kupna poniżej bieżącej ceny rynkowej,
  • OP_SELLLIMIT  - umieścić zlecenie sprzedaży powyżej bieżącej ceny rynkowej,
  • OP_BUYSTOP       - umieścić zlecenie kupna powyżej bieżącej ceny rynkowej
  • OP_SELLSTOP    - umieścić zlecenie sprzedaży poniżej bieżącej ceny rynkowej.
  • OP_BUY - kupić po bieżącej cenie rynkowej Ask ,
  • OP_SELL - sprzedać po bieżącej cenie rynkowej Bid .
  • OP_BUYLIMIT - umieścić zlecenie kupna poniżej bieżącej ceny rynkowej,
  • OP_SELLLIMIT - umieścić zlecenie sprzedaży powyżej bieżącej ceny rynkowej,
  • OP_BUYSTOP - umieścić zlecenie kupna powyżej bieżącej ceny rynkowej
  • OP_SELLSTOP - umieścić zlecenie sprzedaży poniżej bieżącej ceny rynkowej.

Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

#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 2

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());
           }
  }