Помогите пож. разобраться с массивами

 

Как происходит расчет в тайм-сериях: слева на право или наоборот?

Как происходит заполнение массива индикатора?

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

 
В каком прядке поводите, так и проводится, само собой ничего не происходит.
 

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

Некоторое время назад, не скажу точно до какого билда, всегда было достаточно изменить индексацию только один раз

 if(prev_calculated == 0)
  {
   ArraySetAsSeries(time, true);
   ArraySetAsSeries(high, true);
   ArraySetAsSeries(low, true);
  }

Теперь-же так не работает. Надо при каждом пересчёте индикатора менять серийность индикаторных массивов.

К счастью, индикаторные буферы достаточно перенаправить только один раз в int OnInit()

 
Сергей Губарь:

Как происходит расчет в тайм-сериях: слева на право или наоборот?

Как происходит заполнение массива индикатора?

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

А что для "лево", а что "право"? Лучше оперировать таким понятием: самый правый бар на графике соответствует индексу номер N в массиве.

Если работать с таймсериями (копирование информации) в советниках, то я поступаю так (пример из 1. VR---TRI-BOYCA)

Объявляю массив rates (структура MqlRates), далее при помощи  ArraySetAsSeries устанавливаю этому массиву флаг AS_SERIES в "true" (теперь индексация элементов массива будет производиться как в таймсериях.) После запроса  CopyRates в массиве  rates (копирую шесть элементов начиная с "0") индекс элемента "0" будет соответствовать самому ПРАВОМУ бару на графике. 

//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool SearchTradingSignals(void)
  {
   double ma_filter[];
   MqlRates rates[];
   ArraySetAsSeries(ma_filter,true);
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=6;
   if(!iGetArray(handle_iMA,0,start_pos,count,ma_filter) || 
      CopyRates(m_symbol.Name(),0,start_pos,count,rates)!=count)
     {
      return(false);
     }
//
   }