Запусти дважды в режиме отладки и посмотри сколько времени тратится на запись и чтение массива. Первый запуск запишет массив в файл, а второй запуск прочтёт его и начнёт печатать даты из массива. Потом разберись с выделенной частью, надо убрать IS_DEBUG_MODE и надо-ли вставить в условие IsOptimization()
Есть функции, что-то типа FileWriteInteger(). Идентифицировать по расположению, переменная должна быть в начале файла, после ее прочтения указатель переместится на ее конец, т.е. на начало массива, после считывания массива указатель будет перед следующей переменной...
Скоро будет статья по работе с файлами.
Как раз хотел Вам написать, что нет статьи про файловые операции. Они у Вас получаются информативные и доходчивые, непременно прочитаю, когда появится.
при распринтовке в старте выводит дату 1971 года, то есть массив пустой
for (int x=0;x<=39;x++)
{
Print("T[x]=",T[x],"x=",x);
}
Если заполнять массив в старте, то значения появляются. Может причина, в том , что массив по новой инициализирую datetaime, но без него не компилируется код?
при распринтовке в старте выводит дату 1971 года, то есть массив пустой
Если заполнять массив в старте, то значения появляются. Может причина, в том , что массив по новой инициализирую datetaime, но без него не компилируется код?
Вообщем массив пропадает. Что делаю не правильно?
посмотри warning которые высветил компилер.
ArrayResize(T,40);
datetime T[40]=
вот таким лёгким движением ты определил локальный массив T который по выходу из OnInit тю-тю..
вот таким лёгким движением ты определил локальный массив T который по выходу из OnInit тю-тю..
Пишет, что на глобальном уровне уже есть)
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use
объявление массива вместе с константной инициализаций можно (и нужно) было сделать на глоб.уровне.
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use
через = массивы можно инициализовать только при объявлении. Как-бы пережиток C , но тут так принято :-)
объявление массива вместе с константной инициализаций можно (и нужно) было сделать на глоб.уровне.
Да, попробовал работает. А без глобального уровня никак, просто это делал для снижения вычислительных затрат, чтобы один раз заполнить массив в ините и дальше использовать значения массива?
Хотя по логике переменные на глобальном уровне всегда неизменны, значит расчет производится один раз в начале программы?
Да, попробовал работает. А без глобального уровня никак, просто это делал для снижения вычислительных затрат, чтобы один раз заполнить массив в ините и дальше использовать значения массива?
Хотя по логике переменные на глобальном уровне всегда неизменны, значит расчет производится один раз в начале программы?
да, при подготовке бинарника ex4 ex5 к исполнению терминалом. Можете считать что просто ссылки перекидываются на описанный (и сохранённый внутри ex4/5 при компиляции) массив данных, а это очень быстро..
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use
Да абсолютно не важно как массив заполняется. Просто надо поставить условие, если размер массива равен нулю, то его надо просчитать, заполнить и записать в файл. А в OnInit() по моему примеру попытаться прочесть в объявленный массив. Соответственно если есть файл массива, он прочитан, массив заполнен, то вновь пересчитываться и заполняться массив не будет.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вот пример записи и чтения массива
Запусти дважды в режиме отладки и посмотри сколько времени тратится на запись и чтение массива. Первый запуск запишет массив в файл, а второй запуск прочтёт его и начнёт печатать даты из массива. Потом разберись с выделенной частью, надо убрать IS_DEBUG_MODE и надо-ли вставить в условие IsOptimization()
Есть функции, что-то типа FileWriteInteger(). Идентифицировать по расположению, переменная должна быть в начале файла, после ее прочтения указатель переместится на ее конец, т.е. на начало массива, после считывания массива указатель будет перед следующей переменной...
Скоро будет статья по работе с файлами.
Как раз хотел Вам написать, что нет статьи про файловые операции. Они у Вас получаются информативные и доходчивые, непременно прочитаю, когда появится.
Попробовал объявить массив на глобальном уровне (код mql4)
datetime T[];в ините заполнить его
при распринтовке в старте выводит дату 1971 года, то есть массив пустой
Если заполнять массив в старте, то значения появляются. Может причина, в том , что массив по новой инициализирую datetaime, но без него не компилируется код?
Вообщем массив пропадает. Что делаю не правильно?
Попробовал объявить массив на глобальном уровне (код mql4)
в ините заполнить его
при распринтовке в старте выводит дату 1971 года, то есть массив пустой
Если заполнять массив в старте, то значения появляются. Может причина, в том , что массив по новой инициализирую datetaime, но без него не компилируется код?
Вообщем массив пропадает. Что делаю не правильно?
посмотри warning которые высветил компилер.
вот таким лёгким движением ты определил локальный массив T который по выходу из OnInit тю-тю..
посмотри warning которые высветил компилер.
вот таким лёгким движением ты определил локальный массив T который по выходу из OnInit тю-тю..
Пишет, что на глобальном уровне уже есть)
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use
Пишет, что на глобальном уровне уже есть)
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use
объявление массива вместе с константной инициализаций можно (и нужно) было сделать на глоб.уровне.
Пишет, что на глобальном уровне уже есть)
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use
объявление массива вместе с константной инициализаций можно (и нужно) было сделать на глоб.уровне.
Да, попробовал работает. А без глобального уровня никак, просто это делал для снижения вычислительных затрат, чтобы один раз заполнить массив в ините и дальше использовать значения массива?
Хотя по логике переменные на глобальном уровне всегда неизменны, значит расчет производится один раз в начале программы?
Да, попробовал работает. А без глобального уровня никак, просто это делал для снижения вычислительных затрат, чтобы один раз заполнить массив в ините и дальше использовать значения массива?
Хотя по логике переменные на глобальном уровне всегда неизменны, значит расчет производится один раз в начале программы?
Пишет, что на глобальном уровне уже есть)
declaration of 'T' hides global declaration at line 40
Но, как сделать правильно. Раньше фигурными скобками не объявлял массив. Инициализировал нолем и размер устанавливал и дальше циклом заполнял. Тут, как-то по другому надо делать?
Если в ините datetime убираю, то не компилируется пишет две ошибки:
'{' - expression expected
'=' - illegal operation use