Мне вот интересно. С чего вдруг пришла такая мысль, что прочитать с файла будет быстрее, чем просчитать 1 раз? Нынче процессоры уже не те, что были раньше. Сейчас рассчёты не требуют много времени.
Из практики. Есть действительно тяжелые индикаторы и их комбинации.
Из практики. Есть действительно тяжелые индикаторы и их комбинации.
Совершенно верно.
А зачем Вы на каждом OnTick() открываете хендл файла? Достаточно в OnInit() достать из bin массив, объявленный на глобальном уровне и потом перебирать его. И наоборот, в DeInit() записывать готовый массив в файл.
В принципе, да. Но тогда под каждый файл нужен свой filehandle
Как бы это сделал я.
Перед запуском оптимизации запускается оптимизация специального советника. Его цель - запись в файл хэндла индикатора (один советник - один индикатор). Период - тот, на котором будет делаться оптимизация или больший. Можно прогнать его один раз на большом периоде и не перезапускать, если не нужны свежие данные. В советнике запускается хэндл с расчетом индикатора (тем самым, долгим и тяжелым). Формируются файлы с названием "Название индикатора_символ_таймфрейм.bin". На каждом символе нужно прогнать оптимизацию столько раз, сколько нужно таймфреймов.
OnInit() советника считывает существующий файл в структуру (Время начала бара; Параметр1; Параметр2 ;...ПараметрN, Значение). В процессе прогона массив структуры дополняется новыми элементами с текущими параметрами.
OnDeinit() сортирует структуру по дате (как сортировать - вопрос технический и легко решаемый) и записывает обратно в файл.
Другой вариант - советник изначально делает новый массив структуры, а перед деинсталляцией склеивает то, что в файле с тем, что сделано. Например, так.
Все, кэш создан. Рабочий советник при запуске проверяет наличие файла. Если он есть, то копирует его в процедуре OnInit() в массив и в дальнейшем работает с массивом.
Есть но - тестирование в облаке. Но оно решается через #property tester_file.
З.Ы. Исправил опечатку.
Как бы это сделал я.
Спасибо. Надо так и сделать. Тем более, что мой вариант, при считывании файла, тоже достаточно долгий...

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть "тяжёлые" индикаторы. По крайней мере при включении которых в советник, оптимизация, да и просто тест идёт крайне медленно. Вот я и подумал что, возможно, стоит сначала создать файл кэша таких индикаторов и при оптимизации уже брать их значения из кэша, а не рассчитывать их на лету...
Только не уверен, что организовал этот кэш оптимально. Может подскажет кто-нибудь, как будет барче?