Igor Makanu, MakarFX, Кто же из вас прав? Давайте попробуем найти описание и выяснить. Когда-то видел, но целый день не могу найти.ольше времени чем пауза между тиками?
я прав
проверьте самостоятельно, это не сложно - эксперт, в котором таймер, в таймере цикл, ну пусть на 100 000 итераций и в теле цикла Sleep(1), получим 100 секунд , в OnTick() напишите Print("Tick")
и второй эксперт на второй график в котором в OnTick() напишите Print("Tick")
первый эксперт будет молчать 100 секунд, и не факт, что успеет написать в лог по приходу нового тика - если опять запустится таймер
или поиском по форуму - у меня поиск работает так же как у Вас
Andrey Sokolov:
Еще подскажите, пожалста: если терминале несколько советников, то в каком порядке они будут обрабатывать тики, если их обработка занимает больше времени чем пауза между тиками?
ни в каком
каждый эксперт работает в своем потоке, т.е. они все работают параллельно не зависят друг от друга и получают сообщения одновременно от терминала
" Программа получает события только от графика, на котором она запущена. Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событиеNewTickлибо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событиеChartEventили такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событиеTimer, то новое событие таймера не ставится в очередь. "
Из этого, как я понимаю, новое событие будет пропущено если оно выполняется или уже в очереди, иначе выполнится или будет поставлено в очередь. Из этого следует:
" если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено " - оно будет пропущено только если это такое-же событие.
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
используйте стандартную схему для различных торговых панелей - обработка сообщений мышки в OnChartEvent() , а в OnTick() работа по приходу тика - у всех так работает и проблем не бывает
если используете супер тяжелые вычисления в OnTick() - попробуйте вынести их в индикатор
а таймер, имхо, много синхронизаций нужно с окружением терминала, если уж совсем без таймера никак - то по выходу из таймера вызывайте OnTick()
ЗЫ: МТ4 довольно шустро сейчас работает, нужно еще постараться пропускать тики )))
" Программа получает события только от графика, на котором она запущена. Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событиеNewTickлибо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событиеChartEventили такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событиеTimer, то новое событие таймера не ставится в очередь. "
Из этого, как я понимаю, новое событие будет пропущено если оно выполняется или уже в очереди, иначе выполнится или будет поставлено в очередь. Из этого следует:
" если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено " - оно будет пропущено только если это такое-же событие.
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
если я не прав - поправьте
а за что боремся? правила понятны. если нужен каждый тик, то тупо на стороннем индикаторе их можно получать и писать в массив, в советнике после расчета тягать этот массив и сравнивать. Это даже не вопрос времени исполнения торговых операций.
Всем добрый день. Допиливаю свою Грааль машину;-) и понимаю что на сейчас там сопровождение сделок только одно-это трал по параболику. Этого же нереально мало((((( У кого есть функция трала по фракталам? Поделитесь пожалуйста кодом. И есть ли у кого-нибудь функция закрытия ордера по обратному сигналу стохастика. То есть допустим открылся бай ордер- идёт прибыль и когда стохастик выходит из своей зоны перекуплености тоордер закрывается- если по нему прибыль, а в Грааль машине по другому же не бывает;-) Поделитесь кодом по братски пожалуйста, не жопьтесь …
Многофункциональный трал, с массой настроек и огромными возможностями. Может тралить по пунктам, по свечам, по фракталам, по индикаторам ATR и Parabolic.
Igor Makanu, MakarFX, Кто же из вас прав? Давайте попробуем найти описание и выяснить. Когда-то видел, но целый день не могу найти.ольше времени чем пауза между тиками?
я прав
проверьте самостоятельно, это не сложно - эксперт, в котором таймер, в таймере цикл, ну пусть на 100 000 итераций и в теле цикла Sleep(1), получим 100 секунд , в OnTick() напишите Print("Tick")
и второй эксперт на второй график в котором в OnTick() напишите Print("Tick")
первый эксперт будет молчать 100 секунд, и не факт, что успеет написать в лог по приходу нового тика - если опять запустится таймер
или поиском по форуму - у меня поиск работает так же как у Вас
Еще подскажите, пожалста: если терминале несколько советников, то в каком порядке они будут обрабатывать тики, если их обработка занимает больше времени чем пауза между тиками?
ни в каком
каждый эксперт работает в своем потоке, т.е. они все работают параллельно не зависят друг от друга и получают сообщения одновременно от терминала
https://docs.mql4.com/ru/runtime/running
" Программа получает события только от графика, на котором она запущена. Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событие NewTick либо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событие Timer, то новое событие таймера не ставится в очередь. "
Из этого, как я понимаю, новое событие будет пропущено если оно выполняется или уже в очереди, иначе выполнится или будет поставлено в очередь. Из этого следует:
" если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено " - оно будет пропущено только если это такое-же событие.
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
если я не прав - поправьте
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
используйте стандартную схему для различных торговых панелей - обработка сообщений мышки в OnChartEvent() , а в OnTick() работа по приходу тика - у всех так работает и проблем не бывает
если используете супер тяжелые вычисления в OnTick() - попробуйте вынести их в индикатор
а таймер, имхо, много синхронизаций нужно с окружением терминала, если уж совсем без таймера никак - то по выходу из таймера вызывайте OnTick()
ЗЫ: МТ4 довольно шустро сейчас работает, нужно еще постараться пропускать тики )))
Andrey Sokolov:
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
если я не прав - поправьте
У меня идет расчет лота с учетом спреда и ограничением его расширения. Были открытия сделок с нарушением ограничений.
После того как я поставил OnTimer() перед OnTick() и запустил EventSetMillisecondTimer(100) пока ошибок не было.
Я не программист...все методом тыка)))
https://docs.mql4.com/ru/runtime/running
" Программа получает события только от графика, на котором она запущена. Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событие NewTick либо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событие Timer, то новое событие таймера не ставится в очередь. "
Из этого, как я понимаю, новое событие будет пропущено если оно выполняется или уже в очереди, иначе выполнится или будет поставлено в очередь. Из этого следует:
" если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено " - оно будет пропущено только если это такое-же событие.
Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.
если я не прав - поправьте
а за что боремся? правила понятны. если нужен каждый тик, то тупо на стороннем индикаторе их можно получать и писать в массив, в советнике после расчета тягать этот массив и сравнивать. Это даже не вопрос времени исполнения торговых операций.
Либо задачу не до понимаю.
Всем добрый день. Допиливаю свою Грааль машину;-) и понимаю что на сейчас там сопровождение сделок только одно-это трал по параболику. Этого же нереально мало((((( У кого есть функция трала по фракталам? Поделитесь пожалуйста кодом. И есть ли у кого-нибудь функция закрытия ордера по обратному сигналу стохастика. То есть допустим открылся бай ордер- идёт прибыль и когда стохастик выходит из своей зоны перекуплености то ордер закрывается- если по нему прибыль, а в Грааль машине по другому же не бывает;-) Поделитесь кодом по братски пожалуйста, не жопьтесь …
Поделитесь кодом по братски пожалуйста, не жопьтесь …
Странная у тебя манера общения...
В CodeBase поищи
Странная у тебя манера общения...
В CodeBase поищи
не могу там искать из-за моих ограничений по зрению:-( Поэтому и прошу помощи...
https://www.mql5.com/ru/code/28975
https://www.mql5.com/ru/code/28975