MQL4编程教程:条件与循环语句详解
4.2.3. IF-THEN条件语句
If-Then条件语句是实现程序流程控制的基础,它允许根据特定条件来决定是否执行某些指令。其基本结构有以下几种写法:
if Condition then Statement; 或者
if Condition then begin
Statement;
Statement;
...
end; 其中,Condition是一个逻辑表达式,其结果为True或False;
“Statement”代表MQL4语言中的任何可执行指令。Begin和End这对符号括号也可以用花括号{ }来替代。
为了实现程序的分支选择,可以结合Else关键字使用。语法如下:
if Condition then Statement1 else Statement2; 或者
if Condition then begin
Statement;
Statement;
...
end
else
Statement;
Statement;
...
end; 以及其他组合形式。
条件语句支持嵌套使用。通常,语句部分可以是MQL4语言中任何合法的指令,但变量声明除外,因为它本身并非一个可执行语句。
4.2.4. WHILE循环
WHILE循环用于在条件满足时,重复执行循环体内的语句。可以使用Break语句提前终止整个循环。使用Continue语句可以跳过当前迭代中剩余的代码,直接开始下一次循环。在条件判断中使用Break和Continue是常见的做法。语法如下:
while Condition begin
Statement;
[break;][continue;]
...
end; 其中,Condition是循环执行条件,在每次迭代开始前计算,结果为True或False;
Statement是MQL4语言的任何指令。
Begin – End表示循环体,同样可用{ }替代。
Break和Continue语句是可选的。
示例:
Counter = 1;
while Counter <= Bars begin
print( Close[ Counter - 1 ] );
Counter = Counter + 1;
end; 这个例子展示了循环将执行Bars次,如果Bars为0,则循环体一次也不会执行。
4.2.5. FOR 循环
FOR循环用于让循环体内的语句执行指定的次数。语法如下:
for NumberVariable = InitialValue to|downto LimitValue begin
Statement;
[break;][continue;]
...
end; 其中,数字变量NumberVariable是循环计数器,在每次迭代后根据使用To(递增1)或Downto(递减1)关键字进行变化;
InitialValue是循环变量的起始值。
Statement是MQL4语言的任何指令。
To或Downto决定了循环变量的变化方向;
LimitValue是循环变量的终止边界值。
Begin – End表示循环体,可替换为{ }。
Break和Continue语句同样是可选的。
示例:
for Counter = 1 to 10 begin
if Counter > Bars then break;
print( Close[ Counter ] );
end; 这个例子中,循环计划执行10次。但如果Bars的值小于10,循环会因Break语句而提前终止,实际执行次数等于Bars的值。
4.2.6. BREAK中断语句
中断语句用于提前终止For循环或While循环。前面的例子已经展示了其用法。Break语句仅在循环体内有效。在嵌套循环中,Break语句会终止离它最近的那一层循环,而不会影响外层的循环。
4.2.7. CONTINUE继续语句
CONTINUE语句用于提前结束当前循环迭代,并立即开始下一次迭代。位于Continue之后、本次循环结束之前的语句将被跳过。示例:
for Counter = 1 to 10 begin
...
if Counter > Bars then continue;
print( Close[ Counter ] );
...
end; 这个例子中,循环大约会执行10次,但打印收盘价的次数不会超过Bars的值。“...”代表MQL4语言的其他语句。
4.3. 预定义交易变量
为了便于编程,交易系统预定义了一系列变量,开发者可以直接调用。例如,在山海证券外汇平台的MT4环境中编写智能交易系统时,这些变量非常实用。
AccountNumber-账户号码(同义词:AccNum)
Ask –卖出价(买方报价)
Balance – 交易账户的净值余额
Bars – 图表上K线的数量,是反映数据充分程度的重要变量。
Bid -买入价(卖方报价)
Close –收盘价数组
Credit –信用额度
Equity –账户净值,包含浮动盈亏
FreeMargin –交易账户的可用保证金,常用于检查资金可用性;
High –周期内最高价数组
Low -周期内最低价数组
Margin –持仓所占用的保证金
Open –开盘价数组
Point – 当前交易品种的最小报价单位(点值),例如, USD/JPY 通常为0.01, USD/CHF 为0.0001等。
PriceAsk –市场报价窗口中显示的当前卖出价。
PriceBid -市场报价窗口中显示的当前买入价。
PriceHigh – 当前24小时周期内的最高买入价。
PriceLow -当前24小时周期内的最低卖出价。
PriceTime -市场报价窗口中显示的当前时间。
Time – 价格图表上对应K线的时间数组;
TotalProfit – 所有持仓的总浮动盈亏;
TotalTrades –开仓持仓及挂单的总数;
Volume – 成交量数组
需要特别注意的是,Close, Open, High, Low, Volume, Time属于历史数据序列数组,允许访问过去周期的相应数据。掌握这些变量对于在山海证券外汇平台等环境中进行有效的EA开发至关重要。