Справка по языку MQL5 - страница 58

 
HideYourRichess >>:

ЗЫ. на всякий случай, я не теоретик программирования с мировым именем, по этому моё мнение можно не учитывать.

Дык я тоже чайнеГ ещё тот... )))


Однако моё понимание таково что описано выше.

В первом случае мы просто получаем что надо,

а во втором ещё и контролируем (или ожидаем) факт исполнения функции.

 
Я это понимаю. Мне эта концепция, когда это под одним именем проходит - ненравится.
 
nen писал(а) >>

Еще здесь необходимо задействовать функцию SeriesInfoInteger. Но эта функция выдает лонги, которые не преобразовываются во время. Поэтому не стал применять функцию SeriesInfoInteger в приведенном коде, как недоработанную.... И, как результат, получили нерабочий код. Без SeriesInfoInteger грамотно (без ошибки) не скопируешь, а SeriesInfoInteger не работает ...

В этом месте поподробнее. Покажите код, который иллюстрирует, что SeriesInfoInteger не работает. Кто и какую ошибку выдаёт?

 

stringo писал(а) >>

В этом месте поподробнее. Покажите код, который иллюстрирует, что SeriesInfoInteger не работает. Кто и какую ошибку выдаёт?

 

Странная ошибка: запрашиваемая история не найдена.

В терминал закачивается история минуток. Из минуток формируются все остальные таймфреймы.

То есть история минуток есть ВСЕГДА! А ошибка сообщает, что этой истории нет. Запрос-то делается о минутном таймфрейме хотя и на графике M3 ?

И вдобавок, каким образом значения BARS_FIRSTDATE и BARS_SERIES_FIRSTDATE, возвращаемые вышеозначенной функцией, из типа long перевести в datetime?

 
nen >>:
И вдобавок, каким образом значения BARS_FIRSTDATE и BARS_SERIES_FIRSTDATE, возвращаемые вышеозначенной функцией, из типа long перевести в datetime?

Попробуйте так -

void OnStart()
  {
//---
   Print("SeriesInfoInteger(Symbol(),0,BARS_COUNT) =",
         SeriesInfoInteger(Symbol(),0,BARS_COUNT));

   Print("SeriesInfoInteger(Symbol(),0,BARS_SERIES_FIRSTDATE) =",
         (datetime)SeriesInfoInteger(Symbol(),0,BARS_SERIES_FIRSTDATE));

   Print("SeriesInfoInteger(Symbol(),0,BARS_FIRSTDATE) =",
         (datetime)SeriesInfoInteger(Symbol(),0,BARS_FIRSTDATE));

   Print("SeriesInfoInteger(Symbol(),0,BARS_SYNCRONIZED) =",
         (bool)SeriesInfoInteger(Symbol(),0,BARS_SYNCRONIZED));

  }

Смотрите раздел "Справочник MQL5 / Основы языка / Типы данных / Приведение типов "

 
Тип long и datetime - это один и тот же тип, 8-байтовое целое. Разделение сделано в основном для функции Print, чтобы без лишних телодвижений распечатывать даты-время
 
Rosh писал(а) >>

Попробуйте так -

Смотрите раздел "Справочник MQL5 / Основы языка / Типы данных / Приведение типов "

Зачем переписывать те коды, которые я приводил и не отвечать на поставленные вопросы? Я же точно такие же коды запускал еще 01 октября и задал вопросы.
Спасибо, но я уже писал в этой ветке, что всю Справку прошерстил и не нашел как - см. ответ ниже для stringo.
stringo писал(а) >>
Тип long и datetime - это один и тот же тип, 8-байтовое целое. Разделение сделано в основном для функции Print, чтобы без лишних телодвижений распечатывать даты-время

Неужели? Теоретически так. Но практически у меня не получилось вывести полученные значения BARS_FIRSTDATE и BARS_SERIES_FIRSTDATE в формате даты. Сегодня еще попробую задать произвольное число типа лонг и вывести в формате даты - 2009 10.06 10:45.

 
nen писал(а) >>

Неужели? Теоретически так. Но практически у меня не получилось вывести полученные значения BARS_FIRSTDATE и BARS_SERIES_FIRSTDATE в формате даты. Сегодня еще попробую задать произвольное число типа лонг и вывести в формате даты - 2009 10.06 10:45.

Рашид выше показал, как пользоваться явным приведением типов.

 
stringo писал(а) >>

Рашид выше показал, как пользоваться явным приведением типов.

Спасибо. Попробую так. Я ранее пробовал примерно так:

long t;

SeriesInfoInteger(Symbol(),Period_M1,BARS_SERIES_FIRSTDATE,t));
Print("time =", (datetime)t);

=======

Ничего не получалось.

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

Причина обращения: