//+------------------------------------------------------------------+//| expert count strategy open position function (closedPos) |//+------------------------------------------------------------------+void closedPos() {
int file=FileOpen("hist0935.csv",FILE_WRITE|FILE_CSV);
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
int file=FileOpen("hist0935.csv",FILE_READ|FILE_WRITE|FILE_CSV);
ResetLastError();
file=FileOpen("hist0935.csv",FILE_READ|FILE_WRITE|FILE_CSV);
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (file != INVALID_HANDLE){
PrintFormat("%s file is available for writing",file);
FileWrite(file,OrderTicket(),OrderClosePrice(),OrderCloseTime());
//--- close the filePrint("error="+GetLastError());
FileClose(file);
PrintFormat("%s file is closed",file);
}else{
Alert("hist0935 Events File Error.",GetLastError());
}
}
// return();
}
没有附加的文件 . . .
你是否确认你试图读取的文件确实存在? 请在正确的文件夹中查看并检查......还有一件事,为什么你有一个叫做filewriting() 的函数来从一个文件读取?
亲爱的RaptorUK。
是的,我可以确认DAT文件是在MQL4/files文件夹中。事实上,我已经告知,我给文件打开是否成功设置了一个条件,大部分时间都成功了(90%),10%的时间无法打开,并产生5004错误代码。
当文件打开失败时,会调用filewriting()函数。然后,funcition filewriting将尝试创建一个文件(为写而打开),在函数结束时,做fileclose。
我从MQL4/logs文件夹的Print()语句中附上了文件。我点击了 "选择文件 "按钮,我可以看到文件名被显示出来。
温馨提示。
Raisingfire
亲爱的RaptorUK。
是的,我可以确认,DAT文件在MQL4/files文件夹中。事实上,我已经告知,我给文件打开是否成功设置了一个条件,大部分时间都能成功(90%),10%的时间无法打开,并产生5004错误代码。
当文件打开失败时,会调用filewriting()函数。然后,funcition filewriting将尝试创建一个文件(为写而打开),在函数结束时,做fileclose。
我从MQL4/logs文件夹的Print()语句中附上了文件。我点击了 "选择文件 "按钮,我可以看到文件名被显示出来。
温馨提示。
Raisingfire
这些文件是从哪里来的? 什么写的?
亲爱的RaptorUK。
所有的DAT文件都是一个临时文件,用于在我们每次开仓时保存某些指标的初始值。我们创建并在我们的程序中使用它们。
我们使用标准函数来打开文件进行写入。
fhandle=FileOpen(mf,FILE_BIN|FILE_WRITE)。
标准数组写入临时文件(DAT)。
FileWriteArray(fhandle, mpara, 0, maxori); //其中mpara是数组,Maxori是数组的最大尺寸
标准的文件关闭函数。
FileClose(fhandle)。
谢谢你的帮助。
请注意。
兴起之火
亲爱的RaptorUK。
所有的DAT文件都是一个临时文件,在我们每次开仓时保存某些指标的初始值。我们创建并在我们的程序中使用它们。
我们使用标准函数来打开文件进行写入。
fhandle=FileOpen(mf, FILE_BIN|FILE_WRITE)。
标准数组写入临时文件(DAT)。
FileWriteArray(fhandle, mpara, 0, maxori); //其中mpara是数组,Maxori是数组的最大尺寸
标准的文件关闭功能。
FileClose(fhandle)。
好吧,但你实际上没有回答我的问题 ......它们是由试图读取它们的同一个EA编写的吗? 还是一个不同的EA、脚本或指标?
好吧,但你实际上没有回答我的问题 ......它们是由试图读取它们的同一个EA编写的吗? 还是一个不同的EA、脚本或指标?
文件写入功能 都在同一个EA中。每次,我们发出 "FILEOPEN",我们总是在做完某些任务后用 "FILECLOSE "来跟随它。所以,我不认为试图打开的锁定文件有什么问题。
很久以前,我们遇到过这样的问题,一个被锁定的文件被试图读取。而MT4在其日志文件中自动报告。因此,1或2天后,日志和历史文件夹变得巨大(数百Mbytes),充满了这些报告。然后,我们每次做FILEOPEN时都会发出FILECLOSE。问题得到了解决,日志和历史文件夹再也没有变得巨大。现在,日志和历史文件夹加起来只包含不到100KB(尽管错误代码5004不断弹出)。
谢谢。
Raisingfire
文件写入功能都在同一个EA中。每次,我们发出 "FILEOPEN",在我们用它做了某些任务后,我们总是用 "FILECLOSE "来跟随它。所以,我不认为被锁定的文件有问题,因为它正试图被打开。
很久以前,我们遇到过这样的问题,一个被锁定的文件被试图读取。而MT4在其日志文件中自动报告。因此,1或2天后,日志和历史文件夹变得巨大(数百Mbytes),充满了这些报告。然后,我们每次做FILEOPEN时都会发出FILECLOSE。问题得到了解决,日志和历史文件夹再也没有变得巨大。现在,日志和历史文件夹加起来只包含不到100KB(尽管错误代码5004不断弹出)。
好的,谢谢你提供的信息。 我没有办法了......我现在能建议的是创建一个测试EA,重现这个问题,你可以在这里发布,并作为服务台票据的一部分发送给MetaQuotes,请他们调查。
亲爱的RaptorUK。
无论如何,感谢你的帮助和信息。 我将尝试做你告诉我的事情。
再次感谢你。
请注意。
亲爱的RaptorUK。
谢谢你所有的帮助和信息。我会按你说的去做。
再次感谢您。
请注意。
请问有什么办法可以解决5004的错误?我在试图写入文件时得到了同样的错误信息。
我是在765版本。
非常感谢您的帮助。