Проблема с отрисовкой/вычислением индикаторов в терминале

 
Заметил, что довольно часто имеет место следующая особенность при работе написанного мной индикатора: происходит неверное определение линии индикатора, что становится очевидным, когда я провожу переинициализацию индикатора (например выбором заранее сохраненного template) - линия перерисовывается, иногда довольно сильно. Вопрос к знающим такой: как проводить переинициализацию индикатора в процессе нормальной работы индикатора, то есть при запуске функции start? Ну или как поправить работу индикатора?
 
Сделать нормальный индикатор
 
I_SPQR_I:
Заметил, что довольно часто имеет место следующая особенность при работе написанного мной индикатора: происходит неверное определение линии индикатора, что становится очевидным, когда я провожу переинициализацию индикатора (например выбором заранее сохраненного template) - линия перерисовывается, иногда довольно сильно. Вопрос к знающим такой: как проводить переинициализацию индикатора в процессе нормальной работы индикатора, то есть при запуске функции start? Ну или как поправить работу индикатора?


Или код в студию - кто знает что там вообще написано.

Или вам сюда ->  https://www.mql5.com/ru/forum/133408

 
ktest0:


Или код в студию - кто знает что там вообще написано.

Или вам сюда ->  https://www.mql5.com/ru/forum/133408


весь код я писать не буду


представлю примерную блок схему

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//-----
double fx[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

  SetIndexBuffer(0, fx);  // Буферы массивов индикатора
 
  SetIndexStyle(0, DRAW_LINE, 4, 1, Black);
 
  SetIndexLabel(0, "fx"+" ("+A+"-"+B+")");


  SetIndexEmptyValue(0, 0.0);


  IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   

  if(                          ) //запуск расчетного блока происходит через заданные периоды времени
    {
            //   Здесь происходит расчет массива данных. Они помещены в архиве ArrDeg
              ArrayInitialize(fx, 0);
           
              ArrayCopy( fx,ArrDeg,Sh+shift0,0,WHOLE_ARRAY);// А здесь происходит копирование в буфер индикатора
             
              WindowRedraw();
          }
    }

  return(0);
}


 
I_SPQR_I:

весь код я писать не буду




Ну не хотите, значит не надо. Для вставки кода используйте кнопку SRC
 
Vinin:

Ну не хотите, значит не надо.

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

если там будет стоять к примеру  ArrDeg[i]=(Close[i]+Open[i]))/2 это как то поможет?

 
I_SPQR_I:

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

если там будет стоять к примеру  ArrDeg[i]=(Close[i]+Open[i]))/2 это как то поможет?


Похоже Вам сюда нужно было обращаться
 
Vinin:

Похоже Вам сюда нужно было обращаться

Понимаете, расшифровка расчета массива ArrDeg вам ничем помочь не сможет.

Может я не совсем точно определил проблему в первом сообщении. Проблема не в точности расчета ArrDeg: расчет проверен и перепроверен.

Проблема в отрисовке линии индикатора, помещаемой в буфер fx. Поясню более подробно. В процессе работы индикатора, связанной с приходом очередной котировки, могут возникнуть ситуации, когда почему то начинает отрисовываться искаженная линия, которая может даже иметь противоположное верному направление. Это становится особенно заметно, когда советник продолжает держать убыточную позицию, хотя цена уже  довольно сильно сдвинулась в противоположном направлении. Я естественно обращаю на это внимание и выясняется, что линия отрисована неверно. Провожу переинициализацию индикатора (с помощью заранее сохраненной схемы-template или вызовом окна свойств индикатора с последующим нажатием OK). И происходит чудо!!! Она моментально становиться правильной и эксперт закрывает убыточную сделку.

Вот и в чем здесь дело?

 
I_SPQR_IВот и в чем здесь дело?

  Кривизне расчета\перерасчета, либо вы показываете весь ваш код, и мы дружно вам помогаем, или продолжайте биться головой ап стену , пока самостоятельно не дойдете.
 
FAQ:

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


О, это дивное ощущение когда по собственной неопытности думаешь что держишь за жопу самый что ни на есть ГРААЛЬ!

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

 
FAQ:

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

ну что ж. попробуйте, пожалуйста

необходимые файлы прикреплены

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