Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1356

 
Владимир правило сравнения double знаю. Значит без доп.условий нельзя сделать?
 
Oleg Kolesov #:
Владимир правило сравнения double знаю. Значит без доп.условий нельзя сделать?

Каких доп. условий?


А можно ещё лучше, без сравнения:

      //---------------------------------------------+
      levelcol1[i]=1.0;
      if(level1[i]>level1[i+PeriodSh])
        {
         levelcol1[i]=0.0;
         continue;
        }
      /*if(CompareDoubles(level1[i],level1[i+PeriodSh]))
        {
         levelcol1[i]=1.0;
         continue;
        }*/
      if(level1[i]<level1[i+PeriodSh])
        {
         levelcol1[i]=2.0;
         continue;
        }
     }  //--- Возвращаемое значение prev_calculated для следующего вызова
 
Спасибо за помощь.
 
Vladimir Karputov #:

Каких доп. условий?


А можно ещё лучше, без сравнения:

Тоже самое получается, если сравнивать на равенство без нормализации.  

 
Главный вопрос остался не решенным. Как окрасить буфер в два цвета. >= Синий до <= Красный.
 
Oleg Kolesov #:
Главный вопрос остался не решенным. Как окрасить буфер в два цвета. >= Синий до <= Красный.

А в случае когда равно, как узнать, какой это вариант, когда больше или равно или же когда меньше или равно? Вот ведь задача какая)

 
Oleg Kolesov #:
Вот ведь задача какая? Цикл в цикле?  ArrayBsearch?   ArraySort?  Какими средствами?

Гусары молчать! 

Апокалипсис какой-то. 

Разум лечить надо.

 
Сделаю перерыв. Спасибо.
 

Прошу помощи с удалением индикатора из основного окна

Например размещены несколько индикаторов Custom MA, каждый вызывается посредством iCustom(handleMA,...,...).

Таким образом на графике отображается десяток скользящих средних

Далее по таймеру необходимо пересчитать данные индикаторы.

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

Теперь непосредственно проблема: старые линии остаются на графике при каждой новой итерации.

Пробовал их удалять двумя способами:

Graph_MA[i] = iCustom(_Symbol,Timeframe,"MA", /*параметры индикатора*/);   
for(int i=0; i < kol_Lines; i++) 
     {
      res = IndicatorRelease(Graph_MA[i]);
     }

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

Второй способ:

name_MA[i]=StringFormat("MA_Line # %d", i);
IndicatorSetString(INDICATOR_SHORTNAME,name_MA[i]);
res = ChartIndicatorDelete(0, 0, name_MA[i]);

Безрезультатно: res всегда false. 

 
qadexys #:

Прошу помощи с удалением индикатора из основного окна

Например размещены несколько индикаторов Custom MA, каждый вызывается посредством iCustom(handleMA,...,...).

Таким образом на графике отображается десяток скользящих средних

Далее по таймеру необходимо пересчитать данные индикаторы.

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

Теперь непосредственно проблема: старые линии остаются на графике при каждой новой итерации.

Пробовал их удалять двумя способами:

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

Второй способ:

Безрезультатно: res всегда false. 

Такие вот особенности IndicatorRelease() - это не удаление индикатора, а уведомление терминала о том, что индикатор больше не нужен. Дальше терминал сам решает, когда его удалить. Через несколько секунд обычно это происходит.  

Может, есть какие хитрости - не знаю. Может, попробовать переключить график.

Причина обращения: