MetaEditor 帮助

智能控制

从名称替换和函数提示到书签和热键,在MetaEditor中实施的不同的工具都是为了便于开发程序。这些方法可以加速源代码编写过程,通过它可以便于导航和避免失误。

在本节中描述以下函数:

源代码的任何改动都可以被返回使用"撤销 撤销" 命令在 "编辑"菜单,在"标准" 工具栏或使用"Ctrl+Z" 组合键。

自动替换函数名称

可以查看内置和用户函数,常量,变量,类成员,关键字等的不同名称列表 。替换变量由第一个输入的符号决定。当编写源代码时,此列表自动打开。若要手动打开此列表,应该使用"列表名称 列表名称" 命令在"编辑" 菜单,在"标准" 工具栏或使用"Ctrl+Space" 组合键,在第一个符号名称键入后:

名单

此外,它是唯一留下来选择必要的变体,使用“向上箭头”和“向下箭头”键,然后按“Enter”键。也可以用鼠标做此选择。如果继续键入函数名称字母,可替换变量列表将缩短。

参数信息

这个特征允许查看选定函数的参数及其类型。若要打开这个信息,应该执行"参数信息 参数信息" 命令在 "编辑" 菜单,在"标准" 工具栏或使用"Ctrl+Shift+Space" 组合键。必须在鼠标光标在参数指定括号内的时候执行此命令。只要您这样做,函数下面将出现弹出的包含参数的帮助行:

参数信息

考虑一下上面截图所示的示例中展示的信息:

  • [1 of 2] ― 这意味着有两种函数参数规范变量。若要在其中切换,应该使用“向上箭头”和“向下箭头”或鼠标左键点击提示线;
  • bool ― 表示由该函数返回值的类型;
  • ObjectSetInteger ― 函数名称;
  • (long chart_id, ... ) ― 可能函数参数的列举,每个函数前指定的参数类型 (这种情况是"长型" )。鼠标当前参数显示黑体。

转到定义

