Явление Христа народу - как обьяснить глюк? - страница 2

 
Vinin:


Маленькая поправка

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


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

Приход первого тика:

Приход истории, полный пересчет (без переинициализации):

Переинициализация решает проблему (в моем частном случае два индикаторных буфера TrendUp и TrendDown):

...........
   int counted_bars = IndicatorCounted();
//---- check for possible errors
   if(counted_bars < 0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars > 0) counted_bars--;

   limit=Bars-counted_bars;
   if (limit > 0)
   {
      limit = Bars - 1;
      ArrayInitialize(TrendUp, EMPTY_VALUE);
      ArrayInitialize(TrendDown, EMPTY_VALUE);
   }
...........
 
Azzx:

Ок, попробую подловить. Решение сильно "радикально", имхо. Но интересно - поможет ли?

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

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

 
Mislaid:


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

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

Воопщем, психическое здоровье надо беречь и не подвергать его зря таким испытаниям индикаторными глюками. :)

 
Andrei01:

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

Воопщем, психическое здоровье надо беречь и не подвергать его зря таким испытаниям индикаторными глюками. :)


OffTop
 
Mislaid:

OffTop
Почему же? Систематизировать код вам и другие люди посоветовали.
 
Andrei01:
Почему же? Систематизировать код вам и другие люди посоветовали.

Вот так, просто и коротко, сразу бы и написали. Семантика русского языка настолько богата
 
Mislaid:

Вот так, просто и коротко, сразу бы и написали. Семантика русского языка настолько богата
Ну так сразу и написал. И всё остально тоже верно и относится к теме, если чуток подумать.
Причина обращения: