Вот, в догонку
Направление индексации в массивах, буферах и таймсериях
Все массивы и индикаторные буферы по умолчанию имеют направление индексации слева направо. Индекс первого элемента всегда равен нулю. Таким образом, самый первый элемент массива или индикаторного буфера с индексом 0 по умолчанию находится на крайней левой позиции, последний элемент находится на крайней правой позиции.
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
Таймсерии представляют из себя массивы с обратной индексацией, то есть самый первый элемент таймсерии находится на крайней правой позиции, а последний элемент таймсерии находится на крайней левой позиции. Так как таймсерии предназначены для хранения исторических ценовых данных по финансовым инструментам и обязательно содержат информацию о времени, то можно сказать, что самые свежие данные в таймсерии находятся в правой крайней позиции, а самые старые в крайней левой позиции.
Поэтому, элемент с индексом ноль в таймсерии содержит информацию о самой последней котировке по инструменту. Если таймсерия представляет данные по дневному таймфрейму, то на нулевой позиции содержатся данные текущего незавершенного дня, а на позиции с индексом один хранятся данные вчерашнего дня.
То есть получается что price[] это не таймсерия, а по умалчанию буфер, если не использовать ArraySetAsSeries(). Правильно?
tochno =)))
i eshe mnogo veselogo v mql5 =))))
tochno =)))
i eshe mnogo veselogo v mql5 =))))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Справочник по mql5 гласит
Доступ к таймсериям и данным индикаторов
...Исторически сложилось так, что доступ к данным в ценовом массиве производился с конца данных. Физически новые данные всегда дописываются в конец массива, но индекс этого массива всегда равен нулю. Индекс 0 в массиве-таймсерии означает данные текущего бара, то есть бара, который соответствует незавершенному промежутку времени на данном таймфрейме.
Если я это правильно понял, то нумерация баров такая же как и в mql4, т.е. текущий бар имеет индекс 0. Но если посмотреть на код Custom Moving Average.mq5 то вижу
где выделенная красным цветом линия говорит мне что более давние цены имеют меньший индекс, что противоречит справочнику. Теперь поглядим на код того же индикатора в mql4
Тут всё сходится - более давние бары имеют больший индекс.
Так какова же ситуация в mql5? Судя по всем индикаторам, которых я видел здесь, нумерация баров изменилась и теперь текущий бар имеет индекс rates_total-1. Или я чего-то не понимаю? Поправьте либо меня, либо справочник.