見出し画像

Pine Script™ (v5) の覚書 - コラム : 引数をどう指定するか?

スクリプトを書いていると、同じような処理をしているコードがたくさんできたり、大量の引数がある関数があったりと、ソースコードがゴチャゴチャになりがちです。

特に、大量の引数がある関数では、一行が長くなったり、ぱっと見で引数の順番がわからなくなったりします。
例えば、labelにはたくさんの引数があり、その書き方も様々です。

labelとその引数

label.new(x, y, text, xloc, yloc, color, style, textcolor, size, textalign, tooltip, text_font_family) → series label

基本的に引数は、定義されている順であれば、値だけ「,」(カンマ)区切りで並べて指定できます。

また、デフォルト値が定義されている引数は省略可能です。
X座標を現在のローソク足、Y座標を高値としてデフォルトのスタイルのラベルを表示する場合、
x, y, textの引数の値を順番に指定するだけです。

mylabel=label.new(bar_index, high, "label_sample”)

一方で、「引数名=値」として引数を指定することもでき、この場合は、引数の順序は気にする必要がありません。

mylabel=label.new(text="label_sample”,x=bar_index,y=high)

これらは組み合わせて使うことができるので、引数の最初の方にある必須となる値は、順序を守って値のみで書き、
選択的に指定する値は、順序を気にせず「引数名=値」の形で表現することができます。

以下の例では、x,y,textを値だけで順序を守って書き、xlocを飛ばして、ylocを「引数=値」の形で表現しています。

mylabel=label.new(bar_index,na,"label_sample”,yloc=yloc.abovebar)

最終的にはどちらのスクリプトも構文としては間違っていないので、好みの問題ですが、スクリプトの可読性やバグ回避のことを考えると工夫できるポイントです。