#property indicator_type1 DRAW_COLOR_CANDLES - страница 2

 
barabashkakvn:

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

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

Ещё раз - перечитайте первый пост. Хейкен Аши дан для простоты. В любых других индикаторах, совмещающих в себе буферное отображение графики и построение графических объектов, остаётся та же проблема - при отключении буферов индикатора они отрисовывают на графике всякую хрень.
 
wtvirtual:
Ещё раз - перечитайте первый пост. Хейкен Аши дан для простоты. В любых других индикаторах, совмещающих в себе буферное отображение графики и построение графических объектов, остаётся та же проблема - при отключении буферов индикатора они отрисовывают на графике всякую хрень.

Вот первый пост:

wtvirtual:

Приветствую.

Столкнулся с эффектом, который не могу исправить. Подскажите, что нужно сделать для преодоления сего досадного глюка.

Для простоты возьмём исходный код индикатора Хейкен Аши из стандартной поставки терминала. Полностью оставим его без изменений, но добавим пару строк:

Теперь если повесить на график эту модификацию, отражающую суть моей проблемы, то пощёлкав по таймфреймам получим вот такую картинку:

https://charts.mql5.com/4/18/eurusd-d1-metaquotes-software-corp-temp-file-screenshot-46157.png

Соответственно вопрос - как избавиться от этого?

Смысл отключать индикаторные буфера индикатора - ведь индикаторный буфер это массив рассчитанных значений индикатора. Это напоминает желание жестоким образом убить Windows удаляя системные папки.

P.S. Про Вашу проблему на данном этапе известно только: " Приветствую.

Столкнулся с эффектом, который не могу исправить. Подскажите, что нужно сделать для преодоления сего досадного глюка." Проблему в студию, пожалуйста.

 

Вы на редкость непонятливы. Сколько ещё объяснять?

Вот нормальная работа:

https://charts.mql5.com/4/24/eurusd-h4-metaquotes-software-corp-temp-file-screenshot-46963.png

Вот уродская работа при отключении рисования цветных свеч:

https://charts.mql5.com/4/24/eurusd-h4-metaquotes-software-corp-temp-file-screenshot-45762.png

Теперь наконец понятно, или ещё объяснения нужны?

 
wtvirtual:

Вы на редкость непонятливы. Сколько ещё объяснять?

Вот нормальная работа:

https://charts.mql5.com/4/24/eurusd-h4-metaquotes-software-corp-temp-file-screenshot-46963.png

Вот уродская работа при отключении рисования цветных свеч:

https://charts.mql5.com/4/24/eurusd-h4-metaquotes-software-corp-temp-file-screenshot-45762.png

Теперь наконец понятно, или ещё объяснения нужны?

Удалите с графика все индикаторы, советники и т.п. Прицепите индикатор из 
При значении флага
_Show_HA = false

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

Фсе, я спать. Не спешите отвечать. Очистите график от всех объектов и индикаторов. 

 
БЛИН!!! ЭТО ОДИН ИНДИКАТОР!!! ВЫ В СВОЁМ УМЕ ИЛИ КАК?
 
wtvirtual:
БЛИН!!! ЭТО ОДИН ИНДИКАТОР!!! ВЫ В СВОЁМ УМЕ ИЛИ КАК?

Теперь точно последний пост на сегодня.

В Вашем исходнике добавил: 

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,limit;
   if(_Show_HA)
     {
      Print(__FUNCTION__," Флаг _Show_HA = ",_Show_HA);
      //--- preliminary calculations
      if(prev_calculated==0)

Теперь можно щелкать по разным таймфреймам и менять значение флага, а заодно поглядывать в закладку "Эксперты" терминала.

Индикатор с моим изменением добавил в конце поста.

Файлы:
 

Ладно, сделаем иначе. Поскольку вы не понимаете проблемы, предложить способ её решения вы не можете. В этой связи я бы вас попросил обойтись без постов в эту ветку. По крайней мере до тех пор, пока не вникните в суть проблемы.

Здесь есть люди, которые бы могли реально помочь справиться с досадным эффектом, показанным на картинках выше?

 

мусор в Ваших индикаторных буферах - они неинициализированы, потому и выводится всякая хрень.

Зануляйте буфера значением EMPTY_VALUE при старте и при появлении каждого нового бара (это можно всё в OnCalculate впихнуть)

 
notused:

мусор в Ваших индикаторных буферах - они неинициализированы, потому и выводится всякая хрень.

Зануляйте буфера значением EMPTY_VALUE при старте и при появлении каждого нового бара (это можно всё в OnCalculate впихнуть)

Совершенно верно. Проблему решил чуть иначе, но суть та же.

Оказалось достаточным в OnDeinit() инициализировать пустыми значениями 4 "свечных" массива. Грязь, соответственно, исчезла. 

int OnInit() {
   ...
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
}
//===========================================================================
void OnDeinit(const int reason) {
   ...
   ArrayInitialize(PDopen,EMPTY_VALUE);
   ArrayInitialize(PDhigh,EMPTY_VALUE);
   ArrayInitialize(PDlow,EMPTY_VALUE);
   ArrayInitialize(PDclose,EMPTY_VALUE);
   ChartRedraw(0);
}
 
notused:

мусор в Ваших индикаторных буферах - они неинициализированы, потому и выводится всякая хрень.

Зануляйте буфера значением EMPTY_VALUE при старте и при появлении каждого нового бара (это можно всё в OnCalculate впихнуть)

В случае отказа от расчётов в OnCalculate достаточно вернуть 0, а не rates_total. И не надо ничего занулять
Причина обращения: