MQL4语言教程应用与循环语法详解
4.2.3. IF-THEN条件语句
If-Then条件语句能够控制智能交易系统中指令的执行顺序,从而让程序的逻辑更加灵活。该语句有多种常见的编写方式:
if Condition then Statement;or
if Condition then begin
Statement;
Statement;
...
end;其中,条件是一个逻辑表达式,其结果只能为True或False;
"Statement"指的是MetaQuotes II语言中的任意指令。符号括号Begin–End可以用波形括号{ }代替。
条件语句可用于对程序进行分支控制。为了实现更复杂的逻辑,另一个关键字Else也会被使用。其语法结构为:
if Condition then Statement1 else Statement2;or
if ConditioLMAX外汇n then begin
Statement;
Statement;
...
end
else
Statement;
Statement;
...
endLMAX外汇;or
if Condition then begin
Statement;
Statement;
...
end
else Statement2;or
if Condition then Statement1
else
Statement;
Statement;
...
end;条件语句也可以嵌套使用。一般来说,语句可以由MetaQuotes II语言中任何合法指令构成,但变量声明除外,因为严格意义上,变量声明并不算可执行的语句。
4.2.4. WHILE循环
WHILE循环会在循环条件成立时,反复执行循环主体内的语句。循环可以通过Break语句提前结束。另外,使用Continue语句可以跳过本次迭代中剩余的语句,直接进入下一次循环。在条件语句中合理使用Break和Continue是很常见的做法。语法如下:
while Condition begin
Statement;
[break;][continue;]
...
end;其中,条件是在每次循环迭代前计算的逻辑表达式,结果为True或False;
语句是MetaQuotes 4语言中任意合法指令。
符号括号Begin–End用于表示循环主体,也可以用波形括号{ }替代。
“Break和Continue”并不是强制要求的。
示例:
Counter = 1;
while Counter <= Bars begin
print( Close[ Counter - 1 ] );
Counter = Counter + 1;
end;这个示例演示了一个按基准次数执行的循环。如果基准值为0,那么循环可能一次都不会执行。
4.2.5. For循环
For循环可以确保循环主体中的语句按照指定次数执行。语法如下:
for NumberVariable = InitialValue to|downto LimitValue begin
StateLMAX外汇ment;
[break;][continue;]
...
end; 其中,数字变量是循环变量,在每次迭代之后会增加或减少1,具体取决于使用的是关键字To还是Downto;
InitialValue是循环变量的起始数值。
Statement是MetaQuotes 4语言中的任意合法指令。
To或Downto决定了循环变量是增加1(To)还是减少1(Downto);
LimitValue是循环变量的边界数值。
操作符brackets Begin–End用于表示循环主体,也可以使用波形括号{}代替。
Break和Continue语句并非强制性的。
示例:
for Counter = 1 to 10 begin
if Counter > Bars then break;
print( Close[ Counter ] );
end; 这个示例演示了一个可能会执行10次的循环。但如果基准值(Bars)小于10,循环会提前终止,也就是说循环实际执行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次。但收盘值的打印次数不会超过基准次数。"..."代表MetaQuotes 4语言中的其他语句。
4.3. 交易中断的预选界定变量
为了方便用户使用,智能交易系统中的一些变量可以直接从输入中获取。
AccountNumber-账号(同义词:AccNum)
Ask –卖价(买方出价)
Balance – 交易账户的余额值
Bars – 图表上条形的数量,这是反映图表数据填充程度的重要变量。
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 – 价格图表上的条形时间的基准时间;
TotalProfit – 所有开仓部位的总未实现利润;
TotalTrades –开仓部位的总数以及交易中断上的延迟订单;
Volume – 交易量(期间交易的笔数)
需要注意的是,Close, Open, High, Low, Volume, Time属于历史数据数组(series arrays),允许访问上一个交易周期的数据。
