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)然后回到第二步继续实施循环。再补充一点:假使循环体中(大括号中)只有一行语句,大括号可以省略