Вот так вроде должно работать. Каждые 5 минут будет перерисовка, если обнулить необходимые параметры, которые использует индикатор.
extern int timedraw=1; - это одна минута
в общем я с Вашей помощью сделал, что хотел, насчет тиков - да весьма не регулярно, но не критично, на истории не будет использоваться, это скрипт и индюк для ручной торговли
три экрана, вернее даже 4
ЗЫ: Ваш код - да действительно он полезнее для написания индикатора, который будет использоваться советником
Только вот иногда тиков не бывает по три минуты, как щас. Смотрю на график 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
А, я вспомнил, время TimeCurrent() нельзя использовать при пересчёте истории текущего графика.
Например, при присоединении в данный момент следующего кода
будет запоминаться текущее реальное время, а не того i-го бара, где iHigh(NULL,0,i)>X
А в тестере я не знаю.
TimeCurrent() Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, и к i-му бару не имеет никакого отношения как в тестере, так и в демо и реале
А, я вспомнил, время 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;
}
Ваше решение мне показалось лучше, чем вышенаписанное.
int time;
int start()
{
if (time==0) time=iTime(NULL,1,0); // Точка отсчетаif ((TimeCurrent()-time)>=300) // Проверяем сколько времени прошло - равно ли 5 минутам
{
// Выполняем, что хотели
...
...
...
time=0;
}
}
int time; надо ставить выше начала старта, иначе time всегда будет равен нулю. И надо брать в скобки (TimeCurrent()-time)
Вам же надо было 5 минут?
Вот так вроде должно работать. Каждые 5 минут будет перерисовка, если обнулить необходимые параметры, которые использует индикатор.
extern int timedraw=1; - это одна минута
в общем я с Вашей помощью сделал, что хотел, насчет тиков - да весьма не регулярно, но не критично, на истории не будет использоваться, это скрипт и индюк для ручной торговли
три экрана, вернее даже 4
ЗЫ: Ваш код - да действительно он полезнее для написания индикатора, который будет использоваться советником
Только вот иногда тиков не бывает по три минуты, как щас. Смотрю на график GBPUSD M1, там 3-4 минуты тика не было. А использовать TimeCurrent() на истории нельзя. Или в тестере тоже нельзя, так как это время текущее и оно не меняется.
По коду выше можно сказать, что сигнал сообщения будет не каждые 5 минут, а каждые 5 баров на минутках.
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
Замечание: при тестировании последнее известное время сервера моделируется.
Но все же, оно моделируется? Да - будет не точное с немаленькой, наверное, погрешностью, но использование на тесте возможно. Еслия я чего-то не знаю или не понимаю, буду благодарен если объясните.
Мне кажется Вы ошибаетесь. Погодите...
А, я вспомнил, время TimeCurrent() нельзя использовать при пересчёте истории текущего графика.
Например, при присоединении в данный момент следующего кода
будет запоминаться текущее реальное время, а не того i-го бара, где iHigh(NULL,0,i)>X
А в тестере я не знаю.
Мне кажется Вы ошибаетесь. Погодите...
А, я вспомнил, время TimeCurrent() нельзя использовать при пересчёте истории текущего графика.
Например, при присоединении в данный момент следующего кода
будет запоминаться текущее реальное время, а не того i-го бара, где iHigh(NULL,0,i)>X
А в тестере я не знаю.
Мне кажется Вы ошибаетесь. Погодите...
А, я вспомнил, время TimeCurrent() нельзя использовать при пересчёте истории текущего графика.
Например, при присоединении в данный момент следующего кода
будет запоминаться текущее реальное время, а не того i-го бара, где iHigh(NULL,0,i)>X
А в тестере я не знаю.
Да, это ясно. Меня просто смутила фраза, что TimeCurrent() нельзя использовать на истории и в тестере.
Следующий код не будет ошибочным? Моделируется время прихода последней котировки и мы его используем.
Ваше решение мне показалось лучше, чем вышенаписанное.
Следующий код не будет ошибочным?
int time; надо ставить выше начала старта, иначе time всегда будет равен нулю. И надо брать в скобки (TimeCurrent()-time)
Остальное вроде всё. Не проверял.
как лучше сохранять важные данные/переменные на случай зависания терминала(перебоев с энергоснабжением)?
- глобальные переменные терминала? в файл?
- с какой периодичностью? (важно последнеее значение эквити и несколько флагов (bool) советника)