MT5 RAM内存贪婪,读/写大文件的问题 - 页 3

 
Vladislav Andruschenko:
Oop

我明白了......如果你能一次把数组写成二进制,为什么还要把数组写成字符串?

 
Maxim Dmitrievsky:

我看出来了,哎呀......如果你能一次把数组写成二进制,为什么还要把数组写成字符串?

它是书面的,这个人用EXCEL处理它们。

 
Sergey Savinkin:

它说这个人用Excel处理它们。

它没有说

 
Maxim Dmitrievsky:

它没有这样说。

第一篇文章。如果你仔细阅读,这个文件可能与MT5没有任何关系。或以特定方式处理。

 
Sergey Savinkin:

第一篇文章。如果你仔细阅读,这个文件可能与MT5没有关系。或以特定方式处理。

所以让他确定他从哪里得到的东西

也可以作为一个数组来读,我想。
 
Aleksey Vyazmikin:

谢谢你对代码的分析。

我很难理解OOP,所以对它进行编辑对我来说是一种折磨。根据我的理解,这是关于负责阅读的类,在那里,整个文件被分割成字符串数组,然后,如果我想的话,我把这些字符串值转换成另一种类型,并在我的脚本中把它们放入int类型的数组。如果我理解正确的话,那么为了加快进程,我应该读取整个文件,弄清楚有多少行和列,每个单元格有多少个符号,然后立即选择数组大小?那么如何做呢?

我想了解一下,400兆字节是从哪里一下子拿出来的?我没理解错吧,内存被分配了,但并没有清除/送走之前分配的内存?

400Mb是3600万个空行的单元格,每个12字节,12*36=432。

要想被告知如何做得更好,请告诉我们你正在解决的问题。文件变化的频率和程度,是否每次都要从文件中读取,非空单元格的数量是否从一行到另一行是恒定的,所有单元格是否只包含整数。也许每周应该花9分钟,而且根本就不多--那么就没有必要改变什么。

一般来说,就 "去哪里才能更快 "而言,主要方向是声明一个有57个字段的结构,对应于整数值,并将其用于写入和读取(文件为二进制)。然后,78Mb将以比一秒钟更快的速度从磁盘直接读入内存,不需要定界符或字符串表示。为了调试的目的,把输出也保存为.csv。文件的大小 将立即决定这些结构的数组中的元素数量。

 
Vladimir:

400MB是3600万个空行的单元格,每个12字节,12*36=432。

数学上的问题很清楚。

弗拉基米尔

要想被告知如何做得更好,请告诉我们你正在解决的问题。文件变化的频率和程度,是否每次都需要从文件中读取所有内容,非空单元格的数量是否从一行到另一行是恒定的,所有单元格是否只包含整数。也许每周应该花9分钟,而且根本就不多--那么就没有必要改变什么。

这个任务是通用的,它是读取CSV格式的文件,因为这种格式对不同的程序是通用的,目前这些程序为我提供了数据。如果你具体指的是这个脚本,那么是的,你只需要阅读和计算一切,因为Excel因为公式而崩溃。单元格可以包含非整数(在这个例子中没有特别说明)。如果是每周一次,9分钟并不算多...然而,在其他方面,我需要通过优化器来处理这样的数据量,把文件传到 旁边,在代理的帮助下进行处理,然后得到csv格式的结果(当然,在这里我可以使用其他格式),并再次进行处理。这就是为什么我决定公开讨论这个问题,因为我想用MT5处理大型数据阵列。

弗拉基米尔

一般来说,从 "去哪里才能更快 "的角度来看--主流:声明结构,其中57个字段对应于整数值,并将其用于写入和读取(文件为二进制)。然后,78Mb将以比一秒钟更快的速度从磁盘直接读入内存,不需要定界符或字符串表示。为了调试的目的,把输出也保存为.csv。文件的大小将立即决定这些结构的数组中的元素数量。

我甚至无法想象,这怎么可能做到?还是说,初始文件必须在特殊条件下生成?那么也许你可以制作CSV到二进制格式的转换器?

你能不能也看一下第二类,如何教它写出无限多的列?

 
Maxim Dmitrievsky:

WriteArray/Read速度很快,最大尺寸可达300mb,一切都非常快,不消耗RAM。

为什么有这么多的读/写代码,这一切都在4行中完成。

你能演示一下如何做到这一点吗?

 
Maxim Dmitrievsky:

所以让他决定他从哪里得到它

也可以作为一个数组来读,我想

CSV是一种通用的文件格式,各种软件都支持它,包括与MO相关的软件。

此外,它是一个方便的文件,可以在不同的程序(脚本/顾问)MT5之间传输数据,而且不占用很多空间。

 
Aleksey Vyazmikin:

你能演示一下如何做到这一点吗?

试着像这样读取你的文件

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

我现在没有时间打开终端,也许明天吧)

Документация по MQL5: Файловые операции / FileReadArray
Документация по MQL5: Файловые операции / FileReadArray
  • www.mql5.com
//| Структура для хранения данных о ценах                            | //| Script program start function                                    |