0

我使用读取配置文件的指标编写了一个 EA。此配置文件放在文件夹中MQL4\Files

当我使用实时图表运行 EA 时,它运行良好。但是当我尝试使用策略测试器测试这个 EA 时,它返回一个4103 error: can not open file.

知道为什么会这样吗?

以及如何解决这个问题?

4

1 回答 1

3

发生的事情是 MQL4 生态系统的一个特征:

出于安全原因,对文件的处理在MQL4语言中受到严格控制。使用手段进行文件操作的文件MQL4,不能在文件沙箱之外。

该文件在子文件夹中的客户端文件夹中打开MQL4\files(或Tester\Files在测试的情况下)。如果FILE_COMMON在标志中指定,文件将在所有 MetaTrader 4 客户端的共享文件夹中打开。

如何解决这个问题?

简单地说,注意只使用文件路径的“相对”规范(并记住,三种可能的根目录情况中的哪一种被用于哪种方式操作)。

aFH = FileOpen( "aFileInsideDefaultDirectoryRoot.txt", ... );
// 
// USED:
// in Strategy Tester---+
//    plain EA-mode-----|------------+
//    FILE_COMMON-mode--|------------|----------------+
//                      |            |                |
// RESULTS:             v            v                v
// in a file in { tester\files | MQL4\Files | <shared_common_directory> }

对于读取文件的情况,您可能会强制在非FILE_COMMON用例的两个位置都拥有相同配置文件的副本,或者将单个实例保留在<shared_common_directory>

于 2015-12-26T19:14:55.747 回答