我们先来回顾一些基础的编程概念,这将有助于编程新手更好地理解后续内容。如果您已是经验丰富的程序员,可以直接跳到下一节。
语法 (Syntax)
如果您熟悉 C++、PHP 或其他许多语法源自 C 语言的编程语言,那么您会发现 MQL 编程非常容易上手。在 MQL4中,每条语句都必须以分号(;)结束,这被称为一个表达式,一个表达式可以多行,但结尾处必须有分号。
// 获取上一个 K 线的高点值
double LastHigh = High[1];
// 拼接一个跨行的字符串
string MultiLine = StringConcatenate("这是一个跨行语句。",
"这是一个跨行语句。");
如果您是编程初学者,或者习惯使用的语言不需要用分号来结束语句,那么请务必记住在MQL4的每条语句末尾都要加上分号,忘记加分号是新手常犯的错误。
不过也有几种例外:复合运算符结构本身不需要分号。所谓复合运算符,是指由一对大括号 {} 包裹起来的代码块,其中可以包含一条或多条语句。典型的复合运算符包括控制流语句(如 if
, switch
)、循环语句(如 for
, while
)以及函数定义。
// 这是一个 if 条件控制语句
if(Compound == true)
{
// 大括号内的语句需要以分号结束
Print("这是一个复合表达式内的语句");
}
// 结束大括号 } 后面不需要分号
请注意,在上述 if
语句的起始行(if(Compound == true)
)之后,以及结束大括号 }
之后,都不需要加分号。但是,在大括号内部的 Print()
函数调用语句则必须以分号结束。大括号内可以包含一条或多条语句,每一条语句都必须以分号结尾。
注释 (Comments)
注释 非常有用,既可以为代码添加解释性文档,也能在测试和调试阶段暂时“注释掉”或禁用部分代码。使用双正斜杠(//
)可以注释掉其后的单行内容:
// 这是一个单行注释,从 // 开始直到行尾
多行注释以 /*
开始,以 */
结束。这种注释可以跨越多行,所有在 /*
和 */
标记之间的内容都会被编译器忽略。
/*
这是一个多行注释块,
可以包含任意多行文本,
这里的所有内容都会被当作注释处理。
*/
标识符 (Identifiers)
标识符是您为变量 (variables) 和自定义函数指定的名称。标识符可由数字、字母以及下划线(_)自由组合构成,但其总长度不能超过 31 个字符。
理想情况下,您应当选择具有描述性的标识符来表明其用途,但同时必须确保所选名称不与 MQL4语言自身的关键字或内置函数名(也称为保留字, reserved words)冲突。以下分别为变量标识符和自定义函数标识符的示例(标识符分别为 StopLoss
和 Order_Count
):
// 定义一个双精度浮点型变量,其标识符是 StopLoss
double StopLoss;
// 声明一个返回整型值的自定义函数,其标识符是 Order_Count
int Order_Count()
请注意,MQL4中的标识符是区分大小写的。这意味着 StopLoss
和 stoploss
会被视为两个完全不同的标识符!这也是编程新手常犯的一个错误,因此请务必仔细检查您所使用的标识符名称的大小写拼写是否准确。