Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Trader
387
Trader  
не подскажите код строки открытия ордера например в 07:59:55 и закрытия ордера например в 10:05:05 (секунды обязательно)
Dmitiry Ananiev
8892
Dmitiry Ananiev  

Для МТ4 

в OnTimer()

{

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

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

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

Комбинатор
16619
Комбинатор  

dimeon:

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

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

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

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

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

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

Для Мт5  

OnTimer()
{

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