Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1393

 
Andrey Sokolov:

Igor Makanu,  MakarFX, Кто же из вас прав? Давайте попробуем найти описание и выяснить. Когда-то видел, но целый день не могу найти.ольше времени чем пауза между тиками?

я прав

проверьте самостоятельно, это не сложно - эксперт, в котором таймер, в таймере цикл, ну пусть на 100 000 итераций и в теле цикла Sleep(1), получим 100 секунд , в  OnTick() напишите Print("Tick")

и второй эксперт на второй график в котором  в  OnTick() напишите Print("Tick")

первый эксперт будет молчать 100 секунд, и не факт, что успеет написать в лог по приходу нового тика - если опять запустится таймер


или поиском по форуму - у меня поиск работает так же как у Вас

Andrey Sokolov:

Еще подскажите, пожалста: если терминале несколько советников, то в каком порядке они будут обрабатывать тики, если их обработка занимает больше времени чем пауза между тиками?

ни в каком

каждый эксперт работает в своем потоке, т.е. они все работают параллельно не зависят друг от друга и получают сообщения одновременно от терминала

 

https://docs.mql4.com/ru/runtime/running

" Программа получает события только от графика, на котором она запущена. Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событие NewTick либо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событие Timer, то новое событие таймера не ставится в очередь. "

Из этого, как я понимаю, новое событие будет пропущено если оно выполняется или уже в очереди, иначе выполнится или будет поставлено в очередь. Из этого следует:

" если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено " - оно будет пропущено только если это такое-же событие.

Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.

если я не прав - поправьте 

 
Andrey Sokolov:

Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.

используйте стандартную схему для различных торговых панелей - обработка сообщений мышки в OnChartEvent() , а в OnTick() работа по приходу тика - у всех так работает и проблем не бывает

если используете супер тяжелые вычисления в  OnTick() - попробуйте вынести их в индикатор


а таймер, имхо, много синхронизаций нужно с окружением терминала, если уж совсем без таймера никак - то по выходу из таймера вызывайте OnTick()


ЗЫ: МТ4 довольно шустро сейчас работает, нужно еще постараться пропускать тики )))

 

Andrey Sokolov:

Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.

если я не прав - поправьте 

У меня идет расчет лота с учетом спреда и ограничением его расширения. Были открытия сделок с нарушением ограничений.

После того как я поставил OnTimer() перед OnTick() и запустил EventSetMillisecondTimer(100) пока ошибок не было.

Я не программист...все методом тыка)))

 
Andrey Sokolov:

https://docs.mql4.com/ru/runtime/running

" Программа получает события только от графика, на котором она запущена. Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событие NewTick либо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событие Timer, то новое событие таймера не ставится в очередь. "

Из этого, как я понимаю, новое событие будет пропущено если оно выполняется или уже в очереди, иначе выполнится или будет поставлено в очередь. Из этого следует:

" если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено " - оно будет пропущено только если это такое-же событие.

Если есть варианты как реализовать приоритет расчетов над визуальным оформлением, то очень жду.

если я не прав - поправьте 

а за что боремся? правила понятны. если нужен каждый тик, то тупо на стороннем индикаторе их можно получать и писать в массив, в советнике после расчета тягать этот массив и сравнивать. Это даже не вопрос времени исполнения торговых операций.

Либо задачу не до понимаю.

 

Всем добрый день. Допиливаю свою Грааль машину;-) и понимаю что на сейчас там сопровождение сделок только одно-это трал по параболику. Этого же нереально мало((((( У кого есть функция трала по фракталам? Поделитесь пожалуйста кодом. И есть ли у кого-нибудь функция закрытия ордера по обратному сигналу стохастика. То есть допустим открылся бай ордер- идёт прибыль и когда стохастик выходит из своей зоны перекуплености то  ордер закрывается- если по нему прибыль, а в Грааль машине по другому же не бывает;-) Поделитесь кодом по братски пожалуйста, не жопьтесь …

 
DanilaMactep:

Поделитесь кодом по братски пожалуйста, не жопьтесь …

Странная у тебя манера общения...

В CodeBase поищи

 
MakarFX:

Странная у тебя манера общения...

В CodeBase поищи

не могу там искать из-за моих ограничений по зрению:-( Поэтому и прошу помощи...
 
DanilaMactep:
не могу там искать из-за моих ограничений по зрению:-( Поэтому и прошу помощи...

https://www.mql5.com/ru/code/28975

Универсальный трейлинг стоп по фракталам, свечам параболику...
Универсальный трейлинг стоп по фракталам, свечам параболику...
  • www.mql5.com
Многофункциональный трал, с массой настроек и огромными возможностями. Может тралить по пунктам, по свечам, по фракталам, по индикаторам ATR и Parabolic.
 
Большое спасибо:-) пошёл разбираться как это добро прикрутить в Грааль машину)))))))))))
Причина обращения: