Ошибки, баги, вопросы - страница 1494

 
zaskok3:

С благодарностью бы принял и пояснение на тему отсутствия OnMarketwatch

Вы бы лучше не требовали с таким видом объяснения почему нет этого события в МТ.

А писали бы в Сервисдеск с подробным пояснением как оно по вашему должно работать и зачем оно может быть нужно 99% трейдерам.

 
Maxim Khrolenko:
По-моему тут можно использовать OnTimer(), каждые Х миллисекунд вызывать событие.
Этому решению уже давно придумано более точечный вариант - ставить индикаторы на нужные символы и отправлять пользовательское событие в эксперт.
 
zaskok3:
Событие прихода нового тика в Marketwatch. Аналогично, как OnTick, но только реагирует на новые тики не одного символа, а всех, что подписаны в "Обзоре рынка".

С нынешним потоком котировок даже свои собственные тики успевают приходить пачками, пока отрабатывает очередной OnTick.

Почему-то многие думают, что когда возникает некое событие, то обработчик этого события дёргается сразу, тут же, даже если производится обработка другого события этим же экспертом (то есть, параллельно). Это не так.

Все события выстраиваются в одну общую очередь к одному эксперту. Эксперт поочерёдно их обрабатывает. И тут всё зависит от программиста - насколько эффективно он реализует обработку того или иного события. Но даже если программист - супер, и у программиста супер-тачка, то всё равно при наличии множества событий очередь будет разбухать (при наличии тиков от чужих символов - тем более)

Каковы аргументы желающих тиков от чужих символов? "Я не хочу крутить таймер для отслеживания нужных символов, потому что могу опоздать к раздаче". А так как событие тика чужого символа (особенно если мониторится несколько символов) может быть задержано в очереди собственной же обработкой другого события, то тут с гораздо большей вероятностью будет опоздание к раздаче.

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

 
zaskok3:

В MQL4++ без extern не могу обойтись, когда нужно поменять входные параметры программно.

Вам абсолютно ничего не мешает работать с обычными переменными. Для интерактивных индикаторов вообще не нужны по сути внешние const параметры, контролируемые не вашей же интерактивностью.

Вы просто ленитесь и требуете нерациональное излишество, которым сами же не будете пользоваться так как имеется уже рабочая альтернатива.

 
Joo Zepper:
Что Вы посоветуете владельцам нескольких мониторов? Каким образом можно организовать эффективную работу с терминалом? 

Все вкладки и служебные окна (тулбокс, тестер, обзор рынка, навигатор, окно данных, тулбары) вынести на отдельный монитор.

В окне терминала оставить только графики. Окно терминала растянуть на оставшиеся несколько мониторов, которые имеют одинаковые характеристики по размерам и разрешению

 
o_O:

Вы бы лучше не требовали с таким видом объяснения почему нет этого события в МТ.

А писали бы в Сервисдеск с подробным пояснением как оно по вашему должно работать и зачем оно может быть нужно 99% трейдерам.

o_O:

Вам абсолютно ничего не мешает работать с обычными переменными. Для интерактивных индикаторов вообще не нужны по сути внешние const параметры, контролируемые не вашей же интерактивностью.

Вы просто ленитесь и требуете нерациональное излишество, которым сами же не будете пользоваться так как имеется уже рабочая альтернатива.

Не понимаю столь агрессивного восприятия спокойных рассуждений. Вам что-то нехорошее показалось... Этого нет, все хорошо, успокойтесь. Вы же не Р...

Maxim Khrolenko:
По-моему тут можно использовать OnTimer(), каждые Х миллисекунд вызывать событие.
o_O:
Этому решению уже давно придумано более точечный вариант - ставить индикаторы на нужные символы и отправлять пользовательское событие в эксперт.

В курсе, поэтому сразу и написал:

zaskok3:

Зачем-то предлагаются костыльные решения через таймер или еще большее извращение - OnChartEvent.

Slawa, мне не совсем понятна Ваша логика:

Slawa:

Каковы аргументы желающих тиков от чужих символов? "Я не хочу крутить таймер для отслеживания нужных символов, потому что могу опоздать к раздаче". А так как событие тика чужого символа (особенно если мониторится несколько символов) может быть задержано в очереди собственной же обработкой другого события, то тут с гораздо большей вероятностью будет опоздание к раздаче.

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

