程序属性 (#property)

每个mql5-程序都允许指定额外的名为#property的特殊参数,有助于客户端不用启动程序就能够进行贴切的互联网服务。首先,它包括指标外部设置。包括文件中描述的属性完全忽略。属性必须在mql5-主文件中指定。

#property identifier value

编译器在执行模块配置中编写声明值。

常数

类型

描述

icon

字符串

将用作EX5程序图标的图形文件路径。 路径规范规则与资源规则一样。属性必须指定在MQL5源代码的主模块。图标文件必须是 ICO 格式。

link

字符串

链接到公司网站

copyright

字符串

公司名

version

字符串

程序版本,最大31位字符

description

字符串

mql5-程序的简单文本描述。现存几种描述,每个描述文本中的一行。包括换行所有描述总长度不能超过511个字符。

stacksize

int

调用堆栈大小

library

 

程序库;指定非启动函数,带有输出修饰符的函数也可以引入到其他mql5-程序中

indicator_applied_price

int

指定默认值到“应用到”字段。如果属性没有指定,您可以指定一个 ENUM_APPLIED_PRICE值,默认值为PRICE_CLOSE

indicator_chart_window

 

显示图表窗口指标

indicator_separate_window

 

显示独立窗口指标

indicator_height

int

修正指标子窗口的像素高度 (属性 INDICATOR_HEIGHT)

indicator_buffers

int

指标计算缓冲区

indicator_plots

int

指标图解系列 数目

indicator_minimum

双精度

独立指标窗口底部比例限制

indicator_maximum

双精度

独立指标窗口顶部比例限制

indicator_labelN

字符串

为数据窗口显示的N-th 图解系列设置标签。对于需要多指标缓冲(DRAW_CANDLES, DRAW_FILLING and others)的图解系列,通过分号“;”规定标签名。

indicator_colorN

color

N行颜色,N为图解系列的数量;从1开始计数

indicator_widthN

int

图解系列粗线条,N为图解系列数量,从1开始计数

indicator_styleN

int

图解系列 的线型,由ENUM_LINE_STYLE 值指定。N为图解系列数量,从1开始计数

indicator_typeN

int

绘图种类,由ENUM_DRAW_TYPE值指定。N为图解系列数量,从1开始计数

indicator_levelN

双精度

独立指标窗口中N水平线

indicator_levelcolor

color

指标水平线颜色

indicator_levelwidth

int

指标粗水平线

indicator_levelstyle

int

指标水平线类型

script_show_confirm

 

运行脚本前显示确认窗口

script_show_inputs

 

运行脚本前显示属性窗口,禁止确认窗口

tester_indicator

字符串

以“indicator_name.ex5”形式命名自定义指标。如果相关参数通过常量字符串设置,自动定义调用iCustom()函数需要测试的指标。对于其他情况下(使用函数IndicatorCreate()或者使用无常量字符串的参数设置指标名)属性是必须的

tester_file

字符串

双引号中(作为常数字符串)扩展指示测试文件名。指定的文件传送到测试。若需要的话,测试的输入文件必须被指定。

tester_library

字符串

双引号中扩展程序库名。程序库有dll或者ex5扩展名。需要测试的程序库自动定义。然而,如果任何程序库用于自定义指标,属性是必须的。

tester_set

字符串

带有输入参数的值和步骤的设置文件的名称。在测试和优化之前,这个文件被传递到测试器。作为一个常数字符串,文件名以一个扩展名和双引号来指定。

如果您在设置文件的名称中将EA名称和版本号指定为"<expert_name>_<number>.set",那么它会被自动添加到<number>版本号下的参数版本的下载菜单。例如,"MACD Sample_4.set"名称意味着这是一个版本号为4的"MACD Sample.mq5" EA设置文件。

若要研究这种格式,我们建议您在策略测试中手动保存测试/优化设置,然后打开以这种方式创建的设置文件。

tester_no_cache

字符串

当执行优化时,策略测试会将所执行传递的所有结果保存到优化缓存,在这里测试结果被保存在每组输入参数中。这允许在对相同参数进行重新优化期间使用现有的结果,而不会浪费时间重新计算。

 

但是在一些任务中(例如,在数学计算中),则可能必须进行计算,而无论优化缓存中是否提供现有结果。在这种情况下,该文件应该包括tester_no_cache属性。测试结果仍被存储在缓存中,因此您可以在策略测试中看到关于已执行传递的所有数据。

tester_everytick_calculate

字符串

在策略测试中,只有访问指标数据时才会计算指标,即当请求指标缓冲区的值时。如果您不需要获得每个报价的指标值,那么这可以极大地加快测试和优化的速度。

 

通过指定tester_everytick_calculate属性,您可以在每次报价时启用强制指标计算。

 

策略测试中的指标也可以在下列情况下在每次报价时强制计算:

 

这项功能只应用在策略测试中,而程序端指标则总是在每次收到报价时进行计算。

optimization_chart_mode

字符串

指定将用于优化结果可视化的两个输入参数的图表类型和名称。例如,“3d、InpX、InpY”表示结果将显示在3D图表中,坐标轴基于测试的InpX和InpY参数值。因此,该属性支持将直接在程序代码中显示优化图表和图表类型的参数规格。

可选项:

  • "3d, input_parameter_name1, input_parameter_name2"表示可以旋转、放大和缩小的3D可视化图表。该图表使用两个参数构建。
  • "2d, input_parameter_name1, input_parameter_name2"表示2D网格图表,其中的每个单元格都根据结果填充特定颜色。该图表使用两个参数构建。
  • "1d, input_parameter_name1, input_parameter_name2"表示线性图表,其中结果按照指定参数排序。每个传递都显示为一个点。该图表基于一个参数构建。
  • "0d, input_parameter_name1, input_parameter_name2"表示按传递结果到达时间排序的常规图表。每个传递都在图表中显示为一个点。参数指示不需要,但指定参数可用于手动切换到其他图表类型。

或者,您只能指示图表类型,而无需指定一个或两个输入参数。在这种情况下,程序端将选择所需的参数来显示优化图表。

描述和版本号的任务样本

#property version     "3.70"      // EA交易的当前版本
#property description "ZigZag universal with Pesavento Patterns"
#property description "At the moment in the indicator several ZigZags with different algorithms are included"
#property description "It is possible to embed a large number of other indicators showing the highs and"
#property description "lows and automatically build from these highs and lows various graphical tools"

在程序启动时显示描述和版本的示例

 

指定指标缓存独立标签示例(“C开盘价;C最高价;C最低价;C收盘价”)

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   1
#property indicator_type1   DRAW_CANDLES
#property indicator_width1  3
#property indicator_label1  "C open;C high;C low;C close"

为每个指标缓冲区显示标签的示例