处理本地项目的一般规则
可以使用 New project 或者 New project from source file 命令从 MetaEditor 主菜单或者 Navigator 上下文菜单创建本地项目(mqproj 文件)。在后一种情况下,必须首先在 Navigator 中选择文件,或者在 Open 对话框中选择文件。因此,指定的 mq5 文件将立即包含在项目中。提到的第一个命令启动 MQL 向导,你应该在其中选择程序类型或空项目选项(可以稍后再将源文件添加到项目中)。按照向导的常规步骤选择项目的 MQL 程序类型。
该项目包含几个逻辑部分,类似于包含所有组件的树(层次结构)。它们显示在 Navigator 的左面板中,在一个单独的 Project 选项卡中。
导航器和指标项目特性
创建项目后,或稍后通过双击树形结构的根节点,将在窗口的右侧打开一个用于设置 MQL 程序特性的面板。特性集根据程序类型而异。
大多数特性对应于源代码中的 #property 指令。这些特性优先:如果在项目和源代码中都指定了它们,将使用项目中的值。
一些开发人员可能喜欢在对话框中交互地设置特性,而不是在源代码中硬编码。此外,你可以在不同的项目中使用同一个 mq5 文件,并使用不同的设置构建 MQL 程序的版本(无需更改源代码)。
有些特性仅在项目中可用。例如,这包括启用/禁用编译优化和内置的被零除检查。
在项目编译期间,系统自动分析依赖项,即包含的头文件、资源等。依赖关系出现在项目层次结构的不同分支中。特别是,使用尖括号 (<filename>) 的 #include 指令中包含的标准 MQL5/Include 文件夹中的头文件属于 Dependencies,而使用双引号包含的自定义头文件 (#include "filename") 属于 Headers 部分。
此外,用户可以将与完成的软件产品相关的文件添加到项目中,这些文件可能是其正常操作或演示所需要的(例如,具有经过训练的神经网络模型的文件),但不直接嵌入源代码中。出于这些目的,你可以使用 Settings and Files 分支。它的上下文菜单包含将单个文件或整个目录添加到项目中的命令。
特别是,我们将进一步考虑不仅包括客户端 MQL 程序,还包括服务器部分的项目示例。
New file 和 New folder 将一个新元素添加到包含项目文件的文件夹中:这样的元素总是相对于项目本身进行搜索(在 mqproj 文件中,它们以 relative_to_project 特性(值为 true)进行标记,详见后文)。
Add an existing file 和 Add an existing folder 命令从 MQL5 文件夹内的现有目录结构中选择一个或多个元素,mqproj 文件内的这些元素相对于根 MQL5 被引用(relative_to_project 特性为 false)。
relative_to_project 特性只是 MetaTrader 5 开发人员定义的少数几个以 JSON 格式表示项目的特性之一。注意,编辑项目(层次结构和特性)之后就会构建 JSON 格式的 mqproj 文件。
这是上图中项目文件的样子。
{
|
我们将在接下来的章节中更详细地讨论 JSON 格式的技术特性,因为我们将在我们的演示项目中应用它。
请务必注意,项目引用的所有文件并不都存储在 mqproj 文件中,因此,复制到新位置或仅将项目文件移动到另一台计算机不会恢复它。为了能够迁移一个项目,须为其建立一个共享项目,并将项目的所有内容上传到云中。但是,这可能需要重组本地文件系统结构,因为所有组件都必须在共享项目文件夹中,而 mqproj 格式没有这样的要求 。