Funkcja int PositionTicketByLot() zwraca ticket otwartej pozycji z określonym wolumenem transakcji. Ma następujące argumenty:
f_symbol - nazwa instrumentu finansowego. Wartość domyślna = "", tj. wszystkie instrumenty. W przypadku _Symbol funkcja zwróci ticket pozycji dla instrumentu finansowego tego wykresu notowań, gdzie program MQL4 zostanie uruchomiony.
f_cmd - typ pozycji. Wartość domyślna = -1, tj. wszystkie otwarte pozycje typu OP_BUY i OP_SELL .
f_magic - identyfikator (magic number). Wartość domyślna = -1, tj. wszystkie pozycje.
f_lotMin i f_lotMax - dolna i górna granice filtru wolumenu transakcji. Wartości domyślne = 0, tj. wszystkie pozycje. Uwzględnia się tylko te pozycje, które znajdują się między tymi wartościami lub są im równe.
Jeśli żądana pozycja nie istnieje, funkcja zwróci -1.
int PositionTicketByLot(string f_symbol="", // instrument finansowy int f_cmd=-1, // typ pozycji int f_magic=-1, // identyfikator double f_lotMin=0, // dolna granica wolumenu double f_lotMax=0) // górna granica wolumenu { int f_ticket=-1; //--- double f_min=MathMin(NormalizeDouble(f_lotMin,2), NormalizeDouble(f_lotMax,2)); double f_max=MathMax(NormalizeDouble(f_lotMin,2), NormalizeDouble(f_lotMax,2)); //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { int f_type=OrderType(); if(f_type==OP_BUYLIMIT || f_type==OP_SELLLIMIT || f_type==OP_BUYSTOP || f_type==OP_SELLSTOP) continue; //--- if((f_symbol==OrderSymbol() || f_symbol=="") && (f_cmd==OrderType() || f_cmd==-1) && (f_magic==OrderMagicNumber() || f_magic==-1) && ((f_min<=OrderLots() && OrderLots()<=f_max) || (f_lotMin==0 && f_lotMax==0))) return OrderTicket(); } return f_ticket; }
1) Znaleźć ticket otwartej pozycji dla EURUSD, na sprzedaż, z identyfikatorem 12345 i z wolumenem w zakresie od 0.01 do 0.05:
PositionTicketByLot("EURUSD", OP_SELL, 12345, 0.01, 0.05);
2) Znaleźć ticket otwartej pozycji dla EURUSD dowolnego typu, z dowolnym identyfikatorem i z wolumenem w zakresie od 0.01 do 0.05:
PositionTicketByLot("EURUSD", -1, -1, 0.01, 0.05);
3) Znaleźć ticket otwartej pozycji wśród wszystkich instrumentów finansowych, dowolnego typu, z dowolnym identyfikatorem i wolumenem 0.01:
PositionTicketByLot("", -1, -1, 0.01, 0.01);