迴圈(Loop)#

forwhile 迴圈語法,讓程式可以重複執行迴圈內的指令,直到滿足一定次數或不滿足邏輯條件才離開迴圈。

breakcontinue 語法,讓程式可以中途跳出迴圈。

#return 語法,讓程式跳出這一次腳本的執行。

for 迴圈#

for 迴圈使用一個數值變數來計數,並給定初始值和最終值。for 迴圈會與保留字 ToDownTo 搭配使用。

搭配 To#

To 搭配使用,Counter 的值從 IValue 開始,每執行一次迴圈,Counter 的值就加一,直到大於 FValue,則離開迴圈不再執行。

1
2
3
4
For Counter = IValue To FValue Begin
  Instruction_1;
  Instruction_2;
End;
語法元素說明
Counter數值變數,作為迴圈計數器
IValue計數器的初始值
FValue計數器的最終值

搭配 DownTo#

DownTo 搭配使用,Counter 的值從 IValue 開始,每執行一次迴圈,Counter 的值就減一,直到小於 FValue,則離開迴圈不再執行。

1
2
3
4
For Counter = IValue DownTo FValue Begin
  Instruction_1;
  Instruction_2;
End;

範例#

搭配 To: 從第 0 根到第 9 根K棒,累加最高價到 HighPriceSum

1
2
3
4
5
Variables: BarBackNo(0), HighPriceSum(0);

For BarBackNo = 0 To 9 Begin
  HighPriceSum = HighPriceSum + High[BarBackNo];
End;

搭配 DownTo: 從第 9 根到第 0 根K棒,累加最高價到 HighPriceSum

1
2
3
4
5
Variables: BarBackNo(0), HighPriceSum(0);

For BarBackNo = 9 DownTo 0 Begin
  HighPriceSum = HighPriceSum + High[BarBackNo];
End;

while 迴圈#

while 迴圈每一次執行前會先判斷邏輯陳述句,如果為 true,則執行 begin/end 區塊內的指令; 如果為 false,則跳出迴圈。

語法#

1
2
3
4
While Logical_Expression Begin
  Instruction_1;
  Instruction_2;
End;
語法元素說明
Logical_Expression邏輯陳述句,每次迴圈開始前判斷
Instruction邏輯陳述句為 true 時執行的指令

範例#

從第 0 根到第 9 根K棒,累加最高價到 HighPriceSum。與上方 for 迴圈搭配 To 的範例等價。

1
2
3
4
5
6
7
Variables: BarBackNo(0), HighPriceSum(0);

BarBackNo = 0;
While BarBackNo < 10 Begin
  HighPriceSum = HighPriceSum + High[BarBackNo];
  BarBackNo = BarBackNo + 1;
End;

跳出迴圈和腳本#

forwhile 迴圈會一直執行,直到條件不滿足才離開。但有時候需要中途跳出迴圈,PowerLanguage 提供了 breakcontinue 指令來中途跳出迴圈,以及 #return 指令來跳出腳本。

break#

當程式執行到 break 時,跳出並且結束整個迴圈

語法#

1
break;

範例#

for 迴圈搭配 break: 遍歷 dayCount 從 0 到 6,當 dayCount 等於 2 時結束整個迴圈,此時 total 的值為 2

1
2
3
4
5
6
Variables: dayCount(0), total(0);

For dayCount = 0 To 6 Begin
  If dayCount = 2 Then break;
  total = total + 1;
End;

while 迴圈搭配 break: 與上方 for 迴圈範例等價。

1
2
3
4
5
6
7
8
9
Variables: dayCount(0), total(0);

dayCount = 0;
While dayCount < 7 Begin
  If dayCount = 2 Then break;

  total = total + 1;
  dayCount = dayCount + 1;
End;

continue#

當程式執行到 continue 時,跳過這一次迴圈剩餘的指令,直接執行下一次迴圈。continuebreak 不同,continue 只是跳過這一次迴圈,並不會結束整個迴圈。

語法#

1
continue;

範例#

for 迴圈搭配 continue: 遍歷 dayCount 從 0 到 6,當 dayCount 等於 2 時跳過 total 的累加,total 最終值為 6

1
2
3
4
5
6
Variables: dayCount(0), total(0);

For dayCount = 0 To 6 Begin
  If dayCount = 2 Then continue;
  total = total + 1;
End;

while 迴圈中使用 continue 時要特別注意: 如果計數器的遞增指令在 continue 之後,continue 會跳過遞增,可能導致無限迴圈。解決方法是在 continue 之前先遞增計數器。

while 迴圈搭配 continue: 當 dayCount 等於 2 時,先遞增 dayCount 再執行 continue,避免無限迴圈。與上方 for 迴圈範例等價,total 最終值為 6

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Variables: dayCount(0), total(0);

dayCount = 0;
While dayCount < 7 Begin
  If dayCount = 2 Then Begin
    dayCount = dayCount + 1;
    continue;
  End;

  total = total + 1;
  dayCount = dayCount + 1;
End;

#return#

#return 指令與 break 類似,但 #return 是結束這一次腳本的執行,而不是只結束迴圈。

當程式執行到 #return 時,結束這一次腳本的執行,並且根據腳本的執行機制,在滿足下一次執行條件時(Ex: K棒完成)重新執行腳本。

語法#

1
#return;

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

© 2026 CodeReindeer. All rights reserved.