Как узнать время на дневном графике?

 

Добрый вечер!

Никак не могу достучаться до времени на дневном графике, точность не выше часа.

Прямое обращение выводит нули, так как график дневной.

Обращение iTime(NULL,PERIOD_H1,0) так же почему-то выводит нули. Объяснить не могу.

iTime("EURUSD",PERIOD_H1,0) с открытым еще одним график с часовым таймфреймом не помогает - выводит нули. Вероятно тестер моделирует только один график.

Comment (TimeToStr(TimeLocal(),TIME_SECONDS)); - так же выводит нули на тестере.

Задача взять время, моделируется дневной график, точность до часа. Чтобы работало на тестере. Есть ли хоть какая-нибудь возможность?

 
Aleks_:

Добрый вечер!

Никак не могу достучаться до времени на дневном графике, точность не выше часа.

Прямое обращение выводит нули, так как график дневной.

Обращение iTime(NULL,PERIOD_H1,0) так же почему-то выводит нули. Объяснить не могу.

iTime("EURUSD",PERIOD_H1,0) с открытым еще одним график с часовым таймфреймом не помогает - выводит нули. Вероятно тестер моделирует только один график.

Comment (TimeToStr(TimeLocal(),TIME_SECONDS)); - так же выводит нули на тестере.

Задача взять время, моделируется дневной график, точность до часа. Чтобы работало на тестере. Есть ли хоть какая-нибудь возможность?


А что дает TimeCurrent()
 

Всё работает

int start()
  {
//----
   datetime t=iTime(NULL,PERIOD_H1,0);
   Alert("Время открытия текущего часового бара ",TimeToStr(t,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
   Alert("Это ",TimeDayOfYear(t),"-ой день года, ",TimeHour(t),"-ый  час суток");
//----
   return(0);
  }

 

Спасибо за ответы.

То Vinin.

Эта функция тоже не работает. Выдает нули.

То Sepulca.

http://SSMaker.ru/a71945b9/

http://SSMaker.ru/cd0123a2/

Тоже самое.

Я так понимаю вы запускали на тестере с таймфреймом ниже дневного. Я запускаю на ДНЕВНОМ таймфрейме.

Фокус в том, что раз функция iTime(NULL,PERIOD_H1,0) не выдает нужного времени, то у меня сомнения, что тестер вообще правильно расчитывает все подобные функции.

 
Aleks_:

Спасибо за ответы.

То Vinin.

Эта функция тоже не работает. Выдает нули.

То Sepulca.

http://SSMaker.ru/a71945b9/

http://SSMaker.ru/cd0123a2/

Тоже самое.

Я так понимаю вы запускали на тестере с таймфреймом ниже дневного. Я запускаю на ДНЕВНОМ таймфрейме.

Фокус в том, что раз функция iTime(NULL,PERIOD_H1,0) не выдает нужного времени, то у меня сомнения, что тестер вообще правильно расчитывает все подобные функции.


А с какими параметрами Вы запускаете советника. Если по ценам открытия, то Вы можете получить только время открытия с соответствующего таймфрейма
 
Aleks_:

Я так понимаю вы запускали на тестере с таймфреймом ниже дневного. Я запускаю на ДНЕВНОМ таймфрейме.

Фокус в том, что раз функция iTime(NULL,PERIOD_H1,0) не выдает нужного времени, то у меня сомнения, что тестер вообще правильно расчитывает все подобные функции.

В тестере Alert() выводит в журнал, а не окно на экран.
 

Поэкспериментировал с таймфреймами.

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

Таким образом, если тестер генерирует таймфрейм например 4 часового графика, то любые обращение функций (типа iTime, iRSI и так далее скорее всего) НИЖЕ данного таймфрейма будут не ниже 4-ех часового. То есть если график дневной, то и ничего ниже дневного не генерируется в графике. Вот такая вот ерунда получается.

 
Vinin:

А с какими параметрами Вы запускаете советника. Если по ценам открытия, то Вы можете получить только время открытия с соответствующего таймфрейма


Тестер обрабатывает несколько дней. И за все время теста время не меняется.

artmedia70:
В тестере Alert() выводит в журнал, а не окно на экран.


А какая разница. Я вывел на экран. Не думаю что в журнале обработка происходит как-то иначе.

 
Aleks_:

Поэкспериментировал с таймфреймами.

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

Таким образом, если тестер генерирует таймфрейм например 4 часового графика, то любые обращение функций (типа iTime, iRSI и так далее скорее всего) НИЖЕ данного таймфрейма будут не ниже 4-ех часового. То есть если график дневной, то и ничего ниже дневного не генерируется в графике. Вот такая вот ерунда получается.


Не так, запустил в тестере на D1:

int oldbar;
int init()
  {
   oldbar=iBars(Symbol(),PERIOD_H1)-1;
   Print("Запускае на графике ",Period()," минут");
   return(0);
  }
int deinit() {return(0);}
int start()
  {
   if(oldbar!=iBars(Symbol(),PERIOD_H1)){
   datetime t=iTime(NULL,PERIOD_H1,0);
   Print("Номер бара ",iBars(Symbol(),PERIOD_H1)," Время открытия текущего часового бара ",TimeToStr(t,TIME_DATE|TIME_MINUTES|TIME_SECONDS)," Это ",TimeDayOfYear(t),"-ой день года, ",TimeHour(t),"-ый  час суток");
   oldbar=iBars(Symbol(),PERIOD_H1);
   }
   return(0);
  }
 

Даа ваша правда!

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

Мои извинения. Отнял время.

Тему можно закрывать.

 
А не тот ли Вы Алекс?
Причина обращения: