Функции определения последнего лота
Функция определения последнего лота в истории ордеров
Функция определяет, каким лотом был совершен последний лот в истории. Применяется, например, при увеличении следующего объема лота при предыдущем убытке.
double FindLastLots()
{
double oldlots;
int oldticket;
ticket=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
oldticket=OrderTicket();
if(oldticket>ticket)
{
oldlots= OrderLots();
ticket = oldticket;
}
}
}
}
return(oldlots);
}
Функция определения последнего лота в открытых ордерах
Функция отличается не много. Вместо OrdersHistoryTotal() — общее количество ордеров в истории, пишем OrdersTotal() — общее количество ордеров в рынке (отложенные ордера тоже считаются). Также меняем аргументы в функции OrderSelect() — вместо MODE_HISTORY пишем MODE_TRADES, т.е. выбираем ордер среди открытых и отложенных:
double FindLastLots()
{
double oldlots;
int oldticket;
ticket=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
oldticket=OrderTicket();
if(oldticket>ticket)
{
oldlots= OrderLots();
ticket = oldticket;
}
}
}
}
return(oldlots);
}
Прекрасно работает! Отлично сделано!