Что скажут профи: Как получить значения скрола мышки в MQL? [репост с пятого форума] - страница 7
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что ему поможет? Ваше хвалебное заявление? Вы ж не показали решения. Вы показали себя. Впрочем, что весьма и весьма ожидаемо.
Это что-ли?
У вас неправильная тенденция сложилась. Вы сначала выкрикиваете что то в мой адрес (типа "ваш код шлак", "некропостер"), а потом спрашиваете и обсуждаете решение задачи. Так что, думайте сами.
Или ждите когда я помогу тем, кто этого заслуживает.
Что ему поможет? Ваше хвалебное заявление? Вы ж не показали решения. Вы показали себя. Впрочем, что весьма и весьма ожидаемо.
Вы удивительно невнимательны.
Посмотрите, внизу поста на который я ответил, человек просит "натолкнуть" его на мысль. Он не просит готового решения. Вот я и попробывал натолкнуть. Теперь понимаете, насколько неуместно и нелепо ваше вмешательство? Ничего кроме бесполезного флуда оно не влечет. Лучше бы по сути дела общались. Больше бы пользы для себя и других извлекли.
У вас неправильная тенденция сложилась. Вы сначала выкрикиваете что то в мой адрес (типа "ваш код шлак", "некропостер"), а потом спрашиваете и обсуждаете решение задачи. Так что, думайте сами.
Или ждите когда я помогу тем, кто этого заслуживает.
Я не спрашивал, Я констатировал факт.
Я не спрашивал, Я констатировал факт.
Тут многие за формой, не видят содержания. Они не могут понять, что если нет идеи и способности ее реализовать, их требовательность к форме не породит качественного содержания.
Сущность может иметь много форм своих воплощений и судить о ней по языку ее выражения может только недалекий человек.
Я не спрашивал, Я констатировал факт.
Я тоже проконстатирую факт.
ваши "продукты" - бездарные и смешные потуги.
Такого МУСОРА давно я не видел!
Не принимайте к сердцу правдивую критику. :)
Почему же? Немного мыслительного процесса и решение каждый найдет. Я дал намек где его искать. В каком направлении исследовать. Ведь неинтересно же все на блюдечке нести. )) Если нужно, я могу человеку помочь и довести до решения. Но вам похоже, хочется со мною просто спорить.)
Привет, Петр!
Уж не хочешь ли ты сказать, что у тебя есть реальное практическое решение, как осуществлять скроллинг колесиком мышки средствами MQL? А не стрелками клавиатуры или клавишами мышки - это-то и козе понятно. Конечно, можно использовать событие CHARTEVENT_CHART_CHANGE для установления факта прокрутки графика с помощью колеса, если не нажимались никакие клавиши, но только вероятностно, т.к. это событие может произойти просто с приходом нового бара или при резком изменении цены, ведущей к изменению вертикального маштаба. Также, при таком методе невозможно всегда получать события прокрутки колеса, например когда график достиг крайнего левого или правого положения, и как добиться при этом непрокрутки графика. Возможно, ты имеешь ввиду использовать функцию ChartNavigate для обратного перемещения графика, но это же будет очень кривая реализация и вряд ли возможно корректно отфильтровать все другие причины изменения графика, отличные от прокрутки колеса мышки. В моем разумении это можно сделать только хакнув MT или зная какие-то недокументированные команды и (или) события. В общем, не верю, что у тебя есть пример такой реализации.
И странный у тебя намёк, однако. Практически на вопрос "Как получить событие скролинга через колесико мышки?, ты даешь ответ "Используйте событие скроллинга и функцию которая двигает график."
Может я не прав, и у тебя реально есть пример. Тогда ты крутяшка! )) Ну тогда сбрось хоть ex4 (ex5) файл, а не код.
Привет, Петр!
Уж не хочешь ли ты сказать, что у тебя есть реальное практическое решение, как осуществлять скроллинг колесиком мышки средствами MQL? А не стрелками клавиатуры или клавишами мышки - это-то и козе понятно. Конечно, можно использовать событие CHARTEVENT_CHART_CHANGE для установления факта прокрутки графика с помощью колеса, если не нажимались никакие клавиши, но только вероятностно, т.к. это событие может произойти просто с приходом нового бара или при резком изменении цены, ведущей к изменению вертикального маштаба. Также, при таком методе невозможно всегда получать события прокрутки колеса, например когда график достиг крайнего левого или правого положения, и как добиться при этом непрокрутки графика. Возможно, ты имеешь ввиду использовать функцию ChartNavigate для обратного перемещения графика, но это же будет очень кривая реализация и вряд ли возможно корректно отфильтровать все другие причины изменения графика, отличные от прокрутки колеса мышки. В моем разумении это можно сделать только хакнув MT или зная какие-то недокументированные команды и (или) события. В общем, не верю, что у тебя есть пример такой реализации.
И странный у тебя намёк, однако. Практически на вопрос "Как получить событие скролинга через колесико мышки?, ты даешь ответ "Используйте событие скроллинга и функцию которая двигает график."
Может я не прав, и у тебя реально есть пример. Тогда ты крутяшка! )) Ну тогда сбрось хоть ex4 (ex5) файл, а не код.
Привет, Николай!
Веришь или нет, но решение очень простое. Оно занимает 15-20 строк кода. Правда есть нюанс, - специфика реализации механизма прокрутки. Моя реализация немного отличается от стандартной. Механизм прокручивает канвас, а не обьекты. Похожая реализация имеется в библиотеке Анатолия.
Я действительно прокручиваю колесиком, и "цепляясь" к движению графика получаю эффект энерции. График конечно дергается, но всегда возвращается в исходное положение. Для этого и нужна функция смещения графика. Направление смещения графика тоже получаю от mql-функции. Таким образом, ничего взламывать не надо.) MQ постарались дать максимально широкий функционал для реализации практически любых задач. Это даже удивительно. Быть может они и сами не знали всех возможностей, которые открывают для разработчиков.)
В общем, не верю, что у тебя есть пример такой реализации.
И странный у тебя намёк, однако. Практически на вопрос "Как получить событие скролинга через колесико мышки?, ты даешь ответ "Используйте событие скроллинга и функцию которая двигает график."
Может я не прав, и у тебя реально есть пример. Тогда ты крутяшка! )) Ну тогда сбрось хоть ex4 (ex5) файл, а не код.
Тут такая ситуация. Человек, на пост которого я ответил, просил натолкнуть его на мысль, как реализовать механизм прокрутки колесиком. Я ему намекнул. Тут же взбудоражились местные недображелатели и начали обвинять меня в бахвальстве и еще какой то чуши.
С их точки зрения, если я дам решение, то я либо рекламирую свои продукты, либо просто хвастаюсь, а если не дам, то я всех обманываю и у меня ничего нет.
Код выложить могу, но во первых, - он будет оторван от реализации механизма прокрутки, а во вторых - на русском языке. Но возможно, ты сможешь приспособить его к своему механизму прокрутки. Выложить ех4 не могу, потому что не могу "вырвать" отдельно взятый механизм из целостной графической среды в которой он функционирует.
Лучшим вариантом, будет передать тебе решение в общих чертах, но не с целью что либо доказать, а на основании дружбы.
И так:
Событие CHARTEVENT_CHART_CHANGE генерируется помимо прочего и на событии движения колесика мышки, если курсор находится над графиком. Опция смещения графика должна быть обязательно включена. Таким образом, по смещению графика, мы можем точно знать когда мы крутим колесико. Мы можем гененировать пользовательское событие. Например "SCROLLER_EVENT".
Далее, наша задача состоит в том, чтобы определить направление смещения. Для этого используем ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR); На каждом событии "SCROLLER_EVENT"мы получаем номер первого видимого бара и определяем больше ли он или меньше номера предыдущего бара, который мы записали. Если больше, - то сдвиг в одну сторону, если меньше то в противоположную. При этом, наш график тоже прокручивается и может упереться в самый конец. Чтобы этого не случилось, мы корректируем его положение используя функцию ChartNavigate и устанавливаем график на исходную позицию. При этом вызове, тоже генерирует событие CHARTEVENT_CHART_CHANGE и это будет сбивать нашу прокрутку. Поэтому, в момент коррекции положения графика, мы должны пропускать событие CHARTEVENT_CHART_CHANGE и не реагировать на него. Для этого необходимо использовать систему флагов.
Вот как выглядит мой код:
Добавлено:
Что касается других причин сдвига графика, то конечно они могут вносить ошибки в нашу систему. Однако, эти ошибки столь незначительны, что вряд ли стоит на них обращать внимание. Ну сдвинет новый бар наше полотно на несколько пикселей... Это же не страшно. И то, если только курсор будет в это время находится над полотном прокрутки.
Конечно, реализация является попыткой найти выход из безвыходного положения. При полном отсутствии возможности прокрутки колесиком, - это самое простое и "родное" решение. Для получения полноценного решения я уже обращался в сервисдеск. Ну а будет оно или нет, зависит он разработчиков.