Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Запусти агентов на свободном компьютере. Это принесет доход!
Роман Стар
170
Роман Стар 2014.06.11 15:16 

Приветствую.

Как запрограммировать советника, чтобы тот начинал выполнение своих функций (например, выводил Alert) не с поступлением нового тика, а каждую секунду (постоянно). 

Пользуюсь функцией start (). Есть условие, что если время сервера == 12:35, то выполняем открытия ордера.
Но, например, акция #GOOG может по несколько минут просто стоять, без поступления новых тиков. Следовательно, условие (время = 12:35) проскакивает и ордер не открывается.

Как мне "сказать" советнику, чтобы он обновлялся каждый миг (секунду или меньше), не зависимо от того, пришла новая котировка или нет? Если такое возможно? :)
Какие варианты есть? 

o_O
Модератор
23472
o_O 2014.06.11 15:20  

lelectrohardl:

Какие варианты есть? 

- бесконечный цикл

- отправка события тика на winapi своему чарту эксперта

Anatoli Kazharski
53779
Anatoli Kazharski 2014.06.11 15:21  
lelectrohardl:

Приветствую.

Как запрограммировать советника, чтобы тот начинал выполнение своих функций (например, выводил Alert) не с поступлением нового тика, а каждую секунду (постоянно). 

Пользуюсь функцией start (). Есть условие, что если время сервера == 12:35, то выполняем открытия ордера.
Но, например, акция #GOOG может по несколько минут просто стоять, без поступления новых тиков. Следовательно, условие (время = 12:35) проскакивает и ордер не открывается.

Как мне "сказать" советнику, чтобы он обновлялся каждый миг (секунду или меньше), не зависимо от того, пришла новая котировка или нет? Если такое возможно? :)
Какие варианты есть? 


Вот эту функцию посмотрите: EventSetTimer(). В описании всё сказано.
Vitalie Postolache
11628
Vitalie Postolache 2014.06.11 15:31  

EventSetTimer() - в инит

EventKillTimer() - в деинит

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

Можно просто условие поменять, 12:34<время<12:36.

Роман Стар
170
Роман Стар 2014.06.11 15:34  
evillive:

EventSetTimer() - в инит

EventKillTimer() - в деинит

в теле функции OnTimer() прописывать действия, которые надо повторять с заданной периодичностью, проверку времени, например. Время лучше брать своё, а не серверное, которое без прихода тика не обновляется. Но если тика не будет, как ордер откроется-то?

Можно просто условие поменять, 12:35<время<12:36.

Свое время это TimeCurrent() ?

P.S. TimeLocal(), нашел 

Роман Стар
170
Роман Стар 2014.06.11 15:34  
Сейчас попробую, спасибо.
Роман Стар
170
Роман Стар 2014.06.11 16:03  
Супер супер! Все работает как часы! Мануал помог, отозвавшимся спасибо! :)
Роман Стар
170
Роман Стар 2014.06.13 05:28  

А как заставить функцию OnTimer() в тестере работать?

МТ4 Билд 646. 

Victor Nikolaev
Модератор
14211
Victor Nikolaev 2014.06.13 05:36  
lelectrohardl:

А как заставить функцию OnTimer() в тестере работать?

МТ4 Билд 646. 


В тестере никак
Vasyl Nosal
18346
Vasyl Nosal 2014.06.13 15:35  
evillive:

EventKillTimer() - в деинит



Зачем?

Vitalie Postolache
11628
Vitalie Postolache 2014.06.13 15:57  
eevviill:


Зачем?

согласно справке, чтоб было )
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий