Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сотни статей помогут создать торгового робота. Заходи и изучай!
I_SPQR_I
212
I_SPQR_I 2013.05.19 08:26 
Заметил, что довольно часто имеет место следующая особенность при работе написанного мной индикатора: происходит неверное определение линии индикатора, что становится очевидным, когда я провожу переинициализацию индикатора (например выбором заранее сохраненного template) - линия перерисовывается, иногда довольно сильно. Вопрос к знающим такой: как проводить переинициализацию индикатора в процессе нормальной работы индикатора, то есть при запуске функции start? Ну или как поправить работу индикатора?
Victor Nikolaev
Модератор
14351
Victor Nikolaev 2013.05.19 08:53  
Сделать нормальный индикатор
ktest0
631
ktest0 2013.05.19 10:51  
I_SPQR_I:
Заметил, что довольно часто имеет место следующая особенность при работе написанного мной индикатора: происходит неверное определение линии индикатора, что становится очевидным, когда я провожу переинициализацию индикатора (например выбором заранее сохраненного template) - линия перерисовывается, иногда довольно сильно. Вопрос к знающим такой: как проводить переинициализацию индикатора в процессе нормальной работы индикатора, то есть при запуске функции start? Ну или как поправить работу индикатора?


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

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

I_SPQR_I
212
I_SPQR_I 2013.05.19 15:43  
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);
}


Victor Nikolaev
Модератор
14351
Victor Nikolaev 2013.05.20 00:23  
I_SPQR_I:

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




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

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

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

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

Victor Nikolaev
Модератор
14351
Victor Nikolaev 2013.05.20 01:52  
I_SPQR_I:

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

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


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

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

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

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

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

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

Рустам
3597
Рустам 2013.05.20 14:36  
I_SPQR_IВот и в чем здесь дело?

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

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


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

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

I_SPQR_I
212
I_SPQR_I 2013.05.20 16:37  
FAQ:

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

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

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

Файлы:
/ /1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий