Одновременное перемещение двух точек трендовой линии - страница 2

 
ilfat85:
Спасибо! Это будет запасным вариантом)
Есть ещё вариант: рисовать линии на канвасе. Канвас легко двигается мышью вместе с нарисованной на нём линией естественно.
 

У варианта CHARTEVENT_MOUSE_MOVE + зажатая ЛКМ неприятная особенность — двигается чарт.

Поэтому, видимо, без копии объекта не обойтись.

 
Andrey Khatimlianskii:

У варианта CHARTEVENT_MOUSE_MOVE + зажатая ЛКМ неприятная особенность — двигается чарт.

Поэтому, видимо, без копии объекта не обойтись.

Сдвиг чарта можно, и нужно в данном контексте отключить в свойствах чарта. CHART_MOUSE_SCROLL.

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
В этом разделе представлены примеры для работы со свойствами графика. Для каждого свойства приведены одна или две законченные функции, которые позволяют задавать/получать значение этого свойства. Эти функции можно использовать в своих MQL5 программах как есть. На рисунке показана графическая панель для наглядной демонстрации того, как изменение...
 
Artyom Trishkin:

Сдвиг чарта можно, и нужно в данном контексте отключить в свойствах чарта. CHART_MOUSE_SCROLL.

Кхм. Вариант.

Но все равно немного костыльный, конечно.

Много ограничений в исходной задаче, не понятно, почему именно такой путь выбран.

 
Andrey Khatimlianskii:

Кхм. Вариант.

Но все равно немного костыльный, конечно.

Много ограничений в исходной задаче, не понятно, почему именно такой путь выбран.

Самое интересное, что это необходимо делать в любом методе смещения объектов в GUI на основе MQL. Других методов не двигать график вместе с объектом не знаю...
 
Artyom Trishkin:
Самое интересное, что это необходимо делать в любом методе смещения объектов в GUI на основе MQL. Других методов не двигать график вместе с объектом не знаю...

согласен.
вот здесь это так же реализовано.


Файлы:
sine.mq5  11 kb
 
ilfat85:

Уважаемые коллеги!

Столкнулся вроде с простой задачей, но не могу найти оптимальное решение. Необходимо чтобы при перемещении точки 1 трендовой линии, параллельно двигалась точка 2, т.е. трендовая линия всегда должна быть горизонтальной. CHARTEVENT_OBJECT_DRAG не подходит, так как перемещение 2-й точки происходит после окончания перемещения первой. Пробовал через  CHARTEVENT_OBJECT_CLICK получить название линии и сохранить ее в глобальной переменной, а в CHARTEVENT_MOUSE_MOVE если ЛКМ нажата перемещать вторую точку этой линии. Данный вариант работает, но если на графике несколько линий, при нажатии на вторую линию в глобальной переменной не успевает обновиться название второй линии и перемещается точка первой линии. Пробовал в CHARTEVENT_MOUSE_MOVE запускать цикл определяя какая линия сейчас находится под курсором (преобразовывал координату y курсора в цену и сравнивал с ценой линии), при резком смещении 1-й точки не всегда верно определяется линия. Подскажите пожалуйста как сделать правильно, думаю есть легкое решение, которое мне никак в голову не приходит)



Ну, так и используйте подход, который работает. Просто, сделайте так, чтобы Вы не успевали начать двигать вторую линию до того, как в глобальной переменной изменится имя. Способов полно. Сначала событие нажатия на пумпочку, после - событие изменения глобальной переменной (вроде NewBar), а уже при выполнении этих условий начинаем тянуть вторую точку. Если будете сильно спешить, то немного запаздывать будет, но это не критично, надеюсь ))

 
Алексей Тарабанов:

Ну, так и используйте подход, который работает. Просто, сделайте так, чтобы Вы не успевали начать двигать вторую линию до того, как в глобальной переменной изменится имя. Способов полно. Сначала событие нажатия на пумпочку, после - событие изменения глобальной переменной (вроде NewBar), а уже при выполнении этих условий начинаем тянуть вторую точку. Если будете сильно спешить, то немного запаздывать будет, но это не критично, надеюсь ))

Неудобно, т.к. для получения нового имени нужно отпустить мышку.

 
По что не понятно - почему не подходит вариант таскать за центральную точку?