程式交易,就是一連串的判斷。
關於程式交易非常重要的部分,但也沒有這麼複雜。
- 達到條件,買進 or 賣出。
- 虧損特定點數,停損 or 凹單。
- 獲利特定點數,停利 or 加碼。
if 條件判斷在非零值,會執行下面區段的程式碼。

在輸出的log裏面,false 跟 0 就沒有執行。

字元 A 也是非零值,以下程式就會被執行,當有多行程式碼需要執行時,需要用{ }包成區段,在這裡面的程式碼就都會執行。


關係運算 + if-else
- > 大於
- < 小於
- == 等於
- != 不等於
以下示範透過兩個變數條件判斷
A大於B的情況,A也不等於B。


改變A變數,A小於B,A也不等於B。


改變A變數讓兩者相等
if-else 條件判斷會依序執行,if (A > B) 不成立,換下一個 else if ( A < B )不成立,最後就執行else。


等於跟不等於是相反的,可以用if-else改寫,等於判斷如果為false那就是不等於會走else區段。

變成賦值操作
如果只有一個 = 會變成賦值操作,放在if判斷裡面也是可以,但是會跟預期結果不一樣,可能會花很多時間找這個小小的錯誤。
編譯結果雖然沒有error,但是有warnings警告 expression not boolean 表達式非布林值,正視並修正每一個warnings,程式可以執行不代表沒有邏輯上的錯誤。

原本 X=3, Y=5 在做等於判斷的時候不會成立,因為少打一個=變成賦值操作,跟預期結果不一樣,然後X變數也被賦值成5。
在if判斷式賦值之後會變成判斷 if ( X ),因為X為非零值所以會執行以下的程式碼。

邏輯運算
- || OR (其中一個成立為True)
- && AND (兩個都成立才為True)


OR 最小化計算

OR前後在做真假值判斷時,如果前面為True,此時最終結果就是True,後面的部分也就沒有必要求值。
=賦值優先權比較低,用( )可以讓他優先執行避免語法錯誤,為了驗證OR的最小化計算才在If裡面使用,這是錯誤的示範,請一定不能在if判斷裡面做賦值。

- >= 大於或是等於
- <= 小於或是等於

A=3, B=5 的情況

A=5, B=5 的情況

A=9, B=5 的情況

提供程式讓大家研究,需放在Scripts資料夾。
條件判斷.mq4