Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Делись ссылками на форуме. Теперь они имеют Rich Content!
Trader
384
Trader 2015.03.08 14:07 
не подскажите код строки открытия ордера например в 07:59:55 и закрытия ордера например в 10:05:05 (секунды обязательно)
Dmitiry Ananiev
6589
Dmitiry Ananiev 2015.03.08 20:46  

Для МТ4 

в OnTimer()

{

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

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

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

Комбинатор
15922
Комбинатор 2015.03.08 20:52  

dimeon:

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

Trader
384
Trader 2015.03.09 06:32  
для МТ5 можете написать код строки?
Artyom Trishkin
Модератор
75776
Artyom Trishkin 2015.03.09 10:35  
TheXpert:

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

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

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

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

Для Мт5  

OnTimer()
{

	MqlDateTime date;
	TimeToStruct(TimeCurrent(),date); 
	if (date.hour==7 && date.minute()==59 && date.seconds()==55) OpenBuy();
} 
Вообщем как то так. не проверял.
Sergey Eremin
4362
Sergey Eremin 2015.03.09 13:11  
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). Но это уже выходит за рамки этой ветки.
Trader
384
Trader 2015.03.09 13:22  
в МТ4 как написать эту часть кода?
Gulnaz Akhtyamova
10620
Gulnaz Akhtyamova 2015.03.09 14:26  
artmedia70:
А если брать локальное время с коррекцией по смещению? Сам не пробовал, а сейчас прям и некогда...
коррекция не нужна. просто берем локальное и будет правильно. не понравится - скорректирует время на компе) 
Gulnaz Akhtyamova
10620
Gulnaz Akhtyamova 2015.03.09 14:29  
tt455:
в МТ4 как написать эту часть кода?
в МТ4 самое надежное - перевод времени в секунды. т.е. разбить на дни, часы, минуты, секунды и сложить: день*24*60*60+час*60*60+минуты*60+секунды и сравниваем с тем что надо, используем iHour, iMinute и т.д. Используем также локальное время компа.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий