Исчезновение самописных индикаторов МТ5

 

Коллеги, прошу подсказать.


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


Также заметил, что данные индикаторы могут не отрисовываться на некоторых инструментах. К примеру, на штатовских акциях MU просто не появляется индикатор. А на каких-то других без проблем. 


К сожалению, по объективным причинам я не могу выложить код индикатора. Но прошу хотя бы дать направление, где может быть гипотетическая причина подобного поведения. Так, товарищи подсказали следующее:

"У тебя в коде должно быть обращение к серверу, получение состояния, времени или даты. И если проучил ответ от сервера, тогда гонишь робота дальше."
"Тебе нужно проверить время сервера, получить время последней свечи и сравнить с ТСерв-ТФ и если новая свеча, то рисуешь индикатор"

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


Заранее благодарю.

 
Скорее всего, проблема в возникновении критической ошибки (выход за пределы массива, деление на ноль). В таком случае нужно смотреть содержимое вкладки "Эксперты" окна "Терминал".
 
Ihor Herasko:
Скорее всего, проблема в возникновении критической ошибки (выход за пределы массива, деление на ноль). В таком случае нужно смотреть содержимое вкладки "Эксперты" окна "Терминал".

Ошибки деления на ноль вылезают иногда в логах (только не во вкладке "Эксперты", а еще есть папка логов) после запуска. Но какой-то последовательности нету. То на одном инструменте, то на другом. А индюки пропадают на всех.
При этом в том месте, где указана ошибка, не может быть деления на ноль, поскольку в знаменателе сумма двух цен.

Поэтому просто не могу понять, откуда эта ошибка лезет. Ну и повторюсь, она то есть, то нет.

 
StarleyNSK:

Ошибки деления на ноль вылезают иногда в логах (только не во вкладке "Эксперты", а еще есть папка логов) после запуска. Но какой-то последовательности нету. То на одном инструменте, то на другом. А индюки пропадают на всех.
При этом в том месте, где указана ошибка, не может быть деления на ноль, поскольку в знаменателе сумма двух цен.

Поэтому просто не могу понять, откуда эта ошибка лезет. Ну и повторюсь, она то есть, то нет.

Уверены, что цены получены, и они не нулевые? 
 
Artyom Trishkin:
Уверены, что цены получены, и они не нулевые? 

Вот, теперь вопрос.

Вот что мне написал мой коллега-программист. Он просто не знаком с внутренностями МТ5.

"Возвращаясь к делению на ноль. Могут же быть пропуски в истории торгов. И тогда какое-то время может быть действительно в массиве цен будет где-то нулевое значение. Которое и вызывает ошибку. А спустя время история подгрузится и все начинает работать нормально. "

Я тоже не знаю, как поступают данные в МТ5. Что скажете? Может быть такая ситуация? И если да, то какое может быть решение?

 
StarleyNSK:

Вот, теперь вопрос.

Вот что мне написал мой коллега-программист. Он просто не знаком с внутренностями МТ5.

"Возвращаясь к делению на ноль. Могут же быть пропуски в истории торгов. И тогда какое-то время может быть действительно в массиве цен будет где-то нулевое значение. Которое и вызывает ошибку. А спустя время история подгрузится и все начинает работать нормально. "

Я тоже не знаю, как поступают данные в МТ5. Что скажете? Может быть такая ситуация? И если да, то какое может быть решение?

Проверить значение.
 
Artyom Trishkin:
Проверить значение.

А можно это по-подробнее, если не сложно. Мы просто не понимаем многого в МТ5. Пишем по скелету другого индюка на С#

 
StarleyNSK:

А можно это по-подробнее, если не сложно. Мы просто не понимаем многого в МТ5. Пишем по скелету другого индюка на С#

  • Если сумма цен равна нулю - продолжить цикл индикатора.
  • Если сумма цен не равна нулю - рассчитать
  • Что-то ещё - не видя кода, невозможно что-то предложить конкретное
ЗЫ. Зачем на птичьих костях что-то писать? Вуду?
 
Artyom Trishkin:
  • Если сумма цен равна нулю - продолжить цикл индикатора.
  • Если сумма цен не равна нулю - рассчитать
  • Что-то ещё - не видя кода, невозможно что-то предложить конкретное
ЗЫ. Зачем на птичьих костях что-то писать? Вуду?

А вот касательно этого:

"У тебя в коде должно быть обращение к серверу, получение состояния, времени или даты. И если проучил ответ от сервера, тогда гонишь робота дальше."
"Тебе нужно проверить время сервера, получить время последней свечи и сравнить с ТСерв-ТФ и если новая свеча, то рисуешь индикатор"

Нужно ли такое делать?

 
StarleyNSK:

Ошибки деления на ноль вылезают иногда в логах (только не во вкладке "Эксперты", а еще есть папка логов) после запуска. Но какой-то последовательности нету. То на одном инструменте, то на другом. А индюки пропадают на всех.
При этом в том месте, где указана ошибка, не может быть деления на ноль, поскольку в знаменателе сумма двух цен.

Поэтому просто не могу понять, откуда эта ошибка лезет. Ну и повторюсь, она то есть, то нет.

В знаменателе скорее всего "не число",  поставьте для каждого члена суммы проверку с помощью MathIsValidNumber

 
А почему не попытаться в тестере индюка погонять, очень многое станет ясным
Причина обращения: