在此完整的 MQL4 初学者教程中学习什么是语法、变量、注释、函数并开发您自己的自动交易策略。
句法
评论
变量
功能(标准)
函数(自定义)
句法
如果您熟悉使用从 C 派生的多种语言中的任何一种进行编程,那么您将非常擅长使用 MQL 进行编程。
但是对于大多数想要学习这种语言的非程序员来说,您必须了解一种新的写作方式。
在 MQL 中,每条语句都以分号结尾,称为表达式。 一个表达式可以跨越多行,最后必须有一个分号。
外部双止损 = 15.0; // 单行表达式
或者这个多行表达式:
如果(FastMACurrent > SlowMACurrent)
开买=真; // 多行表达式
如果您是编程新手,则需要确保将分号放在每个语句的末尾。 不这样做是新手常见的错误。
分号规则的例外:复合运算符。
复合运算符是在大括号 {} 中包含多个表达式的代码行。 复合运算符可以包括控制运算符(if、switch)、循环运算符(for、while)和函数声明。 下面是一个控制运算符的例子:
如果(柱状图<100)
{ Print(“柱数小于 100”);
返回(0); }
请注意,您没有在初始 if 运算符之后放置分号。 您也不必在右大括号后放置分号。 Print() 函数后有一个分号。 那是因为大括号内可以有一个或多个表达式,每个表达式必须以分号结尾。
评论
与其他语言中的注释类似,MQL4 注释有时在代码中用于解释部分标记,或在测试和调试时临时删除代码。 您会发现尽可能记录您的代码以帮助您理解它很有用。 编码语言有时可能相当晦涩难懂,用通俗易懂的英语阐明您的代码试图完成的工作会很有帮助。此外,您可以使用注释暂时删除代码行,而不必删除它。
输入注释有两种方式: 1)单行注释; 和 2) 多行注释。
单行注释语法
// 我们发表了评论
注释跟在两个正斜杠 (//) 之后。 任何以 // 开头的行都是自由文本,会被程序忽略。这对于出于测试目的屏蔽一行代码很有用。
多行注释语法
/* 我们要屏蔽一堆代码 */
注释以‘/*’开头,以‘*/’结尾。
这种形式的注释用于一次快速禁用多行代码,而不是像第一种方法那样必须在每行的开头放置两个正斜杠。 当你有一堆代码要屏蔽时,在每一行前面都加上双正斜杠会太费时间,而使用多行注释技术要容易得多。
变量
变量是任何编程语言的基本存储单元,保存程序运行所需的数据。 必须声明变量,为了声明一个变量,您将三个部分放在一起,如本例所示:
双倍手数 = 0.1;
在这里它被分解为三个部分:
数据类型(例如:double),后跟标识符(例如:Lots),然后是等号后的默认值(例如:0.1)。
数据类型指定变量保存的信息类型,例如数字、文本字符串、日期或颜色。 以下是一些常见的数据类型:
Data Type | Description |
---|---|
int | 整数(整数),例如 0、3 或 -5。 分配给整数变量的任何数字都会向上舍入 |
double | 小数,例如 0.01 |
string | 一个文本字符串,例如“你已经射击了你的火枪”。 字符串必须用双引号括起来。 |
boolean | 真/假值。 它也可以表示为 1(真)或 0(假)。 |
datetime | 时间和日期,例如 2011.01.01 01:11。 |
在这里,我的标识符“Lots”可以被命名为很多东西,例如“ilots”、“ordersize”、“volume”。
标识符是给变量和自定义函数的名称,它可以是数字、字母和下划线字符 (_) 的任意组合,最长可达 31 个字符。 标识符最终是任意选择的单词,应该描述您的意图。
我见过一些编码员使用字母和数字(例如“gd_104”)作为标识符,而不是使用简单的单词,但这最终会使代码对于外人(或者您自己,如果您忘记了这些组合的字母和数字指的是什么)不可读。 最好使它们易于阅读和记忆。 此外,请记住标识符区分大小写(Lots 和 lots 是不同的标识符)并且还区分拼写(Lot 和 Lots 是不同的标识符),因此请确保所有标识符的大小写和拼写都正确(新手常见错误)。
声明变量后,可以通过为其分配新值来更改其值,在以下示例中:
双倍手数 = 0.1;
mylotsi = 很多;
// mylotsi 是 0.1
注意赋值的变量必须是相同的数据类型,否则会导致不良结果。
预先赋予 extern 的变量称为外部变量。
外部双手 = 0.1;
外部双止损 = 50;
它们在 EA 的第一部分中很有用,以便从程序属性窗口中访问和操作它们的值。
常量
如果一个变量持有一个以后可以更改或修改的数据值,那么常量就是它的对立面,一个永远不会改变的数据值。
例如,从 0 到 9 的所有数字都是整数常量,true 和 false 是布尔常量,red 是颜色常量,2011.01.01 00:00 是 2010 年 1 月 10 日的日期时间常量。
对于价格数据、图表周期、颜色和交易操作等事物,有各种各样的标准常量。 您会看到 PERIOD_M1 是 M1 图表时间范围的常量,而 OP_SELL 指的是卖出市价单。
您可以在 MQL4 参考的标准常量中了解更多关于常量的信息。
功能
函数是这种语言的基石。 函数是设计用于执行特定任务的代码块,例如下订单或计算追踪止损。
标准功能
MQL4 中有 220 多个标准函数,这还不包括技术指标的函数。 每当您在代码中遇到这些函数时,它们通常会以自己的颜色(例如紫色)显示并引用括号内的表达式,例如前面提到的 print 函数。
Print(“小于 100 的柱”);
Print() 函数是在程序外部向我们声明事物的常用函数,与 Comment() 函数、PlaySound() 函数和 MessageBox() 函数等函数属于类似的类别。 您可以在此处阅读有关这些标准(或本机)功能的所有信息。
函数具有可重用的优点,即它们可以根据需要从程序中的任意多个不同点执行。 通常,函数将许多程序语句组合成一个单元并为其命名。 然后可以从程序的其他部分调用该单元。
我们将在接下来的文章中了解更多关于使用标准和自定义函数的信息。
自定义函数
在标准或本机函数之外,我们可以根据自己的需要创建函数,以利用函数的可重用优势。 如果您创建一个函数,例如平仓订单函数,您可以在代码的不同部分一遍又一遍地重复使用它,或者复制并粘贴该函数以便在您可能使用的其他智能交易系统中方便地使用。