А для реальной работы, наверное, лучше писАть в файл - и память будет свободна, и при сбое информация не потеряется.
Думаю, раз в сутки записать в файл не слишком вычислительно накладно. Если опер. памяти хватает, и машина стоит на хорошем UPS'e, можете рискнуть держать массив в памяти.
А для реала в любом случае лучше в файл - на одном эксперте не заметно, а на десятке почувствуется.
Буду писать в массив, был не уверен что в него можно записать 100тыс чисел. Мне нужно тики писать за последние сутки для встроенного оптимизатора, в начале следующих суток несколько проходов, затем тики удаляются и пишутся заново. UPS пол часа держит, в принципе за год около трех отключений по вине электричества.
Спасибо.
Для тестера (и оптимизатора) это "раз в сутки" будет наступать несколько раз в секунду.
Хорошее замечание, Андрей, я упустил это из виду. Когда у меня терминалы молотят сутками переборы в SQL базу, о файловой оптимизации поневоле задумаешься. Жаль, терминал не позволяет отключить логирование совсем :(, у него три папки logs, если не удалять их скриптами, за пару дней они съедают 20-30 Гб.
А к текущему вопросу топика можно, например, так:
if(IsTesting()) { // test mode: use array in memory } else { // real-time mode: write array to file }
А ни кто не в курсе какое максимальное количество элементов массива можно создать? или ограничено размерностью типа инт?
А ни кто не в курсе какое максимальное количество элементов массива можно создать? или ограничено размерностью типа инт?
Ограниченно размером адресуемой памяти для 32-х разрядного приложения. В ОС х32 от 2 Гб до 4 Гб (в зависимости от настроек ОС). В ОС х64 - 4 Гб.
Спасибо огромное
А то я скриптик уже поставил и он у меня 8 млн уже дошел в течении 6 суток все никак не исполнится
код:
#property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int i; int mas[]; int start() { //---- for(i=0;i>=0;i++){ if (GetLastError()!=0){ return; } ArrayResize(mas,i+1); mas[i]=i; if(mas[i]!=i){ return; } Print(mas[i]); } //---- return(0); } //+---------------
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток, у меня вопрос...
Есть необходимость записать 100тыс. чисел double, числа будут ежесуточно удалятся и записываться заново. Как это лучше сделать, писать в файл или в массив? При работе эти числа используются экспертом только раз в сутки. Если писать в файл то как это отразится на скорости тестирования и оптимизации, и вообще использует ли тестер записанные экспертом файлы при тестировании? Если писать в массив - есть ли какие-то ограничения на его размер?
Спасибо.