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开发至关重要。