Здесь задавался вопрос, но на него так и не ответили. Тоже интересует, поэтому продублирую.
В разделе "Справочник MQL5 / Операции с массивами / ArraySetAsSeries" есть пример, когда функция ArraySetAsSeries() применяется к массиву const datetime &time[] на каждом тике:
Это что, так все делают (переворачивают массив(ы) на каждом тике), чтобы работать с массивом, как с таймсерией? Как-то громоздко выходит, если их почти все нужно перевернуть.
Ещё вопрос: могут ли массивы, используемые функцией OnCalculate(), произвольно менять направление своей индексации? Или же достаточно один раз проверить это направление?
Это что, так все делают (переворачивают массив(ы) на каждом тике), чтобы работать с массивом, как с таймсерией? Как-то громоздко выходит, если их почти все нужно перевернуть.
Ещё вопрос: могут ли массивы, используемые функцией OnCalculate(), произвольно менять направление своей индексации? Или же достаточно один раз проверить это направление?
Насколько я понимаю, ничего громоздкого там нет - это просто выставляется флаг направления индексирования.
Я выставляю направление индексации на каждом тике.
Оно, конечно, лишний код, но, зато с ним ты полностью уверен в направлении индексации.
Насколько я понимаю, ничего громоздкого там нет - это просто выставляется флаг направления индексирования.
Я выставляю направление индексации на каждом тике.
Оно, конечно, лишний код, но, зато с ним ты полностью уверен в направлении индексации.
Если у меня 200 тыс. баров в окне, на каждом тике нужно поменять индексацию для восьми буферов, а за секунду может быть несколько тиков.
Экономен ли такой расчет?
Возможно, было бы лучше, будь два варианта этой функции, одна с индексацией всех своих массивов - слева направо, вторая - справа налево.
Если у меня 200 тыс. баров в окне...
Ух ты! А чё за окно такое крутое? Где брали?
5-минутки, например, с 2012 года. В настройках терминала можно-то и неограниченное количество выставить.
С индикаторными буферами в OnInit() прописал раз через ArraySetAsSeries() - вроде как, попроще получается.
Или потом у этих буферов внутренне тоже переиндексация происходит на каждом тике?
От размера массива не зависит, это только флаг. Для индикаторных хватает установки в ините.
Для таймсерий функции хз, не экспериментировал. Да и они обычно в нормальном порядке...
От размера массива не зависит, это только флаг. Для индикаторных хватает установки в ините.
Для таймсерий функции хз, не экспериментировал. Да и они обычно в нормальном порядке...
Ясно, спасибо. Значит будем надеяться, что и в OnCalculate() также, от размера не зависит.
Если у меня 200 тыс. баров в окне, на каждом тике нужно поменять индексацию для восьми буферов, а за секунду может быть несколько тиков.
Экономен ли такой расчет?
Замена индикатора - это установка флага. Даже для сотни буферов - это будет сделано быстро. Физические данные при этом, как я понимаю, остаются на своих местах.
Не зависит ) . Вопрос в том нужно ли выставлять флаг на каждом тике.
Угу. Пишут же в справке, что нужно явно задавать направление, а можно ли это сделать единожды, непонятно.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здесь задавался вопрос, но на него так и не ответили. Тоже интересует, поэтому продублирую.
В разделе "Справочник MQL5 / Операции с массивами / ArraySetAsSeries" есть пример, когда функция ArraySetAsSeries() применяется к массиву const datetime &time[] на каждом тике:
Это что, так все делают (переворачивают массив(ы) на каждом тике), чтобы работать с массивом, как с таймсерией? Как-то громоздко выходит, если их почти все нужно перевернуть.
Ещё вопрос: могут ли массивы, используемые функцией OnCalculate(), произвольно менять направление своей индексации? Или же достаточно один раз проверить это направление?