首页学院交易策略EA智能交易文章详细

MT4指标编程入门(八):循环

外汇网2021-06-17 09:40:06 46
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

MT4指标编程入门:分析语句的用法

一幅K线图有几千上万条K线,每根K线又各有开收盘价、最高低价等数值,而且仍有很多移动平均线、MACD、RSI等指标值。

面对海量报告,我们务必用循环来达到报告的取值和赋值。

while循环

while(条件)

{

语句1

语句2

}

规则:当小括号中的条件成立时,就实施大括号中的语句,实施完了再分析条件能否成立,假使条件成立就继续实施大括号中的语句。

只要条件成立,程序就不停地运行大括号中的语句(循环体),直到小括号中的条件不再成立时终结循环。

它与if语句的区别是:if语句是当条件为真时运行一次;而while语句则是只要条件为真,循环体语句就不停地运行,直到条件为假时终结循环。

例:

externint快线=12;

externint慢线=26;

doublebuffer[];

inti=0;

while(i<1000)

{

buffer=iMA(NULL,0,快线,0,MODE_EMA,PR洲际交易所_CLOSE,i)

-iMA(NULL,0,慢线,0,MODE_EMA,PR洲际交易所_CLOSE,i);

i++;

}

这里,循环实施条件是i<1000,循环体中有两个语句,一句是把两条均线的差值赋给数组buffer,另一句“i++;”是每运行一次,i的值在原有基础上增长1。如此,伴随循环的持续运行,i的值渐渐增长,循环1000次后,i的值也就从0变为1000,此时“i<1000”就不再成立,循环终结。如此,数组buffer[]中也就有了1000个值。

for循环

for循环与while循环在原理上是统一的,导致书写格式上有所区别

把上面的例子改成for语句:

externint快线=12;

externint慢线=26;

doublebuffer[];

for(inti=0;i<1000;i++)

{

buffer=iMA(NULL,0,快线,0,MODE_EMA,PR洲际交易所_CLOSE,i)

-iMA(NULL,0,慢线,0,MODE_EMA,PR洲际交易所_CLOSE,i);

}

与前面对比,我们注意到:

“inti=0;”语句从“while(i<1000)”上方移到循环条件“i<1000”的前面;

“i++;”语句从循环体中移到了循环条件“i<1000”的后面;

循环实施顺序与while循环统一:

第一步、先实施小括号中的第1句:inti=0;

(此语句用来定义初始变量,在循环中仅实施一次,可以为没有任何表达式的空操作符“;”)

第二步、再分析小括号中的第2句能否成立:i<1000;

假使不成立,则循环终结;假使成立,则循环继续运行,实施第三步

第三步、按顺序实施大括号中的语句

第四步、实施小括号中的第1句:i++(此语句即:每实施一次,i的值增长1)

然后回到第二步继续实施循环。

再补充一点:假使循环体中(大括号中)只有一行语句,大括号可以省略

标签:

随机快审展示
加入快审,优先展示

加入VIP