您现在的位置: 比特财富网 >> 财经 >  >> 外匯
MT4編程初級手冊(8):循環語句
外_匯_邦 WaiHuiBang.com

一幅K線圖有幾千上萬條K線(Bar,根據設定的樣本數),每根K線Bar又各有開收盤價、收盤價、最高低價等數值,而且還有很多移動平均線、MACD、RSI等技術指標數值。www.emoneybtc.com

 

面對大量的數據,我們經常采用循環來實現數據的取值和賦值。下面我們簡單來介紹一下MT4中主要用到的循環語句。

 

一、while循環

 

while(判斷條件)

   {

   語句1;

   語句2;

   。。。;

   }

 

規則:當小括號中的判斷條件成立時,就執行大括號中的語句,執行完畢後再判斷條件是否成立,如果條件成立就再繼續執行大括號中的語句。

 

只要條件成立,程序就不停地執行大括號中的語句(循環體),直到小括號中的條件不再成立時結束循環,while循環又叫做“當循環”,意思為當XX條件時執行循環。

 

它與if語句的區別是:if語句是當條件為真時只運行一次;而while語句則是只要條件為真,循環體語句就不斷地運行,直到條件為假時結束循環。所以為了避免造成死循環,循環體內應當對判斷的條件進行修改,如進行數值的累加等。

 

例:

 

   extern int fast=12;

   extern int slow=26;

   double buffered[ ];

   int i=0;

   while(i<1000)

     {

      buffered=  iMA(NULL,0,fast,0,MODE_EMA,PRICE_CLOSE,i)

                 -iMA(NULL,0slow,0,MODE_EMA,PRICE_CLOSE,i);

      i++;

     }

 

這裡,循環執行條件是i<1000,循環體中有兩條語句,一句是把兩條均線的差值賦給數組buffer,另一句“i++;”,我們知道“++”是自增運算符,那麼每運行一次,i的值在原有基礎上增加1。這樣,隨著循環的不斷地運行,i的值逐漸增加,循環到1000次後,i的值也就從0變為了1000,此時“i<1000”就不再成立,循環結束。這樣,數組buffered[ ]中也就存儲了1000個值。

 

二、for循環

 

for循環與while循環在原理上可以認為是一致的,只是書寫格式上有所區別,一般for循環多用在已知循環次數的循環上面,而while循環用在未知循環次數的循環上面(也即循環的次數可能根據運行的結果動態的改變)。

 

例如,把上面的例子改成for循環:

 

   extern int fast=12;

   extern int slow=26;

   double buffered[ ];

 

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

     {

      buffered=  iMA(NULL,0,fast,0,MODE_EMA,PRICE_CLOSE,i)

                 -iMA(NULL,0,slow,0,MODE_EMA,PRICE_CLOSE,i);

     }

 

與前面對比比,我們注意到:

 

“int i=0;”語句從“while(i<1000)”循環體上方移到循環條件裡面、“i<1000”的前面;

 

“i++;”語句從循環體中移到了循環條件裡面、“i<1000”的後面。

 

循環執行順序與while循環是一致的:

 

第一步、先執行小括號中的第1句:int i=0;

 

(此語句用來定義初始循環變量,在循環中僅執行一次,可以為沒有任何表達式的空操作符“;”)

 

第二步、再判斷小括號中的第2句是否成立:i<1000;

 

如果成立,則循環繼續運行,執行第三步;如果不成立,則循環結束;

 

第三步、按順序執行大括號中循環體的語句;

 

第四步、執行小括號中的第1句:i++ (此語句即:每循環一次,i的值自增1)

 

然後回到第二步繼續執行循環。

 

再補充一點:同if語句一樣,如果循環體中(大括號中)只有一行語句,大括號可以省略,其他的操作符也是如此。

外_匯_邦 WaiHuiBang.com
  • 殺估值接近尾聲,市場重新洗牌

    這段時間市場的套路幾乎不變,游資圍繞可轉債和注冊制次新股找機會,機構在大金融、白酒、新能源車產業鏈裡面轉,其它的主題和行業,要麼是一日游,

  • 射擊之星與吊頸

    射擊之星與吊頸皆出現在市場階段性頂部區域,都為見頂下跌的轉向形態。雖在上升趨勢末端出現,形態上卻恰好相反,射擊之星類似於“⊥”,吊頸類似於“

  • 炒匯成功者的經驗

    外_匯_邦 WaiHuiBang.com     資本市場是一個創造奇跡的地方,

  • 淘氣值怎麼才能增加到1000成為超級會員?

    最佳答案: 比較快提升淘氣值的辦法就是多花錢。因為在淘寶購物的金額是可以換算成淘氣值的,同時購買的頻

  • 平安養老金通90天為什麼預計超時?

    最佳答案: 不知道你被提示預計超時是什麼時候,如果是在申購的時候被提示預計超時,那麼很有可能是當天的

  風險提示:比特財富網的各種信息資料僅供參考,不構成任何投資建議,不對任何交易提供任何擔保,亦不構成任何邀約,不作為任何法律文件,投資人據此進行投資交易而產生的後果請自行承擔,本網站不承擔任何責任,理財有風險,投資需謹慎。
比特財富網 版權所有 © www.emoneybtc.com