Напишем функцию, назвав её f_GetTypePosByMinLot(). Функция будет возвращать тип int, поскольку количество позиций целочисленно. У нашей функции будет два параметра:
sy - наименование инструмента ("" - любой символ, "0" - текущий символ);
mn - MagicNumber (-1 - любой магик).
Для первого параметра нужно будет предусмотреть возможность нахождения позиции, открытой минимальным размером лота и возвращение её типа не только по конкретном торговому инструменту, но и по любому из открытых позиций.
Второй параметр необходим всегда для четкой привязки данной процедуры поиска к конкретному торговому советнику. Поэтому данный параметр всегда должен присутствовать в создаваемых пользовательских торговых функциях.
В теле функции, как обычно в таких случаях, присутствует цикл перебора всех открытых позиций. Находится позиция, открытая с минимальным лотом и зарезервированной командой "OrderType()" присваивается возвращаемой функцией f_GetTypePosByMinLot() переменной, её значение, т.е. или "0" для операции покупка или "1" для операции "продажа". Если таковой позиции не найдено, то функция вернет значение "-1".
Сам код функции f_GetTypePosByMinLot() расположен ниже:
- Код: выделить все
int f_GetTypePosByMinLot(string sy, int mn)
{
/*
Описание : Возвращает тип операции (покупка или продажа)
позиции открытой с минимальным размером лота
Параметры:
sy - наименование инструмента ("" - любой символ,
"0" - текущий символ)
mn - MagicNumber (-1 - любой магик)
*/
double dbl_LotMin = 0;
int int_op = -1; // 0 - покупка, 1 - продажа
if(sy == "0") sy = Symbol();
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == sy || sy == "")
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(mn < 0 || OrderMagicNumber() == mn)
{
if(dbl_LotMin == 0 || dbl_LotMin > OrderLots())
{
dbl_LotMin = OrderLots();
int_op = OrderType();
}
}
}
}
}
}
return(int_op);
}
Получив значение от функции в виде возвращаемого значения int (-1, 0 или 1), разаработчик использует далее его согласно алгоритму программы в требуемых целях.