Тогда с какой целью есть OnTick, если достаточно таймера и для своих тиков? У меня логика, возможно, работает неправильно. Но рассуждаю следующем образом: раз есть OnTick - должен быть и OnMarketWatch. Раз OnMarketWatch можно реализовать через OnTimer, то тоже самое можно сделать и с OnTick. Значит существование OnTick имеет те же обоснования, что и существование OnMarketWatch. Но один есть, а другого - нет.

OnTick-очередь обнуляется для тиков, которые были во время выполнения текущего OnTick (в советниках так). О каком переполнении очереди идет - не ясно. На выходных вхолостую гонять таймер - не разумно. В советниках же OnTick не срабатывает на каждом тике. Именно по этой причине нельзя собрать тики без пропусков в советнике. Очередь обнуляется, и это нормально. Никаких переполнений.

 

zaskok3:

Slawa, мне не совсем понятна Ваша логика:

Тогда с какой целью есть OnTick, если достаточно таймера и для своих тиков? У меня логика, возможно, работает неправильно. Но рассуждаю следующем образом: раз есть OnTick - должен быть и OnMarketWatch. Раз OnMarketWatch можно реализовать через OnTimer, то тоже самое можно сделать и с OnTick. Значит существование OnTick имеет те же обоснования, что и существование OnMarketWatch. Но один есть, а другого - нет.

OnTick-очередь обнуляется для тиков, которые были во время выполнения текущего OnTick (в советниках так). О каком переполнении очереди идет - не ясно. На выходных вхолостую гонять таймер - не разумно. В советниках же OnTick не срабатывает на каждом тике. Именно по этой причине нельзя собрать тики без пропусков в советнике. Очередь обнуляется, и это нормально. Никаких переполнений.

OnTick плавно перешёл из четвёрочной функции start

OnTick покрывает 99% потребностей и позволяет писать простые программы.

О переполнении очереди не идёт речи. Речь идёт о её разбухании - события не теряются.

Нет отдельных очередей для отдельных событий (OnTick-очередь). Очередь одна общая для всех событий одного эксперта.

Но очередь пополняется событиями вполне интеллектуально - если в очереди есть необработанное событие NewTick, то в неё не добавляются другие события NewTick. Если в очереди есть необработанное событие Timer, то другие события Timer в очередь не добавляются. И т.п.

Про разумность-неразумность таймера. На самом деле таймер не забирает так много ресурсов, как Вы думаете. В клиентском терминале, кстати работают одновременно несколько таймеров для собственных нужд терминала. Работают постоянно, загрузка процессора 0

 
Slawa:

OnTick покрывает 99% потребностей и позволяет писать простые программы.

В 99% если в исходнике OnTick переобозвать на OnTimer, сделав инициализацию таймера еще (одна строчка), то результат не изменится - будет работать, как раньше и программа будет все так же простой.

OnTick плавно перешёл из четвёрочной функции start

А вот это да. Большинству привычнее. В этом основная причина.

Спасибо, что уделили столько внимания на разъяснения. Есть просьба добавить в кодобазу исходник реализации искусственной OnMarketWatch через таймер. В моей реализации мне приходится помнить предыдущие тики всех символов и на каждом шаге таймера сравнивать с текущими значениями. В случае различий, генерировать событие для вызова OnMarketWatch. И именно это действие и видится неразумным. Т.е. вхолостую OnTimer гонять на выходных не получается. Приходится все время сравнивать. Возможно, есть решение получше. Поэтому прошу Ваш вариант показать. Как бы Вы сделали.


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

 
Друзья, сложилась возможно действително парадоксальная ситуация. 
В теории, если я правильно понимаю, в случае если подписчик сигнала увеличивает плечё на счёте от 1:200 до 1:500 - это должно привести минимум к повышению открываемых объёмов в два раза. верно ? 
И та же самая ситуация с нагрузкой депозита При её увеличении должны возрастать объёмы. 
Один из моих подписчиков пишет мне, что он увеличил плечё от 1:200 до 1:500 и нагрузку с 50 % до 90 %. Но после этого объём открываемых объёмов не изменился ни в какую сторону. При этом баланс его счёта должен был более, чем позволить это
Может я что -то не так понимаю в системе копирования ? 
 
Artem Prischepa:
...
Хватит задавать вопросы от имени мнимых (или вымышленных) подписчиков. Если у подписчика есть вопрос - пусть сам задаёт. В противном случае расценю как рекламу сигнала.
Причина обращения: