迴圈(Loop)#
for 和 while 迴圈語法,讓程式可以重複執行迴圈內的指令,直到滿足一定次數或不滿足邏輯條件才離開迴圈。
break 和 continue 語法,讓程式可以中途跳出迴圈。
#return 語法,讓程式跳出這一次腳本的執行。
for 迴圈#
for 迴圈使用一個數值變數來計數,並給定初始值和最終值。for 迴圈會與保留字 To 或 DownTo 搭配使用。
搭配 To#
與 To 搭配使用,Counter 的值從 IValue 開始,每執行一次迴圈,Counter 的值就加一,直到大於 FValue,則離開迴圈不再執行。
| |
| 語法元素 | 說明 |
|---|---|
Counter | 數值變數,作為迴圈計數器 |
IValue | 計數器的初始值 |
FValue | 計數器的最終值 |
搭配 DownTo#
與 DownTo 搭配使用,Counter 的值從 IValue 開始,每執行一次迴圈,Counter 的值就減一,直到小於 FValue,則離開迴圈不再執行。
| |
範例#
搭配 To: 從第 0 根到第 9 根K棒,累加最高價到 HighPriceSum。
| |
搭配 DownTo: 從第 9 根到第 0 根K棒,累加最高價到 HighPriceSum。
| |
while 迴圈#
while 迴圈每一次執行前會先判斷邏輯陳述句,如果為 true,則執行 begin/end 區塊內的指令; 如果為 false,則跳出迴圈。
語法#
| |
| 語法元素 | 說明 |
|---|---|
Logical_Expression | 邏輯陳述句,每次迴圈開始前判斷 |
Instruction | 邏輯陳述句為 true 時執行的指令 |
範例#
從第 0 根到第 9 根K棒,累加最高價到 HighPriceSum。與上方 for 迴圈搭配 To 的範例等價。
| |
跳出迴圈和腳本#
for 和 while 迴圈會一直執行,直到條件不滿足才離開。但有時候需要中途跳出迴圈,PowerLanguage 提供了 break 和 continue 指令來中途跳出迴圈,以及 #return 指令來跳出腳本。
break#
當程式執行到 break 時,跳出並且結束整個迴圈。
語法#
| |
範例#
for 迴圈搭配 break: 遍歷 dayCount 從 0 到 6,當 dayCount 等於 2 時結束整個迴圈,此時 total 的值為 2。
| |
while 迴圈搭配 break: 與上方 for 迴圈範例等價。
| |
continue#
當程式執行到 continue 時,跳過這一次迴圈剩餘的指令,直接執行下一次迴圈。continue 與 break 不同,continue 只是跳過這一次迴圈,並不會結束整個迴圈。
語法#
| |
範例#
for 迴圈搭配 continue: 遍歷 dayCount 從 0 到 6,當 dayCount 等於 2 時跳過 total 的累加,total 最終值為 6。
| |
在
while迴圈中使用continue時要特別注意: 如果計數器的遞增指令在continue之後,continue會跳過遞增,可能導致無限迴圈。解決方法是在continue之前先遞增計數器。
while 迴圈搭配 continue: 當 dayCount 等於 2 時,先遞增 dayCount 再執行 continue,避免無限迴圈。與上方 for 迴圈範例等價,total 最終值為 6。
| |
#return#
#return 指令與 break 類似,但 #return 是結束這一次腳本的執行,而不是只結束迴圈。
當程式執行到 #return 時,結束這一次腳本的執行,並且根據腳本的執行機制,在滿足下一次執行條件時(Ex: K棒完成)重新執行腳本。
語法#
| |
Reference#
https://www.multicharts.com/trading-software/index.php?title=Category:Comparisons_and_Loops
https://www.multicharts.com/trading-software/index.php?title=Return
https://www.multicharts.com/trading-software/index.php?title=While
https://www.multicharts.com/trading-software/index.php?title=For