Każdego tygodnia średnio trzy do pięciu osób odsyłam do zajrzenia w kod któregoś z moich wskaźników w celu wydobycia funkcji countOrders, służącej do łatwego i szybkiego sprawdzania liczby otwartych pozycji – najwyższa więc pora wrzucić tę funkcję do Repozytorium kodu na tym blogu, najpierw jednak o tym, dlaczego używać mojej funkcji, zamiast OrdersTotal().
Problem z OrdersTotal jest taki, że nie oferuje ona filtrowania zleceń, a jedynie zwraca ilość zleceń w tablicy zleceń, przez co trzeba za każdym razem sprawdzać typ i magic number zlecenia. countOrders rozwiązuje ten problem elegancko i skutecznie pozwalając na elastyczny wybór dokładnie tych zleceń, jakie chcemy policzyć.
int countOrders(int oMagic,int oType) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { if(OrderMagicNumber()==oMagic) { if(OrderSymbol()==Symbol()) { if(OrderType()==oType || oType<0) { count++; } } } } } return(count); }
Funkcja przyjmuje dwa argumenty – oMagic, czyli magic number zleceń które chcemy policzyć oraz oType, czyli typ zlecenia wg notacji stałych MQLa (OP_BUY, OP_SELL itd). Aby policzyć liczbę wszystkich zleceń z danym magic number wystarczy podać wartość ujemną w parametrze oType.
Autor: Łukasz Tomaszkiewicz