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.
#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().