Funkcje transakcji:   OrderCloseBy()

Funkcja bool OrderCloseBy() zamyka jedną otwartą pozycję za pomocą innej pozycji otwartej w przeciwnym kierunku. Takie zamknięcie spowoduje naliczeniu spread-u tylko dla jednej pozycji. Zwraca true jeśli operacja się powiodła lub false jeśli nie. Więcej informacji można znaleźć w specyfikacji MQL4.

OrderCloseBy(ticket, opposite, arrow_color);
int ticket - unikalny numer (ticket) otwartej pozycji.
int opposite - unikalny numer (ticket) pozycji otwartej w przeciwnym kierunku.
color arrow_color - kolor strzałki na wykresie. Jeśli argument jest pusty lub równy CLR_NONE , to strzałka na wykresie nie jest wyświetlana.

int ticket - unikalny numer (ticket) otwartej pozycji.

int opposite - unikalny numer (ticket) pozycji otwartej w przeciwnym kierunku.

color arrow_color - kolor strzałki na wykresie. Jeśli argument jest pusty lub równy CLR_NONE , to strzałka na wykresie nie jest wyświetlana.


Przykład 1

#property strict
void OnStart()
  {
   int Ticket   = 0;
   int Opposite = 0;

   for(int i = OrdersTotal()-1; i >= 0; i--)
     {
      //--- wybrać pozycję/zlecenie z indeksem "i"
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
        {
         //--- wybrać otwartą pozycję na sprzedaż
         if(OrderType() == OP_SELL)
            //--- zmiennej Ticket przypisać unikalny numer (ticket)
            Ticket = OrderTicket();

         //--- wybrać otwartą pozycję na kupno
         if(OrderType() == OP_BUY)
            //--- zmiennej Opposite przypisać unikalny numer (ticket)
            Opposite = OrderTicket();
        }
     }

//--- zamknąć dwie przeciwne pozycje
   if(OrderCloseBy(Ticket, Opposite) == true)
      Print("Zamknięcie pozycji ",Ticket," i ",Opposite," powiodło się.");
   else
      Print("Nie udało się zamknąć pozycje ",Ticket," i ",Opposite,
            ". Błąd nr = ",GetLastError());
  }

Rys. 1. Przykład stosowania funkcji OrderCloseBy().