Однократный расчет массива при оптимизации - страница 2

 
fxsaber:
Ресурсом прикрепить. Не спрашивайте как. Исходник не писал.
Сторонним софтом создать массив?
 
forexman77:

Вот и у меня дилемма возникла, как сделать так, чтобы один раз считать с файла, заполнить им массив и пользоваться этим массивом на всех проходах.

Это мне нужно, чтобы сократить время оптимизации, так как массив всегда будет неизменен и каждый раз его считать затратно. 

Ну напишите, например, скрипт, который подготовит и соберёт все данные в массив, а потом запишет готовый массив в файл. А потом при инициализации в советнике считывайте этот массив из файла. Файлом можно пользоваться столько раз, сколько Вам нужно, при каждом прогоне советника.
По-моему, Вам уже предлагали такое решение. Оно Вам не подходит?
 
forexman77:
Сторонним софтом создать массив?
Да тем же MQL5 через один отдельный проход перед оптимизацией.
 
BlackTomcat:
Ну напишите, например, скрипт, который подготовит и соберёт все данные в массив, а потом запишет готовый массив в файл. А потом при инициализации в советнике считывайте этот массив из файла. Файлом можно пользоваться столько раз, сколько Вам нужно, при каждом прогоне советника.
По-моему, Вам уже предлагали такое решение. Оно Вам не подходит?

Да, в том то и дело, что не подходит. В оптимизации проходов штук 15 000. А мне необходимо всего раз рассчитать и при последующих проходах только обращаться к массиву.

То есть, в файле у меня уже данные рассчитанные наперед: это время и уровень и они мне заранее известны. И даже считывание файла каждый раз в ините, на каждом проходе это очень затратно(строк несколько тысяч). Не знаю, как MQL5, но в MQL4 на форуме писали, что инит программа проходит на каждом проходе.

 
forexman77:
А в ините на каждом проходе нужно будет считывать?
Да. Это не сложно и не затратно. Использовать бинарный режим. Можно и не читать весь файл, а с нужной позиции. 
 
forexman77: И даже считывание файла каждый раз в ините, на каждом проходе это очень затратно(строк несколько тысяч). Не знаю, как MQL5, но в MQL4 на форуме писали, что инит программа проходит на каждом проходе.
Знаете, по-моему Вы преувеличиваете на счёт затрат на считывание массива из файла. Каждый раз, когда Виндоуз просыпается из режима сна, она восстанавливает с жесткого диска образ своего состояния, который был на момент засыпания, включая состояние всех приложений. Думаете, там мало объектов и информации? И сколько занимает времени такой выход из сна?
Вы преувеличиваете, ИМХО.
 
forexman77:

Да, в том то и дело, что не подходит. В оптимизации проходов штук 15 000. А мне необходимо всего раз рассчитать и при последующих проходах только обращаться к массиву.

То есть, в файле у меня уже данные рассчитанные наперед: это время и уровень и они мне заранее известны. И даже считывание файла каждый раз в ините, на каждом проходе это очень затратно(строк несколько тысяч). Не знаю, как MQL5, но в MQL4 на форуме писали, что инит программа проходит на каждом проходе.

классический приём из мира C/C++ : можно сделать/сконвертировать из этого вашего файла статический массив (просто текст: double arr[100500]={1,2,3....} ) и просто включить его через #include.

 
BlackTomcat:
Знаете, по-моему Вы преувеличиваете на счёт затрат на считывание массива из файла. Каждый раз, когда Виндоуз просыпается из режима сна, она восстанавливает с жесткого диска образ своего состояния, который был на момент засыпания, включая состояние всех приложений. Думаете, там мало объектов и информации? И сколько занимает времени такой выход из сна?
Вы преувеличиваете, ИМХО.

Затраты больше однозначно. Есть два варианта с неизменными настройками индикатора и с теми же значениями, но уже записанными в файл, что сбрасываются в массив.

Вариант с файлом в разы дольше считается, чем просто с расчетом индикатора в советнике.

Просто подумал, что может есть способ сохранить массив один раз и использовать его для всех проходов в оптимизации и этим разгрузить алгоритм. 

 
Maxim Kuznetsov:

классический приём из мира C/C++ : можно сделать/сконвертировать из этого вашего файла статический массив (просто текст: double arr[100500]={1,2,3....} ) и просто включить его через #include.

Если сделать так, то массив будет сохраняться при переходе на новый проход?
 
forexman77:

Затраты больше однозначно. Есть два варианта с неизменными настройками индикатора и с теми же значениями, но уже записанными в файл, что сбрасываются в массив.

Вариант с файлом в разы дольше считается, чем просто с расчетом индикатора в советнике.

Просто подумал, что может есть способ сохранить массив один раз и использовать его для всех проходов в оптимизации и этим разгрузить алгоритм. 

Рассчитайте ОДИН раз и сохраните готовый массив с результатами в файл. А потом считывайте при инициализации готовый массив из файла и сразу его используйте. Не надо снова пересчитывать. Вы уже всё посчитали до этого и сохранили. Зачем снова считать? :)
Причина обращения: