Советник не удаляет индикатор с графика

 

Доброго времени суток!

Нужно, чтобы советник показывал на графике два мувинга при своей работе. Но при деинициализации их удалял с графика (свои добавленные, другие индикаторы не трогал). Один мувинг удаляет, а второй почему-то нет. Не поможете-ли отредактировать код?

int indicators;
int    MA20_handle;
int    MA100_handle;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   indicators = ChartIndicatorsTotal(0, 0);
   MA20_handle = iMA(Symbol(), PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE);
   MA100_handle = iMA(Symbol(), PERIOD_CURRENT, 100, 0, MODE_SMA, PRICE_CLOSE);
   ChartIndicatorAdd(0, 0, MA20_handle);
   ChartIndicatorAdd(0, 0, MA100_handle);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//Какой-то код
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//MA20 удаляется
   ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, indicators));
//МА100 ни в какую не хочет удаляться
   ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, indicators + 1));
  }
 
Удаляя какой-то индикатор количество индикаторов на графике уменьшается (по-капитански, но это так). В таком случае индекс второго индикатора уменьшается на единицу.

То есть, удалять нужно либо с конца (что, наверное, корректнее):
void OnDeinit(const int reason) {
   ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, indicators + 1));
   ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, indicators));
}


Либо по одному и тому же индексу:

void OnDeinit(const int reason) {
   ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, indicators));
   ChartIndicatorDelete(0, 0, ChartIndicatorName(0, 0, indicators));
}
 
Yevhenii Levchenko #:
Удаляя какой-то индикатор количество индикаторов на графике уменьшается (по-капитански, но это так). В таком случае индекс второго индикатора уменьшается на единицу.

То есть, удалять нужно либо с конца (что, наверное, корректнее):


Либо по одному и тому же индексу:

Благодарю!

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