1. сколько установлено ордеров на текущем торговом активе или на всех активах;
2. сколько установлено ордеров любого типа или определенного типа;
3. сколько установлено ордеров конкретным советником (скриптом) или установленных любым способом (вручную и без идентификационного номера);
Чтобы иметь возможность данной конкретизации при получении информации об установленных ордерах напишем функцию для получения количества ордеров и будем передавать в неё три параметра:
1. наименование актива;
2. тип торговой операции (тип ордера) ;
3. Мэджик намбер (идентификационный номер советника / скрипта, который устанавливал ордера).
- Код: выделить все
int f_GetNumberOfOrders(string sy, int op, int mn)
{
/*
Описание : Возвращает количество ордеров.
Параметры:
sy - наименование инструмента ("" - любой символ,
"0" - текущий символ)
op - операция (-1 - любой ордер)
mn - MagicNumber (-1 - любой магик)
*/
int int_N = 0; // кол-во ордеров
if(sy == "0") sy = _Symbol;
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() > 1 && OrderType() < 6)
{
if((OrderSymbol() == sy || sy == "") && (op < 0 || OrderType() == op))
{
if(mn < 0 || OrderMagicNumber() == mn) int_N++;
}
}
}
}
return(int_N);
}
Итак, данная функция выполняет все поставленные задачи по нахождению количества установленных ордеров. Сторонних функций эта функция не использует, поэтому может быть применена в коде сама по себе.