При выполнении операции записи в файл физически данные могут оказаться в нем только через некоторое время. Для того чтобы данные сразу же сохранились в файле, нужно использовать функцию FileFlush(). Если не использовать функцию, то часть данных, еще не попавших на диск, принудительно записывается туда только при закрытии файла функцией...
Функции для работы с файлами есть почти во всех языках программирования, и MQL5 в этом смысле — не исключение. Хотя при программировании советников и индикаторов на MQL5 работать с использованием файлов приходится не всегда, (а скорее даже — очень редко), но тем не менее, каждый экспертописатель рано или поздно с этим сталкивается. Диапазон...
// Открытие или создание файла и перемещение указателя в конец
Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " "); // еще COMMON SHARE...
FileSeek(Файл, 0, SEEK_END);
我不明白。这个选项表示文件的位置 - \MetaQuotes\Terminal\Common。如果没有这个选项,我将无法抓取在测试器中生成的文件。如果没有这个选项,文件将在MQL4\Files中被搜索到--而我将不能把测试者的文件放在那里。
我指出的是没有这面旗帜的问题。
我指出的是没有这面旗帜的问题。
谢谢你的帮助--这只是一个打字错误--我知道这个旗子。问题没有得到解决--文件不想在共享阅读模式下打开--即使不使用测试器。只要这个文件被指标打开 - 脚本就不能打开它。另一方面,记事本可以毫无问题地打开它。
谢谢你的帮助--这只是一个打字错误--我知道那面旗子。问题没有得到解决--文件不想在共享阅读模式下打开--即使不使用测试器。只要这个文件是由指标打开的--脚本就不能打开它。另一方面,记事本打开它没有任何问题。
尝试通过FileFlush() 定期强制数据到磁盘。
hmmm: 另一件我没有马上注意到的事情
tvv。
ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_COMMON) 。
脚本中的文件是这样打开的:ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ)。
请指出我的错误。
尝试通过FileFlush() 周期性地强制数据到磁盘。
提示:我不久前注意到的另一件事
很奇怪的是,它的内容是:"。应该有一个FILE_CSV 标志。.CSV是一个文件扩展名--你可以使用任何扩展名--我选择它是为了让你能在记事本中查到它。这里有一篇有趣的文章--https://www.mql5.com/ru/articles/2720。我的代码符合那里描述的规则--但我不能以编程方式读取文件。 在FILE_SHARE_READ模式下。对于扩展名为.HST的EURUSD20.HST文件 - 标志必须是FILE.BIN,以便在MT 4文件可以离线打开。
.CSV是一个文件扩展名--它可以是任何东西--我选择它是为了能在记事本中查到它。这里有一篇有趣的文章--https://www.mql5.com/ru/articles/2720。我的代码符合那里描述的规则--但我不能以编程方式读取文件。 在FILE_SHARE_READ模式下。对于扩展名为.HST的EURUSD20.HST文件 - 标志必须是FILE.BIN,以便在MT 4文件可以离线打开。
我试着不在测试器中工作,而只是在一个正常的图表(EURUSD M1)上工作--我运行生成TF M20的指标。
要打开该文件。
ExtHandle= FileOpen("EURUSD20.csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ) 。
然后,该文件将出现在MQL4\Files文件夹中。然后我们在一个普通的图表(EURUSD M5)上运行脚本,将EURUSD20.csv的内容复制到EURUSD20.HST。文件EURUSD20.HST在与MQL4同一目录的历史文件夹中生成。
脚本代码。
ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) 读取文件。
ExtHandleW=FileOpenHistory("EURUSD20.hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ) 。
只有当我把指标从M1图表中移除时,一切才会正常。就是说,我没有让文件共享的读取模式工作。
你好!欧元图表上的metatrader故障是什么?2011年10月9日星期日的日线蜡烛出现了,在小时图上,该日期只有一个小时23:00。这可能是由于时钟改变为冬令时的缘故。如何解决这个问题?以前没有这样的蜡烛。
这个问题的解决方法如下:写文件的程序必须在每次写操作后关闭 FileClose,从而释放文件供其他程序读取。这是因为数据首先被写入缓冲区,在一段时间内没有实际存在于文件中。关闭文件 会释放进入文件的缓冲区。在下一次写作之前
文件被重新打开,指针被移到了
你好!你能告诉我,在两种表达方式中,获得的点数将是相同的,这种说法是否正确?这对我来说真的很重要!
更准确地说,点数不能是负数吗?还是.....))
晚上好。
我开始学习mql5,有一些问题,请大家帮忙。
任务是将最后n个烛台的值放入一个数组中,并对数组进行排序,只选择不败的烛台。
我已经写了这个函数。
它产生了一个错误的数组,超出了范围。
根据我的理解,这个错误是由寻址一个不存在的数组单元引起的。
但我无法从移动中找到错误,请告知我哪里出了问题,或者也许有更优雅的排序。
晚上好。
我开始学习mql5,有一些问题,请大家帮忙。
任务是将最后n个烛台的值放入一个数组中,并对数组进行排序,只选择不败的烛台。
我已经写了这个函数。
它产生了一个错误的数组,超出了范围。
根据我的理解,这个错误是由寻址一个不存在的数组单元引起的。
但我无法从移动中找到错误,请告知我哪里出了问题,或者也许有更优雅的排序。