Help. MQL5 - котировки из истории.

 

Ребят, не удалось найти отдельную ветку для вопросов =(

Подскажите, как в советнике на MQL5 получить open котировки, взятой скажем из 15:43 ("сейчас", например, 17:00)? Не получается разобраться...

 

В общих чертах алгоритм таков:

  1. Найти  бар с нужным временем. Для этого запросить некоторое количество истории через функцию CopyRates. По полученному массиву пройтись и найти нужное или ближайшее время. Запомнить индекс элемента массива.
  2. Взять котировку Open по сохраненному индексу.
double GetOpenPriceByTime(datetime time)
{
   MqlRates rates[];
   
   int arraySize = CopyRates(_Symbol, PERIOD_CURRENT, time, time, rates);
   if (arraySize < 0)
      return 0.0;
      
   for (int i = 0; i < arraySize; i++)
      if (rates[i].time == time)
         return rates[i].open;
         
   return 0.0;
}

В данном случае функция GetOpenPriceByTime вернет 0.0, если в терминале нет сведений о баре с запрашиваемым временем открытия, но эти данные еще могут быть подгружены, или же если в принципе нет такого бара. Функцию еще можно доработать так, чтобы она возвращала цену открытия ближайшего бара.

Пользоваться так:

   datetime needTime = D'2015.12.15 16:00';
   Alert("Цена: ", GetOpenPriceByTime(needTime));

 

 

Круто! Спасибо) 

 
А какой функцией можно получить время закрытия последнего ордера?
 
pushik:
А какой функцией можно получить время закрытия последнего ордера?
Ордера или позиции? В MT5 ордерами называется то, что в МТ4 - отложенные ордера, а позиции - это рыночные ордера МТ4. Выходит, что закрыть ордер в МТ5 нельзя. Можно только отменить его. Или еще говорят "удалить".
 
Ihor Herasko:
Ордера или позиции? В MT5 ордерами называется то, что в МТ4 - отложенные ордера, а позиции - это рыночные ордера МТ4. Выходит, что закрыть ордер в МТ5 нельзя. Можно только отменить его. Или еще говорят "удалить".

Посмотреть была ли сегодня торговля можно? Т.е. не хочу торговать если депозит сегодня менялся) Ну или как то так

 
pushik:

Посмотреть была ли сегодня торговля можно? Т.е. не хочу торговать если депозит сегодня менялся) Ну или как то так

Тогда нужно смотреть список позиций. Смотрите в сторону функций HistoryDealsTotal(), HistoryDealSelect().

Смысл в том, чтобы перебрать список закрытых сделок за текущий день и выбрать самую последнюю. 

 

 Ihor Herasko:

Тогда нужно смотреть список позиций. Смотрите в сторону функций HistoryDealsTotal(), HistoryDealSelect().

Смысл в том, чтобы перебрать список закрытых сделок за текущий день и выбрать самую последнюю. 

 Большое спасибо! Все получилось =)