Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1393
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
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