Порядок обработки функций OnChartEvent и OnCalculate - страница 2

 
Evgeny Galikhin:

А почему вы решили, что OnCalculate именно перестает работать? Может он работает но не так как задумывалось, из-за определенных настроек панели управления?

Если в OnCalculate поставить какой-нибудь принт или алерт, то они не исполняются?

Перестали корректироваться динамические об'екты. Паттерны Песавенто, в частности
 
Корректировка динамических об'ектов производится в онкалкуляте.
 
Eugeni Neumoin:
Корректировка динамических об'ектов производится в онкалкуляте.

Так, скорее всего, не работает сама корректировка, а не вызов OnCalculate. Поставьте туда (в OnCalculate) Print на входе, как выше сказали. Передвигая его по шагам вглубь алгоритма, в конце концов доберетесь до места с ошибкой. Это будни программиста - неделями искать какую-то мелочь (типа опечатки), ставящую выполнение программы на колени.

 
Eugeni Neumoin:
Перестали корректироваться динамические об'екты. Паттерны Песавенто, в частности

Т.е. OnCalculate исполняется? а не перерисовываются все что связано с точкой D в паттернах?

Паттерн Вы отрисовываете через чартевент? В OnCalculate нигде не забыта функция изменения графического объекта в связи с изменением точки D?

// Функция обновления паттерна (точки D в паттернах)
// Все функции обновления объектов связанных с паттерном
 
Корректировка рабатает, но не всегда. Наверное, зависит от общей нагрузки на процессор со стороны метатрейдера. Открыто много окон в метатрейдере. Придётся часть кода из онкалкуляте помещать в ончартевент. И выполнять это код после проверки некоторых условий.
 
Evgeny Galikhin:

Т.е. OnCalculate исполняется? а не перерисовываются все что связано с точкой D в паттернах?

Паттерн Вы отрисовываете через чартевент? В OnCalculate нигде не забыта функция изменения графического объекта в связи с изменением точки D?

Паттерны Gartly не проверял. Проблема с динамическими паттернами Песавенто была замечена.
 
Eugeni Neumoin:
Корректировка рабатает, но не всегда.

Не всегда или не на всех объектах?

Eugeni Neumoin:
Наверное, зависит от общей нагрузки на процессор со стороны метатрейдера.

Возможно, вы перерасчитываете объекты когда нет обновления точки D

Eugeni Neumoin:
Придётся часть кода из онкалкуляте помещать в ончартевент.

Ончартевент не должен работать с динамическими объектами, которые нужно обновлять. Событие ончартевент должно сделать первый расчет объекта и разрешить расчет / обновление для функции в онкалькулейт

 
Ihor Herasko:

Так, скорее всего, не работает сама корректировка, а не вызов OnCalculate. Поставьте туда (в OnCalculate) Print на входе, как выше сказали. Передвигая его по шагам вглубь алгоритма, в конце концов доберетесь до места с ошибкой. Это будни программиста - неделями искать какую-то мелочь (типа опечатки), ставящую выполнение программы на колени.

Про будни знаю. Корректировка работает. Эти участки программы отлажены  более 10 лет назад. Ошибка стала возникать при включении ончартевент. Разберусь.
 
Evgeny Galikhin:

1)Не всегда или не на всех объектах?

2)Возможно, вы перерасчитываете объекты когда нет обновления точки D

3)Ончартевент не должен работать с динамическими объектами, которые нужно обновлять. Событие ончартевент должно сделать первый расчет объекта и разрешить расчет / обновление для функции в онкалькулейт

1) Заметил пока только на паттернах Песавент
2)  Не фантазируйте про точку D. Эта часть программы была отлажена более 10 лет назад. На Ониксе тогда все подробно описывалось .
3) У меня в программе не используются об'екты из ООП.  И в ончартевент не рассчитываются паттерны. Есть функции, работающие только в онкалькуляте. И они перестают работать, но не всегда, при включении режима отработки событий. Не надо фантазировать. Получается, что онкалкуляте просто удаляется из очереди. Как-то так. Открыто много окон. Во всех окнах подключен индикатор. До подключения ончартевент даже при выводе на графики порядка 100 экземпляров индикатора все работало. И почти не было тормозов. То есть все оптимизировано почти предельно. Если всомнить, как работал зигзаг где-то в 2005 году, тогда даже один экземпляр на быстром рынке мог подвесить терминал.
 

А префикс у имён (для объектов) отличается на каждом графике?
Давно, смотрел ваш код версии 88, там вы не указываете ChartID при создании/изменении объектов. Может в этом загвоздка.

Причина обращения: