在 cTrader 中处理文件
在本文及其对应的视频中,我们将解释如何在 cTrader 中处理文件。 通常,用户担心启动请求完全访问权限的 cBot 或指标。 特别是当没有源代码可用时,很难知道算法在使用这些权限做什么。 幸运的是,cTrader 提供了几种方法,允许算法访问本地机器上的文件,而无需提升权限。
写入算法目录
cTrader 允许所有算法访问具有以下地址的文件夹:
C:/Users/{username}/Documents/cAlgo/Data/{algoType}
,其中 algoType 是 cBots 或 Indicators。
我们将创建一个示例 cBot 并演示如何以编程方式访问此目录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
像往常一样,我们保存并构建 cBot,然后创建其实例。
实例启动后,我们可以导航到上面定义的文件夹。 在其中,我们应该看到包含我们在代码中指定的文本的 Hello World.txt 文件。
从算法目录读取
下一步是读取位于算法目录中的文件内容。 为此,我们可以重写 OnStart() 方法如下。
1 2 3 4 | |
在我们构建并启动 cBot 后,我们将看到算法将文件中的字符串打印到 cTrader 日志中。
访问其他目录
请注意,我们之前执行的 cBot 操作都不需要为其提供提升的访问权限。 事实上,访问权限在类级别明确设置为 None。
我们将尝试写入位于不同目录中的文件,看看会发生什么。 我们将修改代码以写入位于根 Documents 目录中的文件。
1 2 3 4 | |
一旦我们再次构建并运行 cBot,我们将在日志中看到抛出异常,表明我们无权在此特定目录中写入。
为了解决这个问题,我们可以返回 cBot 代码并按如下方式更改其访问权限。
1 | |
我们构建并运行 cBot。 现在,机器人将访问指定目录并写入正确的文件,而不是抛出异常。
为了进一步演示访问权限的工作原理,我们将按如下方式修改 OnStart() 方法。
1 2 3 4 | |
我们还将访问权限设置回 None。
1 | |
cBot 开始运行后,我们将看到它无法从文件中读取。