此函数可以自动移动到选定函数或者变量的声明或释义。如果释义或声明在另一个文件,那么将打开此文件和移动鼠标到相应位置。这个函数也允许移动到包含文件(#include)。

若要转到定义,应该把光标放在一个参数上并执行 "转到定义 转到定义" 命令在"编辑" 菜单,在"标准" 工具栏或使用"Alt+G"组合键。若要转到包含文件,应该把光标放在声明线上并执行上面提到的一个命令。

函数一览表

这个特征允许在当前文件打开所有声明函数列表。若要打开列表,请执行"函数列表 函数列表" 命令在"编辑" 菜单,在"标准" 工具栏或使用"Alt+M" 组合键。

函数一览表

为函数指定的参数显示在括号中。通过点击鼠标左键或使用 "Enter"键可以进入文件中的所选函数的定义。 列表中,每个函数的类型都有其自己的图标:

  • 函数― 函数;
  • 函数事件处理―函数事件处理 (On*);
  • 类的公共方法― 类的公共方法;
  • 类的受保护方法― 类的受保护方法;
  • 类的专用方法― 类的专用方法;

评论插入

在源代码中注释工作的不同命令在"编辑" 菜单和在 "标准" 工具栏中实施:

  • 函数标题 函数标题 ― 插入现成的字段来注释函数;
  • 限制注释 限制标题 ― 插入单行注释符号;
  • 注释行 注释行 ― 在每个选定行的开头插入"//"注释;
  • 取消注释行 取消注释 ― 从每个选定行的开头取消"//" 注释。

执行"限制注释限制注释"或使用"Ctrl+/"组合键在指定位置插入单行注释符号:

//---

如果 "函数标题函数标题" 或"Ctrl+."组合键被使用,那么函数注释部分将被插入到指定位置:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

代码编辑的附加函数

"编辑" 菜单的"其他" 子菜单包括几个命令,用来方便编辑源代码:

  • 增加行缩进 增加行缩进 ― 此命令允许插入三个空格(或制表符)在选定行的开始。要在单独的行中插入空格,请把鼠标光标放在行的开始,然后执行此命令(或按下“Tab”热键)。要在几行中插入空格,选择整个行。
  • 减少行缩进 减少行缩进 ― 此命令允许从选定行的开始移除三个空格(或制表符)。使用Tab+Shift 组合键也能执行同样的操作。
  • 变为大写 变为大写 ― 此命令使选定短语的所有字母变为大写。使用Ctrl+Shift+U组合键也能执行同样的操作。
  • 转换成小写 转换成小写 ― 此命令使选定短语的所有字母变为小写。使用Ctrl+U组合键也能执行同样的操作

使用书签

书签意于在代码库中使用必要的行,通过它们进一步方便导航。书签工作的命令位于"编辑"菜单的“书签”子菜单,在 "标准" 工具栏和文本的快捷菜单。在MetaEditor,有以下工作命令:

  • 切换书签 切换书签 ― 根据状态切换已编辑文件当前行上的书签。同样操作也可以使用"Ctrl+F2" 组合键来完成;
  • 下一个书签 下一个书签 ― 移动到当前源代码的下一个书签。同样操作也可以使用 "F2" 键来完成;
  • 上一个书签 上一个书签 ― 移动到源代码的上一个书签。同样操作也可以使用"Shift+F2"组合键来完成;
  • 清除所有书签 清除所有书签 ― 从当前文件清除所有书签。同样操作也可以使用"Ctrl+Shift+F2" 组合键来完成。

MetaEditor包含命名书签工作的功能-有已分配的个位数标识符的书签。 要设置这样一个书签按0-9数字键,同时按住"Ctrl" 键。若去以前设置的键,按下相应的数字键,同时按住“Alt”键。命名书签导航使通过源代码要容易得多。

转到行

要快速转到当前文件代码中的行,可以使用"转到行 转到行" 命令在"编辑" 菜单或"标准" 工具栏。只有按下该按钮,下面窗口就会打开:

转到行

窗口中指定包含在该文件中的代码的行的范围。要转到行,应该指定其编号并点击"OK" 键。

片段

为了使代码编写更容易,MetaEditor包含了插入片段的可能性 - 小模板的代码片段,描述了MQL4/MQL5语言的结构元素。要插入一个片段,您应该键入一个特殊的关键字。只要您这样做,光标会变成可以插入的代码片段,意味着可以插入一个片段。下一步是按"Tab" 键。

例如,要插入一个类的声明,输入关键字"class" 并按下"Tab" 键:

片段示例

只要这样做,关键字就会被类的声明替换。要在活动的片段字段之间切换 (在这种情况下?它们是类的名称,构造函数和析构函数),使用"Tab"和"Shift+Tab" 组合键。

如果您改变活动字段,片段的其他字段将会自动改变。例如,如果您改变类的名称,构造函数和析构函数的名称将会自动改变;如果您在"for"运算符的一个表达式中改变变量名称,其他表达式的变量名称也会更改。

如果您按下"Ctrl+Enter"组合键,那么片段工作系统会识别结构,类,枚举,方法和函数。这时光标必须在相应的结构元件描述中。只要按下组合键,用户就可以使用"Tab"和"Shift+Tab"组合键在成员(类,结构和枚举)和参数(方法和函数) 间移动以及如上所述的一起编辑它们。

此刻,支持下列片段:

关键字

#import

导入声明。

OnBookEvent

OnBookEvent事件处理程序。

OnCalculate

OnCalculate事件处理程序。

case

"case" 选择符。

OnChartEvent

OnChartEvent事件处理程序。

class

类的声明。

OnDeinit

OnDeinit事件处理程序。

do

"do while"循环声明。

enum

枚举声明。

for

"for"循环声明。

if

"if" 条件声明。

else

"else"条件声明。

OnInit

OnInit事件处理程序。

OnStart

OnStart事件处理程序。

struct

结构声明。

switch

"switch"选择符。

OnTester

OnTester事件处理程序。

OnTesterInit

OnTesterInit事件处理程序。

OnTesterPass

OnTesterPass事件处理程序。

OnTesterDeinit

OnTesterDeinit事件处理程序。

OnTick

OnTick事件处理程序。

OnTimer

OnTimer事件处理程序。

OnTrade

OnTrade事件处理程序。

OnTradeTransation

OnTradeTransation事件处理程序。

while

"while" 循环声明。

资源插入

Commands from the "Edit―Insert" menu allow to quickly insert resource files and thus can facilitate application development.

Options as #property

Inserts in the current position the #property directive and immediately opens the list of all program properties available in the language.

BMP/WAV as #resource

To add an image or a sound file to the program resources, run this command and select a BMP or WAV file (the appropriate file must be located in the \MQL5 directory). The #resource directive with the proper path to the selected file will be inserted at the current position of the program.

#resource "\\Images\\image.bmp"

DLL/EX5 as #import

You can import functions from an external library or an EX5/EX4 file by executing this command and selecting the appropriate file (the file must be located in the \MQL5 directory). A pair of #import directives with the proper path to the selected file will be inserted at the current position of the program.

#import "..\Experts\SendNotification.ex5"
 
#import

Add a description of the imported functions between the directives.

MQH as #include

To insert an include file to the program code, run this command and select an MQH file (the appropriate file must be located in the \MQL5 directory). The #include directive with the proper path to the selected file will be inserted at the current position of the program.

#include <Arrays\Array.mqh>

File as Binary Array

This command allows you to add to the program text any file in the form of a binary array. Run the command and select the desired file (the appropriate file must be located in the \MQL5 directory). A char array will be inserted at the current position of the program.

Among others, this function allows you to transfer chart templates with Expert Advisors or indicators: insert your template in the program code as an array, and save it to disk then using the FileSave function. After that the template can be applied on the desired chart using the ChartApplyTemplate function.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- A template file as a binary array
   unsigned char my_template[]=
     {
      0xFF,0xFE,0x3C, ... ,0x00 // the data array in this example is shortened
     };
//--- Saving and applying the template
   if(FileSave("my_template.tpl",my_template))
     {
      Print("Custom template saved in \\MQL5\\Files");
      if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
         Print("Custom template applied to the current chart");
      else
         Print("Failed to apply custom template");
     }
   else
      Print("Failed to save custom template");
  }

CSV as a text array

To add data from a text file to the program code, run this command and select a TXT or CSV file (the appropriate file must be located in the \MQL5 directory). A string array of the required dimension containing data from the file will be inserted at the current program position:

string data[][3]=
  {
   {"name1","value1"},
   {"name2","value2"},
   {"name3","value3"}
  };

Text Conversion

The MetaEditor allows you to easily convert the format of source data. Open the desired file, select text in it and execute one of the commands from the Edit―Convert menu:

  • ASCII to HEX
  • ASCII to Base64
  • ASCII to Binary Array
  • HEX to ASCII
  • Base64 to ASCII