С помощью функции OrderOpenTime() мыможем получить дату ивремя открытия ордера или позиции, выделенного предварительно спомощью функции OrderSelect().
datetime OrderOpenTime()
- В случае отложенного ордера функция OrderOpenTime() возвращает дату ивремя выставления ордера.
- В случае открытой или закрытой позиции функция возвращает дату ивремя открытия позиции.
Для того, чтобы определить, что позиция открыта сегодня, нам нужно знать значение типа datetime для сегодняшней даты в00:00:00часов.
В этом нам помогут четыре новых функции:
- datetime CurTime() время прихода последней котировки ввиде количества секунд, прошедших после 00:001января 1970года;
- int TimeHour(datetime time) возвращает порядковый номер часа для времени time;
- int TimeMinute(datetime time) возвращает порядковый номер минуты для времени time;
- int TimeSeconds(datetime time) возвращает количество секунд сначала минуты для времени time.
Например, для 02:16:05функции TimeHour, TimeMinute иTimeSeconds вернут соответственно 2,16и5.
Мы помним, что значение типа datetime представляет собой количество секунд, прошедшее с00:001января 1970года. Также мыпомним, что вчасе 6060секунд, авминуте 60секунд. Поэтому, зная текущее время (мыможем получить его спомощью CutTime), мыможем получить время текущего дня на00:00:00часов:
int c_time = CurTime();
datetime day_start;
day_start=c_time-TimeHour(c_time)*60*60-TimeMinute(c_time)*60-TimeSeconds(c_time);
А полный код, который подсчитывает прибыль повсем закрытым позициям, которые открыты сегодня, будет таким:
//---- вычислим начало дня - переменная day_start
int c_time = CurTime();
datetime day_start;
day_start=c_time-TimeHour(c_time)*60*60-TimeMinute(c_time)*60-TimeSeconds(c_time);
//---- подсчитаем прибыль
int profit = 0;
int pos;
for ( pos = 0; pos=day_start) profit += OrderProfit();
}
}
else
Print("Ошибка ", GetLastError(), " при выделении ордера ", OrderTicket());
}
Print("Суммарный профит по закрытым позициям = ", profit);
Перейти к главе «
функция OrderMagicNumber».