Скачать MetaTrader 5

Запуск функций в определенное время

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Novichok1988
65
Novichok1988 2012.01.28 09:59 

С запуском по времени не получается, пробую с учебника сделать совершение операции по времени, вроде всё правильно но советник не активный, например необходимо запустить функцию в 12.00

extern double Time_Cls=12.00;

int start()
{
int Cur_Hour=Hour();
double Cur_Min =Minute();
double Cur_time=Cur_Hour + Cur_Min100;
if (Cur_time==Time_Cls)
//моя функция
return;
}

Vadim Zhunko
5227
Vadim Zhunko 2012.01.28 14:51  

Вы пробывали это скомпилировать? Это не должно компилироваться. Ошибка есть.

Я бы так сделал:

extern datetime Time = D'2012.01.01 12:34'; 

 void start() 
  {
   if (TimeLocal() != Time) return;
   //мой код...
  }
По моему, так проще.
Alexey Navoykov
3996
Alexey Navoykov 2012.01.28 14:56  
Зацикливать нужно советник, чтобы не зависеть от прихода тиков.
Vladimir Gomonov
8283
Vladimir Gomonov 2012.01.28 15:31  
Zhunko:

Я бы так сделал:

По моему, так проще.


Будет запустаться на каждом тике между
D'2012.01.01 12:34:00'  и  D'2012.01.01 12:34:59'
Поэтому без дополнительного триггера не обойтись. Не буду до конца разжёвывать, дабы не отнимать радость творчеста.
Vadim Zhunko
5227
Vadim Zhunko 2012.01.28 15:46  
MetaDriver:
Будет запустаться на каждом тике между
Поэтому без дополнительного триггера не обойтись. Не буду до конца разжёвывать, дабы не отнимать радость творчеста.
Да, конечно, нужно. Это простая замена кода топика.
Novichok1988
65
Novichok1988 2012.01.28 15:46  
Zhunko:


Не компилируется терминалом, и при таком коде если и запуститься то только один раз 2012,01,01, а как можно сделать чтобы не опираться в коде на дату, а только на время и чтобы компилировалось конечно =)

И как вообще, понять где ошибка в пшп и дельфях пишет в какой строчке ошибка, а тут ваще пипец...

Novichok1988
65
Novichok1988 2012.01.28 15:50  
MetaDriver:
Будет запустаться на каждом тике между
Поэтому без дополнительного триггера не обойтись. Не буду до конца разжёвывать, дабы не отнимать радость творчеста.


это понятно, поставить флажок и всё, но вот не компилируется
Vadim Zhunko
5227
Vadim Zhunko 2012.01.28 15:53  

Так можно:

extern datetime Time = D'1970.01.01 12:00'; 

 void start() 
  {
   if (TimeLocal() % Time != 0) return;
   //мой код...
  }
И всё равно, нужна дополнительная переменная-триггер, чтобы по несколько раз не выполнялся код в течении дискрета времени.
Novichok1988
65
Novichok1988 2012.01.28 16:02  
Zhunko:


И всё равно, нужна дополнительная переменная-триггер, чтобы по несколько раз не выполнялся код в течении дискрета времени.

И все равно не работает советник не активный при запуске с таким кодом

extern datetime Time = D'1970.01.01 12:00'; 

void start() 
  {
   if (TimeLocal() % Time != 0) return;
Alert(TimeLocal());
  }
Vadim Zhunko
5227
Vadim Zhunko 2012.01.28 16:09  
Сегодня нет тиков. Советники без специальных средств не работают.
Vladislav Andruschenko
93951
Vladislav Andruschenko 2012.01.28 16:12  
если в инит поставить start(); пофиг на тики
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий