Прожорливость памяти ОЗУ MT5, проблемы с чтением/записью больших файлов - страница 4

 
Maxim Dmitrievsky:

попробуйте прочесть свой файл так 

https://www.mql5.com/ru/docs/files/filereadarray

мне щас вломы терминал открывать, мб завтра )

Так читает "из бинарного файла", где я такой возьму?

Подожду "завтра" :)
 
Aleksey Vyazmikin:

Так читает "из бинарного файла", где я такой возьму?

Подожду "завтра" :)

а вы откуда его берете?

 
Maxim Dmitrievsky:

а вы откуда его берете?

Если говорить про конкретно этот случай, то файл склеивается из других файлов CSV в экселе. Изначально файлы генерировались MT5, в конкретно этом случае.

 
Aleksey Vyazmikin:

Если говорить про конкретно этот случай, то файл склеивается из других файлов CSV в экселе. Изначально он генерировался MT5, в конкретно этом случае.

ну так пишите в бинарник из мт5. Там массив? Просто массив пишите в файл сразу и загружайте потом

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2018.04.06 17:08

Наверное, не многие так делают, поэтому сюда
// Заполнение массива строками из файла - классика
int FileToStrings( const string FileName, string &Str[] )
{
  ArrayResize(Str, 0);

  const int handle = FileOpen(FileName, FILE_READ | FILE_ANSI );
  
  if (handle != INVALID_HANDLE)
  {
    while (!FileIsEnding(handle))
      Str[ArrayResize(Str, ArraySize(Str) + 1) - 1] = FileReadString(handle);
    
    FileClose(handle);
  }
  
  return(ArraySize(Str));
}

// Заполнение массива строками из файла - альтернатива
int FileToStrings2( const string FileName, string &Str[] )
{
  uchar Bytes[];
  
  return(FileLoad(FileName, Bytes) ? StringSplit(CharArrayToString(Bytes), '\n', Str) : 0);
}

void OnStart()
{
  const string FileName = "Test.txt";
  
  string Str[];  
  FileToStrings(FileName, Str);

  string Str2[];  
  FileToStrings2(FileName, Str2);
  
  ArrayPrint(Str);
  ArrayPrint(Str2);
}
Сам пользуюсь вторым вариантом, когда нужно что-нибудь распарсить. Наверное, и работает быстрее, не проверял.

Как ориентир, возможны такие показатели

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Скрипты: ThirdPartyTicks

fxsaber, 2018.04.18 23:10

Парсит (ZIP+CSV) по три миллиона тиков в секунду. Наверное, это быстро.

Больше 3 Гб ZIP (>> 10 Гб CSV) обрабатываю без проблем, так что все точно может работать неплохо.

 

Сам парсинг CSV должен состоять из примерно 10 строк. Целый класс в этом случае совсем не нужен.

Задача очень простая даже для новичка в программировании. Что происходит с данными после чтения из файла - это  уже следующая задача, которую понимает только топикастер.

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

P.S.

Рената не трогайте. Ему в этой теме делать нечего. Ему надо Оптимизацию чинить.

 
Maxim Dmitrievsky:

ну так пишите в бинарник из мт5. Там массив? Просто массив пишите в файл сразу и загружайте потом

Там много столбцов, каждый столбец отдельный массив.

 
fxsaber:

Как ориентир, возможны такие показатели

Больше 3 Гб ZIP (>> 10 Гб CSV) обрабатываю без проблем, так что все точно может работать неплохо.

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

 
Aleksey Vyazmikin:

Там много столбцов, каждый столбец отдельный массив.

ну так это 2-мерный массив, матрица. Пишите его

 
Roffild:

Сам парсинг CSV должен состоять из примерно 10 строк. Целый класс в этом случае совсем не нужен.

Задача очень простая даже для новичка в программировании. Что происходит с данными после чтения из файла - это  уже следующая задача, которую понимает только топикастер.

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

P.S.

Рената не трогайте. Ему в этой теме делать нечего. Ему надо Оптимизацию чинить.

Мне удобно пользоваться классом, пользуюсь им уже года 3, ещё с MT4 - он удобен, но, зараза, медленно работает.

Прочесть строку конечно просто, но превратить это все в рабочую структура ячеек куда сложней.

Что значит я не могу использовать классы? Использую, к тому же сотрудник метаквотов написал этот класс. И потом, я же фактически нанял человека, заплатил и ожидал получить готовый продукт, но мне заявили что тормоза сие это нормально... я поверил, но сейчас вот ещё и с памятью перебор - возмущает.