int eHandle=FileOpen(eFileName,FILE_BIN|FILE_WRITE);
if(eHandle!=INVALID_HANDLE)
{
//сначала записываем размер массиваFileWriteInteger(eHandle,ArraySize(eArray),INT_VALUE);
//выгружаем данные из массива в файлFileWriteArray(eHandle,eArray,0,WHOLE_ARRAY);
FileClose(eHandle);
}
然后在任何时候从文件中取出阵列
if(FileIsExist(eFileName))
{
eHandle=FileOpen(eFileName,FILE_BIN|FILE_READ);
if(eHandle!=INVALID_HANDLE)
{
//сначала читаем и устанавливаем размер массиваArrayResize(eArray,FileReadInteger(eHandle,INT_VALUE));
//затем выгружаем данные из файла в массивFileReadArray(eHandle,eArray,0,WHOLE_ARRAY);
FileClose(eHandle);
}
}
而这个概念只为你在表面上.........
我的意思是,"自己做实验 "的建议(概念)不需要说出来,它已经很清楚了。我完全理解,我自己也考虑过这个选项,因为它是最简单的,但对我来说,就上述情况而言,它不是很合适。
这里有一个问题:有10个程序写入文件,另外10个程序从文件中读取,你不希望每个读取程序都处理所有时间的累积数据。
而在这种情况下,最好是完全放弃文件,用SQLite数据库 工作。这与处理文件非常相似,你也可以在共享文件夹中创建,但处理、搜索和删除字符串要容易得多。
谢尔盖,如果你不需要用眼睛看这个文件,那么就把你的数据数组一次性写进去吧
然后在任何时候从文件中取出阵列
并随心所欲地使用该阵列。删除最后一个元素,增加更多。
而在这种情况下,最好是完全放弃文件,用SQLite数据库工作。这与处理文件非常相似,你也可以在共享文件夹中创建,但处理、搜索和删除行要容易得多。
MQL4支持与SQLite一起工作 吗? 不是只有TXT和CSV格式吗?
对文件的访问是通过符号链接完成的,文件在哪里,在哪个文件夹中并不重要。
谢尔盖,如果你不需要用眼睛看这个文件,那么就把你的数据数组一次性写进去吧
然后在任何时候从文件中取出阵列
并随心所欲地使用该阵列。删除最后一个元素,添加另一个。
那么,有什么区别呢?在任何情况下,数组都是逐行写入文件的,或者在这种情况下,有可能至少删除最后一个或第一个元素,array=string?
我不太明白这个问题。你有一个数据数组,你可以轻松地对其进行任何形式的操作。并在四行代码中对文件进行简单的写和读。这就是优势。为什么要考虑数组 是如何写入文件 的?
你在阵列中做必要的修改,把修改后的阵列上传到一个文件中,就可以了。
我不太明白这个问题。你有一个数据数组,你可以轻松地对其进行任何形式的操作。并在四行代码中对文件进行简单的写和读。这就是优势。为什么要考虑数组 是如何写入文件 的?
你在阵列中做必要的修改,把修改后的阵列上传到一个文件中,就可以了。
这里的困难在于,20个应用程序将不得不同时处理一个相同的数组,而且不可能确定在当前时刻哪个特定的数组编辑版本是相关的。
假设第一个专家顾问编辑了一个数组并发布了它,另一个版本的数组被写在上面,没有考虑到之前的数组,就这样......混乱了......
例如,如果每个专家顾问都能在读取后删除相关的行,那么一切都会顺利进行--没有人打扰任何人,文件也不会因为冗余的数据而超载,但每次编辑的数组都是以竞赛的方式写入,那么如何同步20个专家顾问中每个人的数据的实际情况就不清楚。
管理多个EA对同一文件的访问是你需要考虑的问题。
这里有一些东西供你思考。
1.为了防止两个EA同时在同一个文件上工作,创建另一个标志文件。当这个文件不存在时,专家顾问有权用数据打开文件,在此之前,创建一个文件标志,向其他人显示它目前正在忙。在读-写之后,EA删除了文件标志。这些数据现在可供任何其他EA自由使用。
2.你可以制作变量来收集任何使用过该阵列中数据的专家顾问的信息。将这些变量写在同一个文件中。
3.取代通常的数组,创建一个结构数组,其中包括不同类型的数据,而且非常直观。
多个EA访问同一文件的管理是你需要考虑的问题。
当几个Expert Advisors需要写入+添加+选择+读取一个数据集时,那么数据库就会被胡乱地卷入。
你可以使用"全局变量"和标志,但为什么不呢?
这就是数据库的作用。不同的,关系型的,NoSQL和其他的,但这是他们的。而在他们的机械中,一切都经过多年和几十年的微调。所有locs-flags-semaphores-mutexes。
试图复制它是对时间的疯狂浪费。