[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 862

 
FOReignEXchange:

 

   Вам же надо было 5 минут?

   Вот так вроде должно работать. Каждые 5 минут будет перерисовка, если обнулить   необходимые параметры,  которые использует индикатор.


extern int timedraw=1; - это одна минута

в общем я с Вашей помощью сделал, что хотел, насчет тиков - да весьма не регулярно, но не критично, на истории не будет использоваться, это скрипт и индюк для ручной торговли

три экрана, вернее даже 4

ЗЫ: Ваш код - да действительно он полезнее для написания индикатора, который будет использоваться советником 

 
FOReignEXchange:

Только вот иногда тиков не бывает по три минуты, как щас. Смотрю на график GBPUSD M1, там 3-4 минуты тика не было.  А использовать TimeCurrent() на истории нельзя. Или в тестере тоже нельзя, так как это время текущее и оно не меняется.

 

По коду выше можно сказать, что сигнал сообщения будет не каждые 5 минут,  а каждые 5 баров на минутках.

 


datetime TimeCurrent( )

Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.

Замечание: при тестировании последнее известное время сервера моделируется.

Но все же, оно моделируется? Да - будет не точное с немаленькой, наверное, погрешностью, но использование на тесте возможно. Еслия я чего-то не знаю или не понимаю, буду благодарен если объясните.
 
usver:
Но все же, оно моделируется? Да - будет не точное с немаленькой, наверное, погрешностью, но использование на тесте возможно. Еслия я чего-то не знаю или не понимаю, буду благодарен если объясните.

Мне кажется Вы ошибаетесь. Погодите...

А, я вспомнил, время  TimeCurrent() нельзя использовать при пересчёте истории текущего графика. 

 Например, при присоединении  в данный момент следующего кода

                                      while(i>0)
                                      {
if (iHigh(NULL,0,i)>X)     
   {
   t=TimeCurrent();
   }
                                      i--
                                      }                                 

 будет запоминаться текущее реальное время, а не того i-го бара, где   iHigh(NULL,0,i)>X   

А в тестере я не знаю.  

 
FOReignEXchange:

Мне кажется Вы ошибаетесь. Погодите...

А, я вспомнил, время TimeCurrent() нельзя использовать при пересчёте истории текущего графика.

Например, при присоединении в данный момент следующего кода

будет запоминаться текущее реальное время, а не того i-го бара, где iHigh(NULL,0,i)>X

А в тестере я не знаю.

TimeCurrent() Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, и к i-му бару не имеет никакого отношения как в тестере, так и в демо и реале
 
FOReignEXchange:

Мне кажется Вы ошибаетесь. Погодите...

А, я вспомнил, время  TimeCurrent() нельзя использовать при пересчёте истории текущего графика. 

 Например, при присоединении  в данный момент следующего кода

 будет запоминаться текущее реальное время, а не того i-го бара, где   iHigh(NULL,0,i)>X   

А в тестере я не знаю.  


Да, это ясно. Меня просто смутила фраза, что TimeCurrent() нельзя использовать на истории и в тестере.

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

int time;
if (time==0)
   time=iTime(NULL,1,0); // Точка отсчета
if (TimeCurrent()-time>=300) // Проверяем сколько времени прошло - равно ли 5 минутам
   {
      // Выполняем, что хотели
      ...
      ...
      ...
      time=0;
    }

 Ваше решение мне показалось лучше, чем вышенаписанное.

 
И от меня тоже спасибо. Как говорится, все гениальное- просто.
keekkenen:
 
И от меня тоже спасибо. Как говорится, все гениальное- просто.
keekkenen:
 
Оказывается, все гениальное-просто. Спасибо  за Notepad.
keekkenen:
 
usver:

Следующий код не будет ошибочным? 

int time;

   int start()
   {

if (time==0)  time=iTime(NULL,1,0);    // Точка отсчета

if ((TimeCurrent()-time)>=300)        // Проверяем сколько времени прошло - равно ли 5 минутам
   {
      // Выполняем, что хотели
      ...
      ...
      ...
      time=0;
    }

   }

 

   int time; надо ставить выше начала старта, иначе time всегда будет равен нулю. И надо брать в скобки (TimeCurrent()-time)

  Остальное вроде всё. Не проверял.

 

как лучше сохранять важные данные/переменные на случай зависания терминала(перебоев с энергоснабжением)?

- глобальные переменные терминала? в файл?

- с какой периодичностью? (важно последнеее значение эквити и несколько флагов (bool) советника)