OBJ_BUTTON не работает в визуальном тестере MT5 — есть решение 2025/2026?

 
Есть EA с панелью на объектах OBJ_BUTTON.
На реальном и демо графике всё работает через OnChartEvent.
Но в визуальном тестере стратегий — кнопки не кликаются,
OBJPROP_STATE всегда возвращает 0, OnChartEvent не вызывается.

Знаю что это известный баг с 2017 года.
Есть ли рабочее решение в 2025/2026?

Что уже пробовала:
- Проверка OBJPROP_STATE в OnTick — всегда 0
- OnTimer — не помогает
- OnChartEvent с CHARTEVENT_OBJECT_CLICK — не вызывается
- ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true) — не помогло
- Отдельная кнопка без фона — не работает

Буду благодарна за любую помощь!
 
Anastasia Danilova:

Знаю что это известный баг с 2017 года.
так это не баг, это фича.. непонятно почему МТ не реализовали интерактивный визуальный тестер на базе этого... но что есть, то есть.
 
Anastasia Danilova:
Проверка OBJPROP_STATE в OnTick — всегда 0

Плохо проверяли, OBJPROP_STATE в тестере работает. Собственно только оно и работает.

С кнопками в тестере можно работать только с помощью проверки ObjectGetInteger(0, name, OBJPROP_STATE)

 
Aleksandr Slavskii #:

Плохо проверяли, OBJPROP_STATE в тестере работает. Собственно только оно и работает.

С кнопками в тестере можно работать только с помощью проверки ObjectGetInteger(0, name, OBJPROP_STATE)

Спасибо за ответ.

Уже все нормально. Разобралась. Работает как должно быть.
 
Nikolay Kuznetsov #:
так это не баг, это фича.. непонятно почему МТ не реализовали интерактивный визуальный тестер на базе этого... но что есть, то есть.
Уже все нормально. Разобралась. Работает как должно быть.
 
Aleksandr Slavskii #:

Плохо проверяли, OBJPROP_STATE в тестере работает. Собственно только оно и работает.

С кнопками в тестере можно работать только с помощью проверки ObjectGetInteger(0, name, OBJPROP_STATE)

Оказалось дело не в методе чтения STATE, а в том что кнопки были вложены внутрь OBJ_RECTANGLE_LABEL фона с OBJPROP_BACK=true — это блокировало передачу кликов на кнопки в тестере.
Решение оказалось простым — вынесла кнопки BUY/SELL полностью отдельно от панели, создаём их через CButton.Create() из стандартной библиотеки Controls независимо от остальных объектов панели. В OnTick читаем через Pressed().
Теперь кнопки работают и в визуальном тестере и на реальном/демо счёте.
Панель из OBJ_RECTANGLE_LABEL + OBJ_LABEL живёт отдельно — только для отображения информации. Кнопки торговые — отдельно, без вложенности в какие-либо контейнеры.
И есть еще пару вариантов решения этой проблемы     :))
 
Anastasia Danilova #:
Оказалось дело не в методе чтения STATE, а в том что кнопки были вложены внутрь OBJ_RECTANGLE_LABEL фона с OBJPROP_BACK=true — это блокировало передачу кликов на кнопки в тестере.
Решение оказалось простым — вынесла кнопки BUY/SELL полностью отдельно от панели, создаём их через CButton.Create() из стандартной библиотеки Controls независимо от остальных объектов панели. В OnTick читаем через Pressed().
Теперь кнопки работают и в визуальном тестере и на реальном/демо счёте.
Панель из OBJ_RECTANGLE_LABEL + OBJ_LABEL живёт отдельно — только для отображения информации. Кнопки торговые — отдельно, без вложенности в какие-либо контейнеры.
И есть еще пару вариантов решения этой проблемы     :))
ObjectSetInteger(0,objName, OBJPROP_ZORDER, 2);
OBJPROP_ZORDER
 
Vitaly Muzichenko #:
OBJPROP_ZORDER
Виталий, спасибо большое за совет! Точно, про OBJPROP_ZORDER я как-то и не подумала в тот момент. Это действительно было бы гораздо изящнее — просто поднять приоритет отрисовки, и не пришлось бы менять структуру панели.
Действительно, отличный и более быстрый вариант решения. Спасибо, обязательно возьму на вооружение на будущее! :)