Pineスクリプトでは、比較演算子の結果は、true、false、na の3つの可能性がある。
na の値を持つ変数に対して比較演算子を用いた場合、比較演算子の結果は常に na となる。つまり、変数 a = na のとき、a == true、a == false、a != true、a != false、a == na、a != na は全て na と評価される。
このように、比較演算子の結果は true か false だけだと思い込んでいると、Pineスクリプトでは、予想に反した結果を得ることになるので注意が必要。
また、変数 a = na のとき、a == na、a != na 両方とも結果が na となるので、変数の値が na かどうか確認したいときはビルトイン関数 na() を使う必要がある。関数 na() は、与えられた変数の値が na なら true、そうでなければ false を返す。
na との評価結果の確認には下記のコードを使用した。
//@version=4
study("comparison with na")
eval(c) => c ? 1 : (na(c) ? na : 0)
NA = bool(na)
b1 = bool(true)
c1 = NA == b1 // na == true
plot(eval(c1)) // na
b2 = bool(false)
c2 = NA == b2 // na == false
plot(eval(c2)) // na
b3 = bool(true)
c3 = NA != b3 // na != true
plot(eval(c3)) // na
b4 = bool(false)
c4 = NA != b4 // na != false
plot(eval(c4)) // na
b5 = bool(na)
c5 = NA == b5 // na == na
plot(eval(c5)) // na
b6 = bool(na)
c6 = NA == b6 // na != na
plot(eval(c6)) // na