見出し画像

Pine Script™ (v5) の覚書 - コラム :スクリプトが落ちる! array()の罠

図1 スクリプトエラーとの遭遇

「!スクリプトエラー」

無情なメッセージに出会ったことはありませんか?
存在しないオブジェクトにアクセスするとすぐにこの状況になります。

例えば、配列<array>は便利ですが、存在しない配列の要素にアクセスすると簡単にこの状況になります。

myArray=request.security_lower_tf(syminfo.tickerid,’1’,ta.sma(close,20))
//一分足の20期間移動平均を取得、下位足データなので配列になる。

plot(myArray.get(0))
//myArrayの先頭の要素をplotしようとすると、
//0本目のローソク時点でmyArrayが空っぽの状態があるらしく、「!スクリプトエラー」に

このエラーを回避するには、アクセスしようとした要素がなかったらna値を返すようにすれば良いのですが、array.get()やarray.last()を使うたびにその処理を書くのは面倒なので、methodを定義して回避します。

method oldest(array<float> a)=>a.size()>0?array.get(0):na
method latest(array<float> a)=>a.size()>0?array.last():na

myArray=request.security_lower_tf(syminfo.tickerid,’1’,ta.sma(close,20))

plot(myArray.oldest())
plot(myArray.latest())

他のコラムもどうぞ


この記事が気に入ったらサポートをしてみませんか?