Форум » Консультации по программированию » Индикатор начал странно рисовать » Ответить

Индикатор начал странно рисовать

hoz: Я чутка переделал индюк из статьи. В принципе, всё осталось как и было, кроме нескольких моментов, которые пришлось сделать, т.к. при компиляции с свойством #property strict появлялись ошибки компиляции, и выход за пределы массива.. Я эту ошибку поправил. Также решил уйти от IndicatorCounted(). Больше ничего не трогал. Так вот. Долбаюсь уже пару недель. Суть в том, что если работает индюк в тестере, то всё, как-бы чётко и нет никаких косяков. А если кидать на график в реал-тайме, то зиг-заг рисуется какой-то "подгулявший": Получается, что между экстремумами зиг-зага имеются переломы какие-то дополнительные. На графике всё видно. Что это такое вообще? Как решить вопрос? Уже как только не крутил не вертел индюк, не рисуется всё как нужно. Хотя, когда кидаю индюк на график то, изначально отрисовка корректная полностью, а дальше... абы что. Если ТФ сменить, то снова всё чётко и корректно, а дальше.. абы что.

Ответов - 2

hoz: На самом деле, в общем-то я добавил сюда лишь функцию, которая возвращает количество баров, необходимых для расчёта (аналог rates_total). Вот она: //+---------------------------------------------------------------------------------------------------------------------------------------+ //| Проверка общего количества рабочей баровой таймсерии | //+---------------------------------------------------------------------------------------------------------------------------------------+ int RatesCount() { for (int i = 0; i < Bars - 1; i++) { currentRatesCount++; // Количество рабочей баровой таймсерии if (i_dtBuffLimitTime >= Time) break; } return (currentRatesCount); } Ну и поправил по аналогии функцию GetRecalcIndex. Больше ничего, на данный момент, не делал с ней, т.к. появились непонятно. Огромная просьба помочь понять причину. А то индикатор получается ужаснейший какой-то: Вот сам индикатор, кстати.

Scriptong: hoz пишет: Вот сам индикатор, кстати. Непонятно, чем так не нравится функция GetRecalcIndex, что она была так изуродована? Также неясно, зачем функция RatesCount вызывается еще на этапе инициализации индикатора? Более того, в функции RatesCount используется глобальная переменная currentRatesCount, которая не инициализируется при каждом новом выполнении функции, т. е. на входе в переменной всегда мусор. Да, вместо функции RatesCount достаточно воспользоваться стандартной функцией iBarShift. Чтобы как-то помочь, нужно понять, что Вы хотели получить в итоге. То есть возвращаемся к исходному индикатору и уже от него пляшем.



полная версия страницы