迴圈(Loop)
迴圈for和while語法,讓程式可以重複執行迴圈內的指令,直到滿足一定次數或是不滿足邏輯條件才離開迴圈。
跳出迴圈break和continue語法,讓程式可以中途跳出迴圈。
跳出腳本#return語法,讓程式跳出這一次腳本的執行。
For迴圈
for迴圈使用一個數值變數來計數,並給定初始值和最終值。
語法
for迴圈會與保留字To或DownTo搭配使用。
for迴圈與To搭配使用:
與To搭配使用,Counter的值從IValue開始,每執行一次迴圈,Counter的值就加一,直到大於FValue,則離開迴圈不再執行。
For Counter=IValue To FValue Begin
I1;
I2;
End;
for迴圈與DownTo搭配使用:
與DownTo搭配使用,Counter的值從IValue開始,每執行一次迴圈,Counter的值就減一,直到小於FValue,則離開迴圈不再執行。
For Counter=IValue DownTo FValue Begin
I1;
I2;
End;
Example
For BarBackNo = 0 To 9 Begin
HighPriceSum = HighPriceSum + High[BarBackNo];
End;
For BarBackNo = 9 DownTo 0 Begin
HighPriceSum = HighPriceSum + High[BarBackNo];
End;
While迴圈
while迴圈每一次執行前會先判斷邏輯陳述句(Logical_Expression),如果為真,則執行指令Begin和End區塊內的指令,直到為否,則跳出迴圈。
語法
While Logical_Expression Begin
I1;
I2;
I3;
End;
Where:Logical_Expression
– 邏輯陳述句I
– 邏輯陳述句為真時,會執行的指令
Example
BarBackNo = 0;
While BarBackNo < 10 Begin
HighPriceSum = HighPriceSum + High[BarBackNo];
BarBackNo = BarBackNo + 1;
End;
跳出迴圈
for和while迴圈會一直執行,直到條件不滿足才離開,但是有時候會出現,需要中途跳出迴圈的情況。
PowerLanguage提供了break和continue指令來中途跳出迴圈。
Break指令
當程式執行到break時,跳出並且結束整個迴圈。
Usage
break;
Examples
var: dayCount(0);
For dayCount = 0 to 6 Begin
If (Open < 16000) then break;
End;
var: dayCount(0);
dayCount = 0;
While dayCount < 7 Begin
If (Open < 16000) then break;
dayCount = dayCount + 1;
End;
Continue指令
當程式執行到continue時,跳出這次迴圈,並執行下一次迴圈,continue與break不同,continue只是跳出這一次迴圈,並不會結束整個迴圈。
Usage
continue;
Examples
var: dayCount(0);
For dayCount = 0 to 6 Begin
If (Open < 16000) then continue;
End;
var: dayCount(0);
dayCount = 0;
While dayCount < 7 Begin
If (Open < 16000) then continue;
dayCount = dayCount + 1;
End;
Return指令
#return指令與break類似,但是#return是結束這一次腳本的執行,而不是結束迴圈而已。
當程式執行到#return時,結束這一次腳本的執行,並且根據腳本的執行機制,在滿足下一次執行條件時(ex: K棒完成)重新執行腳本。
Usage
#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