Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1018

 
Trader76:

Я вот писал для замены коротких названий для символов, разбейте строки на буквы, и делайте замену.

 

спасибо Вам большое, так и сделаю.
 

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

Индикатор -полосы Болинджера с отображением значения девиации. Так как раньше токого не было, а началось именно после добавления " отображением значения девиации", но что именно в коде приводит снижению быстродействия я не знаю.

Может подскажет кто-нибудь  как вообще такие вопросы решаются, или с чего начинать? 

[Удален]  
FiVik:

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

Индикатор -полосы Болинджера с отображением значения девиации. Так как раньше токого не было, а началось именно после добавления " отображением значения девиации", но что именно в коде приводит снижению быстродействия я не знаю.

Может подскажет кто-нибудь  как вообще такие вопросы решаются, или с чего начинать? 

Скорее всего стоит большой период для расчёта, вот и виснет, не думаю что нужно считать на 5000 баров в историю, чтоб получить текущие значения.
 

Trader76  вот функция которая была добавлена:  iMAOnArray. В ней нужно указать количество элементов для вычисления. Я указал- все элементы массива, только так получается правильное значение средней стандартного отклонения.

Проверял накладывая на индикатор стандартного отклонения скользящую среднюю. Если же указывать конкретное число элементов, то  высчитываемое значение меняется.

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

Период высчитываемой средней равен 30. 

 
FiVik:

Trader76  вот функция которая была добавлена:  iMAOnArray. В ней нужно указать количество элементов для вычисления. Я указал- все элементы массива, только так получается правильное значение средней стандартного отклонения.

Проверял накладывая на индикатор стандартного отклонения скользящую среднюю. Если же указывать конкретное число элементов, то  высчитываемое значение меняется.

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

Период высчитываемой средней равен 30. 

 

Код покажите
 

Это именно то что я добавил, до этого индикатор не тормозил.

//+------------------------------------------------------------------- 
//|Расчет среднего значения девиации
//+------------------------------------------------------------------- 
      Averagedeviation=iMAOnArray(deviationBuffer,0,30,0,MODE_SMA,i);
//+------------------------------------------------------------------- 
//|Вывод значения на экран отдельным объектом
//+------------------------------------------------------------------- 
      string Text =DoubleToStr(deviation,4);                   // Текст для отображения с указанием количества знаков ппосле запятой
      if(deviation<=(Averagedeviation*1.1)&&deviation>=(Averagedeviation*0.9))// Выбор цвета зависит от динамики
      Color_Day_Percent = Color_0;                             // Цвет для 0
      if(deviation>Averagedeviation*1.1)                       // Выбор цвета зависит от динамики
      Color_Day_Percent = Color_Up;                            // Цвет для +
      if(deviation<Averagedeviation*0.9)                       // Выбор цвета зависит от динамики
      Color_Day_Percent = Color_Dn;                            // Цвет для -
      
      if(ObjectFind(Obj_Name)==-1)                             // Если объекта нет..
      {
      ObjectCreate(Obj_Name,OBJ_LABEL,0,0,0);                  // Создаём новый объект 
      ObjectSet    (Obj_Name,OBJPROP_CORNER,    1);            // Угол привязки            
      ObjectSet    (Obj_Name,OBJPROP_XDISTANCE,15);            // Координата Х
      ObjectSet    (Obj_Name,OBJPROP_YDISTANCE,15);            // Координата Y
      }
      ObjectSetText(Obj_Name,Text,10,"MS Sans Serif",Color_Day_Percent);// Текстовое описание объекта      
      i--;   
     }
//----------------------------------------------------------------------
   return(0);
  }
int deinit()
   {
   ObjectDelete(Obj_Name);                                      // Удаление объекта при выходе
   return(0);
   }
//+------------------------------------------------------------------+
 
FiVik:

Это именно то что я добавил, до этого индикатор не тормозил.

 

Ну не хотите, как хотите
 
Vinin:
Ну не хотите, как хотите

Не понял. В смысле не хочу?

Нужен весь код ?  Хорошо.  

Название кириллицей поэтому такие иероглифы .

Файлы:
 
FiVik:

Не понял. В смысле не хочу?

Нужен весь код ?  Хорошо.  

Название кириллицей поэтому такие иероглифы .

Проще было полностью переделать

Файлы:
 
Vinin:

Проще было полностью переделать

 

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

Я не думаю, что мне постоянно так будут ошибки исправлять. Плюс как-то учится надо, а не зная ошибок нельзя быть уверенным что они снова не вылезут.