« Предыдущий пост | На главную страницу | Следующий пост »

OrderOpenTime() - время открытия ордера или позиции, выделенного функцией OrderSelect()

В прошлом выпуске мы посчитали прибыль по закрытым позициям. Теперь усложним задачу: сосчитаем прибыль только по закрытым позициям, которые были открыты сегодня.

С помощью функции OrderOpenTime() мы можем получить дату и время открытия ордера или позиции, выделенного предварительно с помощью функции OrderSelect().

   datetime OrderOpenTime()
  • В случае отложенного ордера функция OrderOpenTime() возвращает дату и время выставления ордера.
  • В случае открытой или закрытой позиции функция возвращает дату и время открытия позиции.

Для того, чтобы определить, что позиция открыта сегодня, нам нужно знать значение типа datetime для сегодняшней даты в 00:00:00 часов.

В этом нам помогут четыре новых функции:

  • datetime CurTime() - время прихода последней котировки в виде количества секунд, прошедших после 00:00 1 января 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:00 1 января 1970 года. Также мы помним, что в часе 60*60 секунд, а в минуте 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<HistoryTotal(); pos++ )
     {
       // выделим позицию
       if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY) == true)
         {
           // это не отложенный ордер?
           if ( OrderType() <= OP_SELL) 
             {
               // ордер был открыт сегодня?
               if (OrderOpenTime()>=day_start) profit += OrderProfit();
             }
         }
       else
           Print("Ошибка ", GetLastError(), " при выделении ордера ", OrderTicket());
     }
   Print("Суммарный профит по закрытым позициям = ", profit);

В следующем выпуске я продолжу рассмотрение торговых функций и расскажу о функции OrderLots().



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Разместите свой комментарий по теме "OrderOpenTime() - время открытия ордера или позиции, выделенного функцией OrderSelect()"

Подписаться на мою рассылку



Размещение статьи "OrderOpenTime() - время открытия ордера или позиции, выделенного функцией OrderSelect()" на Вашем сайте

Размещение статьи "OrderOpenTime() - время открытия ордера или позиции, выделенного функцией OrderSelect()" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "OrderOpenTime() - время открытия ордера или позиции, выделенного функцией OrderSelect()" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 3.31