Renat, вопрос был скорее теоретический, нежели практический.
Дабы в тумане не блуждать, сошлюсь на пример из справки по iFractals. Правда, там индикатор, но упростим задачу до однократного просчёта графической разметки скриптом.
Положим, я вознамерился узнать время всех верхних фрактальных баров на всей истории (или на её значительной части на каком-нибудь среднем таймфрейме, где фракталов будет предостаточно). Правильно ли я понял, что лучше многократно побеспокоить CopyTime в цикле при FrUpBuffer[shift]!=EMPTY_VALUE на глубину 1 элемент:
а уж затем в том же цикле при том же if'е просто вывести Print'ом значения времени фрактальных баров?
И там, и там задачи идентичные, просто реализации чуть разные.
Интуитивно понимаю, что копировать в массив подряд огормную цепочку значений времени баров (как фрактальных, так и пустых) - это дольше и дороже; с другой стороны, дёргать многократно CopyTime на глубину в 1 элемент - удовольствие сомнительное.
Если первый вариант быстрее, то это абсолютный выигрыш или всё зависит от общего количества попавшихся фракталов (например, на мелких ТФ их значительно больше)?
Здесь https://www.mql5.com/ru/forum/3775/page59#comment_94865 я задавал вопрос о помещении в цикл объявления, связывания, инициализации и прочих действий над множеством однотипных буферов с целью сокращения кода, улучшения читабельности и управляемости. Ответ с наглядным примером получен (класс, структура), с этим разобрался.
Теперь по тому же принипу попытался утрамбовать множественное назначение #property типа:
1. for на глобальном уровне запрещён, то есть самое раннее использование - не ранее как в OnInit(), но #property, как известно, объявляются на глобальном уровне до всех прочих функций;
2. при попытке назначить свойства индикаторам в цикле в OnInit():
// понимаю, что сочинил бред
for (int i=0; i<NUMBER; i++)
{
#property Property_Array[i].indicator_label (string)("Fractal"+i)#property Property_Array[i].indicator_type DRAW_ARROW#property Property_Array[i].indicator_color clrArr[i]
}
компилятор ругается на '#' (как и ожидалось): '#property' - unexpected token. Подкажите, осуществима ли затея в принципе и если да, то как?
Renat, вопрос был скорее теоретический, нежели практический.
Дабы в тумане не блуждать, сошлюсь на пример из справки по iFractals. Правда, там индикатор, но упростим задачу до однократного просчёта графической разметки скриптом.
Положим, я вознамерился узнать время всех верхних фрактальных баров на всей истории (или на её значительной части на каком-нибудь среднем таймфрейме, где фракталов будет предостаточно). Правильно ли я понял, что лучше многократно побеспокоить CopyTime в цикле при FrUpBuffer[shift]!=EMPTY_VALUE на глубину 1 элемент:
и получить более быстрый результат, нежели одним махом съедать историю CopyTime'ом на глубину FrUpBuffer:
а уж затем в том же цикле при том же if'е просто вывести Print'ом значения времени фрактальных баров?И там, и там задачи идентичные, просто реализации чуть разные.
Интуитивно понимаю, что копировать в массив подряд огормную цепочку значений времени баров (как фрактальных, так и пустых) - это дольше и дороже; с другой стороны, дёргать многократно CopyTime на глубину в 1 элемент - удовольствие сомнительное.
Если первый вариант быстрее, то это абсолютный выигрыш или всё зависит от общего количества попавшихся фракталов (например, на мелких ТФ их значительно больше)?
Здесь https://www.mql5.com/ru/forum/3775/page59#comment_94865 я задавал вопрос о помещении в цикл объявления, связывания, инициализации и прочих действий над множеством однотипных буферов с целью сокращения кода, улучшения читабельности и управляемости. Ответ с наглядным примером получен (класс, структура), с этим разобрался.
Теперь по тому же принипу попытался утрамбовать множественное назначение #property типа:
и возымел по меньшей мере две проблемы:
1. for на глобальном уровне запрещён, то есть самое раннее использование - не ранее как в OnInit(), но #property, как известно, объявляются на глобальном уровне до всех прочих функций;
2. при попытке назначить свойства индикаторам в цикле в OnInit():
компилятор ругается на '#' (как и ожидалось): '#property' - unexpected token.Подкажите, осуществима ли затея в принципе и если да, то как?
Подскажите, можно ли как-то объявить двухмерный массив массивов?
Что-то типа этого:
Подскажите, можно ли как-то объявить двухмерный массив массивов?
массив структур у которых поля будут массивами можно объявить, компилятор даже пропускает динамические массивы в структуре:
Подскажите, можно ли как-то объявить двухмерный массив массивов?
Что-то типа этого:
IgorM, x100intraday
Спасибо за варианты. Думаю это должно подойти, буду пробовать.
IgorM, x100intraday
Спасибо за варианты. Думаю это должно подойти, буду пробовать.
Кстати имя "Buffer" можно поменять на "_" или ещё какую нибудь загагулину тогда вообще будет полная наглядность вызова:
Кстати имя "Buffer" можно поменять на "_" или ещё какую нибудь загагулину тогда вообще будет полная наглядность вызова:
А вот как всё это с #property провернуть? - интересно...
Неужто никаких идей?
А вот как всё это с #property провернуть? - интересно...
Неужто никаких идей?