Баг с прорисовкой графика

 

Об этом надо постить в Багтрекер, но я не знаю как воспроизвести.

На графике 3 индикатора: Fractals, BB и мой.

Быстрая прокрутка до 12.01.2009 (на картинке) и мышкой я начинаю двигать... хи... таких причудливых картинок можно насмотреться :D

Я попытался найти проблему, и кажется такой эффект вызывает CopyRates() в OnCalculate().

Файлы:
 
Тоже наблюдал баг с отрисовкой индикатора, изображение в индикаторе при неопределенных прокрутках просто пропадает вместе с осью индикатора, чем вызвано непонятно, непонятно, почему иногда есть, иногда нет.
 
zfs:
Тоже наблюдал баг с отрисовкой индикатора, изображение в индикаторе при неопределенных прокрутках просто пропадает вместе с осью индикатора, чем вызвано непонятно, непонятно, почему иногда есть, иногда нет.
Такое бывает когда в буфере индикатора некорректные данные.  Чаще всего - пренебрежение инициализацией.
 
MetaDriver:
Такое бывает когда в буфере индикатора некорректные данные.  Чаще всего - пренебрежение инициализацией.
Данные не меняются, пропадает при прокрутке, один и тот же участок может отображаться и нет, данные зависят от прокрутки,? Я бы мог сослаться на алгоритм, но встречаю это уже ни раз. Без инициализации там вообще прикол вылезает. в блоке инит инициализирую буфера, но почему-то инициализация не срабатывает, приходится повторять их в калькулейте, а если их там непроинициализировать, то в буфер попадают какие-то нелепые значения. И еще ситуация тоже удивляет - возможность индикатора существовать внутри терминала без каких-либо признаков опознавания, что приводит к неправильной работе вновь повешенного индикатора, но это уже мелочи). 
 
Roffild:

Об этом надо постить в Багтрекер, но я не знаю как воспроизвести.

На графике 3 индикатора: Fractals, BB и мой.

Быстрая прокрутка до 12.01.2009 (на картинке) и мышкой я начинаю двигать... хи... таких причудливых картинок можно насмотреться :D

Я попытался найти проблему, и кажется такой эффект вызывает CopyRates() в OnCalculate().

  CopyRates(_Symbol,0,0,rates_total+InpMAPeriod+1,mRates); /// BUG ???

Здесь, конечно баг.

rates_total+InpMAPeriod+1 будет очевидно больше чем rates_total,  однако rates_total - максимальное доступное количество баров.

Если эту строку закоментировать, индикатор вроде работает без проблем. // по крайней мере с настройками по умолчанию.

 
zfs:

Данные не меняются, пропадает при прокрутке, один и тот же участок может отображаться и нет, данные зависят от прокрутки,?

Осцилятор может "пропадать" при прокруте, если в окно просмотра попадают данные, которые резко "вне диапазона".  // Из-за автомасштабирования


Я бы мог сослаться на алгоритм, но встречаю это уже ни раз. Без инициализации там вообще прикол вылезает. в блоке инит инициализирую буфера, но почему-то инициализация не срабатывает, приходится повторять их в калькулейте, а если их там непроинициализировать, то в буфер попадают какие-то нелепые значения.

Нужно воспроизводимый тест.  Из которого баг разработчиков становится очевиден и локализуем.  То бишь - доказать нада.   Иначе ...

... Как-то в прошлом веке работал инженером в машинном зале университета.  В зале студенты обучались программированию (на Турбо-Паскале).  Так вот дня не проходило, щёб какой-нибудь умник из студентов не начинал катить бочку на "поломанный компьютер".  Я обычно заключал с таким пари на щелбан, утверждая, что ошибка у него в программе.  Потом подходил, залезал к нему в прогу и ошибку находил.  За два года работы мне не удалось получить ни одного щелбана, только раздавал (или прощал иногда). :)

Вот у меня тут похожий случай.  Давай поковыряемся,  я по честному предполагаю, что баг у меня, да больно уж трудноуловимый.  Второй год вылавливаю под настроение, и таки никак.

Подозревал, что подглючивает MathPow(),  но замена на exp(log(x)*power)  к правильной работе не привела.

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


Индикаторы оба в прицепе (один с pow(), другой с exp(log(x)*power).

Щёб было понятно - индикаторы считают степенные средние.  Линии должны быть гладкими, и синия линия ни при каких условиях не может быть ниже красной (при положительных степенях больше 1).

И еще ситуация тоже удивляет - возможность индикатора существовать внутри терминала без каких-либо признаков опознавания, что приводит к неправильной работе вновь повешенного индикатора, но это уже мелочи). 

Здесь ниасилил.  В каком смысле без опознавания?
Файлы:
 

У меня баг проявляется еще с скачками по датам. Возможен случайный прыжок на год вперед или вообще на первый бар.

Автопрокрутка графика отключена.

 
Roffild:

У меня баг проявляется еще с скачками по датам. Возможен случайный прыжок на год вперед или вообще на первый бар.

Автопрокрутка графика отключена.

Не верю.   У меня всё работает :)
 
MetaDriver:
Осцилятор может "пропадать" при прокруте, если в окно просмотра попадают данные, которые резко "вне диапазона".  // Из-за автомасштабирования


Готовьте свой лоб. Скачет или не скачут значения, но баг есть, у меня индикатор меняется на единицу и мне его не отобразить корректно в гистограмме. Правда я уже эту идею забросил с гистограммой, но всё же. Кручу колесо чуть назад и всё исчезает. Значения индикатора при этом одинаковое на всех барах.


 
zfs:

Готовьте свой лоб. Скачет или не скачут значения, но баг есть, у меня индикатор меняется на единицу и мне его не отобразить корректно в гистограмме. Правда я уже эту идею забросил с гистограммой, но всё же. Кручу колесо чуть назад и всё исчезает. Значения индикатора при этом одинаковое на всех барах.

И чего мне, опять на слово верить что ли?  Исходник давай!  :)
 

Вот какой хаос творится:

  1. переход на 12.01.2009 и начинаю тянуть мышкой
  2. на 2 секунде все пропадает
  3. на 7 секунде индюки внизу, как на верхней картинке
  4. на 8 секунде произвольный скачок на с 2009 на 2013 год

Качество получше в прикрепленной файле и видео более плавное.

Автопрокрутка графика отключена.

Файлы:
Причина обращения: