Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Отслеживай хиты продаж в Маркете!
Dmitry Sumsky
665
Dmitry Sumsky 2016.02.22 01:31 

Подскажите где можно найти информацию по сохранению массивов и работе с ними в режиме реального времени? В принципе, оперативная память компьютера ни чем не отличается от постоянной памяти (жесткий диск). Единственное отличие - это оперативка стирается при выходе из программ или при выключении компьютера.

Массивы в основном 2-х мерные, но есть и 3-х мерные типа double. Есть ли вариант сохранения и работы с ними по типу глобальных переменных? Глобальные переменные могут сохранять только 1 значение. Или 1 глобальную переменную можно записать как 1 массив?

Работа с файлом дело долгое. Хотелось бы что-то по-быстрее и не слишком сложное...

George Merts
3280
George Merts 2016.02.22 05:40  

Судя по всему, вы плохо понимаете суть работы памяти - оперативной и дисковой. Потому-то все данные и хранятся в оперативке, что доступ к ней значительно быстрее, чем к диску. Но при этом для долгого хранения используется диск, потому, что он, в отличие от ОЗУ - не теряет информацию при выключении. Глобальные переменные - точно так же записываются сперва в ОЗУ, но потом перекидываются на диск для долгого хранения.

Если вам необходимо сохранить информацию в массиве после выхода из программ или выключения компьютера - единственный путь - запись в файл на диск. (В теории, конечно, можно использовать доступ в сеть, но, скорее всего, он не будет быстрее дискового доступа - поскольку там все равно информация будет храниться на диске)

Dmitry Sumsky
665
Dmitry Sumsky 2016.02.22 08:53  

Если копнуть глубже, то понятно, что ПЗУ (программное запоминающее устройство), оно же ОЗУ (основное (или оперативное) запоминающее устройство) и ППЗУ (постоянное программное запоминающее устройство) имеют одни и те же биты для хранения информации.

У меня вопрос. Есть ли какая-нибудь функция в МТ4, с помощью которой можно запоминать на диск то же самое, что и в оперативке, по типу глобальных переменных, но только не 1 значение, а весь массив типа double, состоящий из нескольких миллионов значений?

Запись через файл в формате TXT или CSV производится путем записи каждой ячейки массива в файл. Этот процесс получается очень долгим. Хотелось бы в том же виде, как они находятся в ОЗУ, быстро записать в ППЗУ (на диск), а потом так же быстро вернуть в ОЗУ, чтобы на случай сбоев работы компьютера и других непредвиденных ситуаций не потерять данные и на момент включения быстро без расчетов вернуть все назад.

Dmitry Fedoseev
41181
Dmitry Fedoseev 2016.02.22 09:00  
Файлы в бинарном режиме.
Dmitry Sumsky
665
Dmitry Sumsky 2016.02.22 09:01  
это как?
Oleg Tsarkov
1271
Oleg Tsarkov 2016.02.22 09:06  
Дмитрий:

Если копнуть глубже, то понятно, что ПЗУ (программное запоминающее устройство), оно же ОЗУ (основное (или оперативное) запоминающее устройство) и ППЗУ (постоянное программное запоминающее устройство) имеют одни и те же биты для хранения информации.

У меня вопрос. Есть ли какая-нибудь функция в МТ4, с помощью которой можно запоминать на диск то же самое, что и в оперативке, по типу глобальных переменных, но только не 1 значение, а весь массив, состоящий из нескольких миллионов значений?

Запись через файл в формате TXT или CSV производится путем записи каждой ячейки массива в файл. Этот процесс получается очень долгим. Хотелось бы в том же виде, как они находятся в ОЗУ, быстро записать в ППЗУ (на диск), а потом так же быстро вернуть в ОЗУ, чтобы на случай сбоев работы компьютера и других непредвиденных ситуаций не потерять данные и на момент включения быстро без расчетов вернуть все назад.

Мне тоже этого не хватает, штатных средств в MQL я не нашел. Я это представляю как простой и удобный способ записи в файл переменных, массивов и массивов структур с возможностью такого же простого считывания обратно. Ну и в догонку, жду не дождусь штатных средств работы с СУБД, хотя бы insert и select. 
Ihor Herasko
8429
Ihor Herasko 2016.02.22 09:12  
Oleg Tsarkov:
Мне тоже этого не хватает, штатных средств в MQL я не нашел. Я это представляю как простой и удобный способ записи в файл переменных, массивов и массивов структур с возможностью такого же простого считывания обратно. Ну и в догонку, жду не дождусь штатных средств работы с СУБД, хотя бы insert и select. 
Чем так сложны файловые операции? Открыл файл, записал в него содержимое буфера, закрыл. Оформляете в виде функции и получаете тот же GlobalVariableSet, но под собственные нужды.
Dmitry Fedoseev
41181
Dmitry Fedoseev 2016.02.22 09:13  
Дмитрий:
это как?

Здесь посмотрите. Обратите внимание на FILE_BIN и в левой колонке на функции:

FileReadArray

FileReadBool

FileReadDatetime

FileReadDouble

FileReadFloat

FileReadInteger

FileReadLong

FileReadNumber

FileReadString

FileReadStruct 

-- 

FileWriteArray

FileWriteDouble

FileWriteFloat

FileWriteInteger

FileWriteLong

FileWriteString

FileWriteStruct 

Oleg Tsarkov
1271
Oleg Tsarkov 2016.02.22 09:33  
Ihor Herasko:
Чем так сложны файловые операции? Открыл файл, записал в него содержимое буфера, закрыл. Оформляете в виде функции и получаете тот же GlobalVariableSet, но под собственные нужды.
Что то я торможу, вы имеете ввиду FileFlush()?
Dmitry Sumsky
665
Dmitry Sumsky 2016.02.22 09:41  

Спасибо. Тут есть над чем поразмышлять.

Andrey Khatimlianskii
52195
Andrey Khatimlianskii 2016.02.22 18:17  
Есть же готовые FileWriteArray и FileReadArray, чем не подходят?
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий