gpt4 book ai didi

mql4 - 无法在 Ubuntu 上打开文件

转载 作者:行者123 更新时间:2023-12-04 22:55:52 29 4
gpt4 key购买 nike

我正在使用 Ubuntu 14 并尝试创建脚本来写入文件,但每次我尝试打开文件时都会收到 5004 错误.

datetime currtime;
bool newcandle;

string terminal_data_path = TerminalInfoString( TERMINAL_DATA_PATH );
string filename = terminal_data_path + "\\MQL4\\Files\\" + "data.csv";

int filehandle;

filehandle = FileOpen( filename, FILE_WRITE | FILE_CSV );

if ( filehandle < 0 ){
Print( "Failed to open the file by the absolute path " );
Print( "Error code ", GetLastError() );
}
else {
Print( "file opened with sucess" );
}

如何在 Ubuntu 上解决这个问题?

更新

我试图将我的文件更改为以下内容:

string terminal_data_path = TerminalInfoString( TERMINAL_DATA_PATH );
string filename = terminal_data_path + "\\tester\\files\\data.csv";

只是为了这个

string filename = "\\tester\\files\\data.csv";

为此

string filename = "\\files\\data.csv";

但我仍然遇到错误,但这次是 5002 而不是 5004

最佳答案

MQL4 权限设计不允许/限制文件 IO

There are three directories (with subdirectories) where working files can be placed:

/HISTORY/<current broker> - 特别是对于 FileOpenHistory()函数;

/EXPERTS/FILES - 常见情况;

/TESTER/FILES - 特别是用于测试(引用在 Strategy Tester 操作期间)。

Working with files from other directories is prohibited.

解决方案

调整您的 MQL4 代码以满足这一事实并尊重 Build 762 之前和 Build 762 之后的差异("new"-MQL4 文件本地化)。

更新

正如发布的那样,您的 MQL4 代码(无论您是否共享它的更新状态)应该更好地处理异常。遇到过几个带有文件名的令人惊讶的人工制品。一些平台特定的,在 wXP 中不会造成伤害,但无法在 VPS 托管的 wServer2008 VM 或 LinuxVM 封装的 Wine/MT4 实例上运行(相同的代码)。

仔细阅读 MQL4 帮助文档并创建一些事后分析工具以进一步推进。

5002
ERR_FILE_WRONG_FILENAME
Wrong file name -------> pre-test + "fuse" the corner cases

5003
ERR_FILE_TOO_LONG_FILENAME
Too long file name

5004 <------ a good sign, we are on the safer side here
ERR_FILE_CANNOT_OPEN
Cannot open file

//-------------------------------------------------------------
// MT4_GUI_postMortem
//-------------------------------------------------------------
void MT4_GUI_postMortem( string aFileNAME = "caller forgot to pass aFileNAME"
){
// SYNTAX
// if ( aFileHANDLE == INVALID_HANDLE ) MT4_GUI_postMortem( filename );
//
int aLastErrorNUM = GetLastError();
Comment( "POST-MORTEM >>> [", aFileNAME, "] Threw error ", aLastErrorNUM );
Print( "POST-MORTEM >>> [", aFileNAME, "] Threw error ", aLastErrorNUM );

return;
}

关于mql4 - 无法在 Ubuntu 上打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750424/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com