исчезающие индикаторы

 
Индикаторы, имеющие участки буферов с постоянными, неменяющимися значениями имеют свойство исчезать из окна при прокрутке.
Проверьте пож-ста.

Пример:
#property copyright "Copyright © 2006, Ltd."
#property link      "http://www...net"
//
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_width1 2
#property indicator_color2 Green
#property indicator_width2 1
//
int showbar;
double buf0[],buf1[];
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,buf0); SetIndexStyle(0,DRAW_ARROW); SetIndexLabel(0,"0");
   SetIndexBuffer(1,buf1); SetIndexStyle(1,DRAW_ARROW); SetIndexLabel(1,"1");
   //
   showbar=WindowBarsPerChart()+50; IndicatorShortName("test"+showbar);
   //
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   for(int i=0; i<Bars; i++) {
                              if(i<20)         { buf0[i]=0.0; buf1[i]=0.1; continue; }
                              if(i<20)                                     continue;
                              if(i<showbar)    { buf0[i]=0.0; buf1[i]=0.0; continue; }
                              if(i<showbar+100)                            continue;
                              buf0[i]=0.0; buf1[i]=1.0;
                             }
   return(0);
  }
 
на начальном этапе сталкивался с подобным поведением (года два назад), оказалось что был брак в коде, выявил путем распринтовки результатов просчета индикатора, там на участке (вроде исчезающем) реальные значения буферов индикатора были либо отрицательные, либо у нуля, либо очень большие, инициализацию тоже посмотри
 
на начальном этапе сталкивался с подобным поведением (года два назад), оказалось что был брак в коде, выявил путем распринтовки результатов просчета индикатора, там на участке (вроде исчезающем) реальные значения буферов индикатора были либо отрицательные, либо у нуля, либо очень большие, инициализацию тоже посмотри

Как, это избежать понятно...
Хотелось-бы, чтобы разработчики посмотрели - есть ли возможность поправить?
 
Индикатор рисует именно то, что в нем заложено.

//+------------------------------------------------------------------+
//|                                                        zigan.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                             http://www.metaquotes.ru/forum/8089/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.ru/forum/8089/"

//
#property indicator_separate_window

#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Green

#property indicator_width2 1
#property indicator_width1 2

//
int showbar;
double buf0[],buf1[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,buf0); 
   SetIndexStyle(0,DRAW_ARROW); 
   SetIndexLabel(0,"0");
   SetIndexBuffer(1,buf1); 
   SetIndexStyle(1,DRAW_ARROW); 
   SetIndexLabel(1,"1");
   //
   showbar=WindowBarsPerChart()+50; 
   IndicatorShortName("test"+showbar);
   Comment("showbar=",showbar);
   //
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   for(int i=0; i<Bars; i++) 
     {
      if (i<20) 
        {
         buf0[i]=0.0; 
         buf1[i]=0.1; 
         continue; 
        }
      if (i<20)  continue;
      if(i<showbar)    
        {
         buf0[i]=0.0; 
         buf1[i]=0.0; 
         continue; 
        }
      if  (i<showbar+100) continue;
      buf0[i]=0.0; 
      buf1[i]=1.0;
     }
   return(0);
  }
//+------------------------------------------------------------------+
  




Вопрос в чем?


 


Вопрос в чем?



В том, что индикатор исчезает.
(В индикитор заложено лишь желание продемонстрировать, что такие индикаторы способны исчезать)

Попробуите уменьшить окно, сдвинуться вправо к нулевому бару и по одному бару двигаться влево...
Попытка проиллюстрировать вот здесь "MQL4: Картинка для форума на metaquotes"
 
А если выставить диапазон изменений (когда значений нет, то вычислить размах окна не просто)\


 
А если выставить диапазон изменений


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

когда значений нет, то вычислить размах окна не просто


размах можно брать из предидущего окна, где он был уже посчитан.

Хотя, конечно, если сложно поправить можно оставить как есть. Вопрос не критичен.
 
А если выставить диапазон изменений


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

когда значений нет, то вычислить размах окна не просто


размах можно брать из предидущего окна, где он был уже посчитан.

Хотя, конечно, если сложно поправить можно оставить как есть. Вопрос не критичен.


Я думаю, тут гораздо проще. Берется окно (в прямом смысле этого слова) м на нем ищутся минимум и максимум. Когда значений нет (или они равны нулю), то высота окна слегка плывет (точнее масштаб). И никто не заморачивается теми значениями, что были раньше (чтобы не перегружать терминал).
Причина обращения: