Самопроизвольное удаление объектов с графика

 

Добрый день.
Хочу поделиться странной проблемой.

Много лет пользуюсь самописным индикатором для МТ4, который по нажатию на клавиатуре заданных клавиш:
- создает объекты с заданными параметрами (трендовые, фиборасширения, прямоугольники и т.д.)

- удаляет объекты, находящиеся под мышью

- изменяет размеры объектов под мышью (прямоугольников, фиборасширений и т.д.), т.е. удлиняет или укорачивает их.

- удаляет с графика индикаторы.

В последние месяцы пользователи моего индикатора стали фиксировать случаи и многократно мне их демонстрировали, когда при удлинении/укорочении объекта вдруг ни с того ни с сего этот объект удаляется.... Или какой-то другой из ранее нанесенных объектов удаляется... Т.е. делается одна операция, а происходит параллельно еще и другая, которую не заказывал. Происходит это и в оффлайне, и в онлайн-режиме (на тиках), причем абсолютно бессистемно: может долго не происходить, а можно за 5 минут несколько раз зафиксировать такие приколы.

Вывел в лог все нажатия клавиш, по которым индикатор что-то делает на графике (создает, удаляет, изменяет размеры). После этого самый прикол: когда происходит самопроизвольное удаление объекта, который удалять и не собирался, то индикатор, судя по логу, не фиксирует нажатие клавиши для удаления (вообще ничего лишнего не фиксирует).

Вот тут и вопрос: как такие чудеса могут происходить? Как это возможно? Куда вообще копать, чтобы пофиксить такое?

Есть идеи?

P.S. Сам пользуюсь МТ4 build 1441 под Win7 х64, и таких приколов у себя не наблюдаю. Те, кто наблюдает, пользуются Win10.

 
satorifx:

Добрый день.
Хочу поделиться странной проблемой.

Много лет пользуюсь самописным индикатором для МТ4, который по нажатию на клавиатуре заданных клавиш:
- создает объекты с заданными параметрами (трендовые, фиборасширения, прямоугольники и т.д.)

- удаляет объекты, находящиеся под мышью

- изменяет размеры объектов под мышью (прямоугольников, фиборасширений и т.д.), т.е. удлиняет или укорачивает их.

- удаляет с графика индикаторы.

В последние месяцы пользователи моего индикатора стали фиксировать случаи и многократно мне их демонстрировали, когда при удлинении/укорочении объекта вдруг ни с того ни с сего этот объект удаляется.... Или какой-то другой из ранее нанесенных объектов удаляется... Т.е. делается одна операция, а происходит параллельно еще и другая, которую не заказывал. Происходит это и в оффлайне, и в онлайн-режиме (на тиках), причем абсолютно бессистемно: может долго не происходить, а можно за 5 минут несколько раз зафиксировать такие приколы.

Вывел в лог все нажатия клавиш, по которым индикатор что-то делает на графике (создает, удаляет, изменяет размеры). После этого самый прикол: когда происходит самопроизвольное удаление объекта, который удалять и не собирался, то индикатор, судя по логу, не фиксирует нажатие клавиши для удаления (вообще ничего лишнего не фиксирует).

Вот тут и вопрос: как такие чудеса могут происходить? Как это возможно? Куда вообще копать, чтобы пофиксить такое?

Есть идеи?

P.S. Сам пользуюсь МТ4 build 1441 под Win7 х64, и таких приколов у себя не наблюдаю. Те, кто наблюдает, пользуются Win10.

добавить логи и 

ChartRedraw, вашу-ж мать

типичная причина большинства "странных проблем" - в новых билдах (причём не то чтобы новых, а просто не старинных) без ChartRedraw ничего не_отобразится/не_изменится или только наполовину. 

 
Maxim Kuznetsov #:

добавить логи и 

ChartRedraw, вашу-ж мать

типичная причина большинства "странных проблем" - в новых билдах (причём не то чтобы новых, а просто не старинных) без ChartRedraw ничего не_отобразится/не_изменится или только наполовину. 

Боюсь вы меня не поняли.
Если я наношу объект, и он не отображается, то да, ChartRedraw поможет. Но при чем тут ChartRedraw до самопроизвольного исчезновения объектов?
Или речь о том, что они не удаляются, а просто делаются невидимыми, и ChartRedraw восстановит их видимость?

 
satorifx #:

Боюсь вы меня не поняли.
Если я наношу объект, и он не отображается, то да, ChartRedraw поможет. Но при чем тут ChartRedraw до самопроизвольного исчезновения объектов?
Или речь о том, что они не удаляются, а просто делаются невидимыми, и ChartRedraw восстановит их видимость?

после создания,удаления,изменения объектов обязательно должен следовать ChartRedraw.

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

 
Maxim Kuznetsov #:

после создания,удаления,изменения объектов обязательно должен следовать ChartRedraw.

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

Идея была интересная, но не помогло.

Вставил ChartRedraw во всех местах после создания/удаления/изменения. Однако чудеса и ныне там.

 
satorifx #:

Идея была интересная, но не помогло.

Вставил ChartRedraw во всех местах после создания/удаления/изменения. Однако чудеса и ныне там.

объекты реально удаляются? То есть они исчезают из списка объектов?
Если да, тогда, если в дебаге устанавливаете точку прерывания в местах, где у Вас в коде происходит удаление объектов. И пытаетесь поймать этот момент удаления. Далее смотрите в дебаге откуда пришел этот вызов удаления.
Если при дебаге не происходит удаления, тогда принтуем места, где происходит удаление.
Чудес не бывает, а есть ошибки (как правило семантические) в собственном коде, намного реже в коде терминала МТ5 или МТ4.

Надеюсь, дебагом пользоваться умеете.

 
Причина может быть в МТ, который скачан у брокера. Терминал всегда надо брать только у разработчика. Я это понял когда столкнулся с невозможностью поставить нужный трейлинг-стоп. Брокерский терминал имел ограничение.
 
satorifx:

Добрый день.
Хочу поделиться странной проблемой.

Много лет пользуюсь самописным индикатором для МТ4, который по нажатию на клавиатуре заданных клавиш:
- создает объекты с заданными параметрами (трендовые, фиборасширения, прямоугольники и т.д.)

- удаляет объекты, находящиеся под мышью

- изменяет размеры объектов под мышью (прямоугольников, фиборасширений и т.д.), т.е. удлиняет или укорачивает их.

- удаляет с графика индикаторы.

В последние месяцы пользователи моего индикатора стали фиксировать случаи и многократно мне их демонстрировали, когда при удлинении/укорочении объекта вдруг ни с того ни с сего этот объект удаляется.... Или какой-то другой из ранее нанесенных объектов удаляется... Т.е. делается одна операция, а происходит параллельно еще и другая, которую не заказывал. Происходит это и в оффлайне, и в онлайн-режиме (на тиках), причем абсолютно бессистемно: может долго не происходить, а можно за 5 минут несколько раз зафиксировать такие приколы.

Вывел в лог все нажатия клавиш, по которым индикатор что-то делает на графике (создает, удаляет, изменяет размеры). После этого самый прикол: когда происходит самопроизвольное удаление объекта, который удалять и не собирался, то индикатор, судя по логу, не фиксирует нажатие клавиши для удаления (вообще ничего лишнего не фиксирует).

Вот тут и вопрос: как такие чудеса могут происходить? Как это возможно? Куда вообще копать, чтобы пофиксить такое?

Есть идеи?

P.S. Сам пользуюсь МТ4 build 1441 под Win7 х64, и таких приколов у себя не наблюдаю. Те, кто наблюдает, пользуются Win10.

Под какой мышью?там понаписано ерунды всякой в твоём коде вот и удаляются а нам сиди гадай что там такое .Не могут они самовольно удаляться 
 
Arch #:
Не могут они самовольно удаляться 

А если удаляются, посоветуете в церковь сходить или что-нибудь другое?

Я к тому, что эта болезнь у меня! У программиста этот же код, только под Вин-7, работает, а у меня (Вин-10) сломался.

И проблема возникла на пустом месте. Работало нормально и бац, "вторая смена",

хотя код не меняли, терминал с мая не обновлялся, новых индикаторов не навешивал.

Понимаю, что так "не может быть потому, что не может быть никогда", но...

Я не программист, по коду не лазил, сверили - код идентичный. Где копать?


Кстати, удаление не совсем самопроизвольное, 

оно - неадекватная реакция кода на нажатие клавиш управления объектами. Может это поможет... нам помочь?

 
Михалыч Трейдинг #:

А если удаляются, посоветуете в церковь сходить или что-нибудь другое?

Я к тому, что эта болезнь у меня! У программиста этот же код, только под Вин-7, работает, а у меня (Вин-10) сломался.

И проблема возникла на пустом месте. Работало нормально и бац, "вторая смена",

хотя код не меняли, терминал с мая не обновлялся, новых индикаторов не навешивал.

Понимаю, что так "не может быть потому, что не может быть никогда", но...

Я не программист, по коду не лазил, сверили - код идентичный. Где копать?


Кстати, удаление не совсем самопроизвольное, 

оно - неадекватная реакция кода на нажатие клавиш управления объектами. Может это поможет... нам помочь?

выше говорили - пишите журналы.  "произошло событие A", "нажата кнопка F", "удалён объёкт 117" 

потом изучить журналы у вас и исполнителя и должно стать понятно.

чудес не бывает - могла сбиться идентификация (именование) объектов. Нам код и ваш софт неизвестен, на уровне гипотез всё..

 
Сравнивайте все настройки терминалов между собой. Например, у кого-то может стоит галочка Выделять объекты после создания, а у кого-то - нет. Или еще какая опция. И это влияет на работу кода.