My Code as follow:
int OnInit()
{
//---
string filename="D:\\MYDATA.CSV";
int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV|FILE_ANSI,',');
if(filehandle<0)
{
Print("Failed to open the file by the absolute path ",filename);
Print("Error code ",GetLastError());
}
ResetLastError();
FileWrite(filehandle,"1111111");
FileClose(filehandle);
//---
return(0);
}
The tester report :
19:56:18 2012.01.02 00:00:00 Failed to open the file by the absolute path D:\MYDATA.CSV
19:56:18 2012.01.02 00:00:00 Error code 5002
19:56:18 final balance 10000.00
19:56:18 OnTester result 0
19:56:18 log file "C:\Users\VC\AppData\Roaming\MetaQuotes\Tester\E6E3D0917DD641581E4779524EB3B1AA\Agent-127.0.0.1-3000\logs\20120702.log" written
19:56:18 connection closed
How to the id:5002 problem of FileOpen? I've tried to many methods. If anyone tell me how to deal it, I'm very appreciated to you.
Hi manwind,
1. Please use SRC button to post your code.
2. Error 5002 is Error file name or invalid file name, that is because you file is in wrong place. This is the correct place to put your file (click here).
3. I wrote some file operation back then, you may want to see it - click here. And if you don't mind, I correct a little of your codes. As long as you put your file in the right place, there should be no problem
int OnInit() { //--- string filename="MYDATA.CSV"; ResetLastError(); int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV|FILE_ANSI,','); if(filehandle<0) { Print("Failed to open the file by the absolute path ",filename); Print("Error code ",GetLastError()); } else { FileWrite(filehandle,"1111111"); FileClose(filehandle); } //--- return(0); }
:D
Hi manwind,
1. Please use SRC button to post your code.
2. Error 5002 is Error file name or invalid file name, that is because you file is in wrong place. This is the correct place to put your file (click here).
3. I wrote some file operation back then, you may want to see it - click here. And if you don't mind, I correct a little of your codes. As long as you put your file in the right place, there should be no problem
:D
Hi onewithzachy:
According to your code, I modified mine.Now data has correctly written in files. Thank you for your suggestion!
Now I fall in new questions.
1. The default file save path is too long in my pc. it is C:\Users\VC\AppData\Roaming\MetaQuotes\Tester\E6E3D0917DD641581E4779524EB3B1AA\Agent-127.0.0.1-3000\MQL5. Could I modify the default path?
2.If I modify the path, for example
string filename="C:\\MQL5\\MYDATA.CSV"; fp=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV,';'); if(fp==INVALID_HANDLE) { Print("not find "+filename+" !",GetLastError()); } else { FileSeek(fp,0,SEEK_END); FileWrite(fp,"11111111"); } FileClose(fp)
the tester still report id:5002 error:
15:23:37 2012.01.02 03:04:00 not find C:\MQL5\MYDATA.CSV !5002
Why? Thank a lot in advance for any help.
Hi onewithzachy:
According to your code, I modified mine.Now data has correctly written in files. Thank you for your suggestion!
Now I fall in new questions.
1. The default file save path is too long in my pc. it is C:\Users\VC\AppData\Roaming\MetaQuotes\Tester\E6E3D0917DD641581E4779524EB3B1AA\Agent-127.0.0.1-3000\MQL5. Could I modify the default path?
2.If I modify the path, for example
the tester still report id:5002 error:
15:23:37 2012.01.02 03:04:00 not find C:\MQL5\MYDATA.CSV !5002
Why? Thank a lot in advance for any help.
Hi manwind,
1. Me too have that long data path, it's TerminalInfoString(TERMINAL_DATA_PATH)); (click here for example). Actually we don't have to write it's long data path, all we have to do is write
string filename="MYDATA.CSV"; //-->> which is the same with string filename=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files\\"+"MYDATA.CSV";
and to find the file, from MT5 > click File > click Open Data Folder, and from MetaEditor > click File > click Open Data Folder or Open Common Data Folder, and there we have 'em. BTW, if its only csv or txt files, you can also open them right inside MetaEditor, though it's not quickly refreshed if there's new data written in.
2. Unfortunately we can not modify the default location for file operation in MT5 :(, because that is the working folder for MQL5 file operations - that's the place where file operation goes to works.
Though you may interested in reading this article which is written by MetaQuotes in MQL4.com, on how to work with file in any location by not using MQL command but by using Win API. I haven't try with tester yet (click here and click here, please).
:D
- www.mql5.com
Hi onewithzachy:
Thanks! I finally know them. You're experienced. Thank you again for your help!
Hi all,
I am having the same problem with MT4 build 6xx. Below is the code:
string terminal_data_path = TerminalInfoString(TERMINAL_DATA_PATH); string inputFile = terminal_data_path+"\\MQL4\\Files\\"+"testing.csv"; //--- Comment("Trying to open file for reading : "+inputFile); Print("Trying to open file for reading : "+inputFile); handle = FileOpen(inputFile,FILE_READ|FILE_CSV); if (handle<0) { Print("Failed to open file: "+inputFile); Print("Error code ",GetLastError()); Comment("\nError reading file : "+inputFile); return(0); }
Actually the "testing.csv" file is there (please see image). But i always get "5002" or file not found error ...
Why ?
Thanks
Hi all,
I am having the same problem with MT4 build 6xx. Below is the code:
Actually the "testing.csv" file is there (please see image). But i always get "5002" or file not found error ...
Why ?
Thanks
No need to specify the path :
string terminal_data_path = TerminalInfoString(TERMINAL_DATA_PATH); string inputFile = terminal_data_path+"\\MQL4\\Files\\"+"testing.csv"; //--- Comment("Trying to open file for reading : "+inputFile); Print("Trying to open file for reading : "+inputFile); handle = FileOpen(inputFile,FILE_READ|FILE_CSV); if (handle<0) { Print("Failed to open file: "+inputFile); Print("Error code ",GetLastError()); Comment("\nError reading file : "+inputFile); return(0); }
No need to specify the path :
Hi angevoyageur,
Great, it works .....
Thanks
-Jack
Good Afternoon
I have just posted another topic closed to tis one to I will keep it here in order to keep the topic organized.
On MQL5 documentation, there is a Common file folder where several instances on MT5 can read/write to a file.
I am using the structure below but unfortunately it is not working.
Anyone have any experience with Common_Data_Path ?
Thank you !
string commondata_path = TerminalInfoString(TERMINAL_COMMONDATA_PATH); string filename = commondata_path + "\\Files\\youbotg9.csv"; Print(filename); int fileHandle=FileOpen(filename,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_CSV,","); Print(fileHandle); FileSeek(fileHandle,0,SEEK_END); FileWrite(fileHandle,"OFF"); FileClose(fileHandle); filename returns C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\Common\Files\youbotg9.csv fileHandle returns -1
Good Afternoon
I have just posted another topic closed to tis one to I will keep it here in order to keep the topic organized.
On MQL5 documentation, there is a Common file folder where several instances on MT5 can read/write to a file.
I am using the structure below but unfortunately it is not working.
Anyone have any experience with Common_Data_Path ?
Thank you !
Good Afternoon
I have just posted another topic closed to tis one to I will keep it here in order to keep the topic organized.
On MQL5 documentation, there is a Common file folder where several instances on MT5 can read/write to a file.
I am using the structure below but unfortunately it is not working.
Anyone have any experience with Common_Data_Path ?
Thank you !
Once again :
string commondata_path = TerminalInfoString(TERMINAL_COMMONDATA_PATH); string filename = commondata_path + "\\Files\\youbotg9.csv"; Print(filename); int fileHandle=FileOpen(filename,FILE_COMMON|FILE_READ|FILE_WRITE|FILE_CSV,","); Print(fileHandle); FileSeek(fileHandle,0,SEEK_END); FileWrite(fileHandle,"OFF"); FileClose(fileHandle);
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
My Code as follow:
int OnInit()
{
//---
string filename="D:\\MYDATA.CSV";
int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV|FILE_ANSI,',');
if(filehandle<0)
{
Print("Failed to open the file by the absolute path ",filename);
Print("Error code ",GetLastError());
}
ResetLastError();
FileWrite(filehandle,"1111111");
FileClose(filehandle);
//---
return(0);
}
The tester report :
19:56:18 2012.01.02 00:00:00 Failed to open the file by the absolute path D:\MYDATA.CSV
19:56:18 2012.01.02 00:00:00 Error code 5002
19:56:18 final balance 10000.00
19:56:18 OnTester result 0
19:56:18 log file "C:\Users\VC\AppData\Roaming\MetaQuotes\Tester\E6E3D0917DD641581E4779524EB3B1AA\Agent-127.0.0.1-3000\logs\20120702.log" written
19:56:18 connection closed
How to the id:5002 problem of FileOpen? I've tried to many methods. If anyone tell me how to deal it, I'm very appreciated to you.