функция открытия и закрытия ордера по времени

 
не подскажите код строки открытия ордера например в 07:59:55 и закрытия ордера например в 10:05:05 (секунды обязательно)
 

Для МТ4 

в OnTimer()

{

if (Hour()==7 && Minute()==59 && Seconds()==55) OpenBuy()

Соответсвенно задать период таймера в 333 мс.  

Для МТ5 - почитай справку. Там вообщем похоже. Только надо вызвать структуру времени.  

 

dimeon:

Только еще нужно учитывать что серверное время обновляется только с приходом котировок. Нет котировок -- нет времени. В МТ5 на этот случай есть моделируемое серверное время.

 
для МТ5 можете написать код строки?
 
TheXpert:

Только еще нужно учитывать что серверное время обновляется только с приходом котировок. Нет котировок -- нет времени. В МТ5 на этот случай есть моделируемое серверное время.

А если брать локальное время с коррекцией по смещению? Сам не пробовал, а сейчас прям и некогда...
 
TheXpert:

Только еще нужно учитывать что серверное время обновляется только с приходом котировок. Нет котировок -- нет времени. В МТ5 на этот случай есть моделируемое серверное время.

Именно поэтому используем OnTimer(). Если торговля закрыта, то открыть ордер никак не получится.
 

Для Мт5  

OnTimer()
{

	MqlDateTime date;
	TimeToStruct(TimeCurrent(),date); 
	if (date.hour==7 && date.minute()==59 && date.seconds()==55) OpenBuy();
} 
Вообщем как то так. не проверял.
 
dimeon:

Для Мт5  

Вообщем как то так. не проверял.
Думаю, имелось в виду не только "нет котировок - нет торговли"*, но и то, что TimeCurrent() в таком случае будет возвращать последнее известное серверное время. Следовательно, не важно что используется OnTimer, т.к. проверки всё равно не выполнятся. С учётом этого Ваш пример следует немножечко изменить (на применение функции TimeTradeServer()):
OnTimer()
{

        MqlDateTime date;
        TimeToStruct(TimeTradeServer(),date); 
        if (date.hour==7 && date.minute()==59 && date.seconds()==55) OpenBuy();
} 


* Что, кстати, не совсем всегда верно. Например, ночью котировки по некоторому символу могут поступать нечасто, но торговля всё равно будет доступна, если эти котировки не будут старше xx секунд (брокер может задать через сколько секунд будем получать гарантированный ответ off qoute). Но это уже выходит за рамки этой ветки.
 
в МТ4 как написать эту часть кода?
 
artmedia70:
А если брать локальное время с коррекцией по смещению? Сам не пробовал, а сейчас прям и некогда...
коррекция не нужна. просто берем локальное и будет правильно. не понравится - скорректирует время на компе) 
 
tt455:
в МТ4 как написать эту часть кода?
в МТ4 самое надежное - перевод времени в секунды. т.е. разбить на дни, часы, минуты, секунды и сложить: день*24*60*60+час*60*60+минуты*60+секунды и сравниваем с тем что надо, используем iHour, iMinute и т.д. Используем также локальное время компа.
Причина обращения: