Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени торговать самому? Подпишись на сигнал!
pushik
17
pushik 2015.12.16 01:33 

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

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

Ihor Herasko
8633
Ihor Herasko 2015.12.16 08:27  

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

  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
17
pushik 2015.12.17 00:31  

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

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

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

Ihor Herasko
8633
Ihor Herasko 2015.12.17 14:27  
pushik:

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

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

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

pushik
17
pushik 2015.12.18 04:10  

 Ihor Herasko:

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

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

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

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий