スクリプトの入力をセクションや行で整理しましょう

03 12, 2021

最新のPineアップデートでは、入力に関する2つの改善点が導入されました:

  • 新しい group パラメーターでは、プログラマーの方が入力グループのセクションヘッダーを定義できます。
  • 新しい inline パラメーターでは、複数の入力を1行にまとめることができます。

これらの新機能を利用される事で、自動フィボナッチ・リトレースメント・インジケーターの様に、入力をよりきちんと整理するといったことが可能です。

新しいパラメーターをスクリプトで使用するのは簡単です!VWAPインジケーターの例を見てみましょう。計算の開始地点と終了地点を指定したり、アンカーの表示を制御したりすることができます:

//@version=4
study(title = "Custom Period VWAP", shorttitle = "CPVWAP", overlay = true)

src = input(hlc3, "Source", input.source)
enableHighlight = input(true, "Highlight", input.bool, inline = "Highlight")
highlightType = input("Anchors", "", input.string, options = ["Anchors", "Background"], inline = "Highlight")
highlightColor = input(color.red, "", input.color, inline = "Highlight")
useStartPeriodTime = input(true, "Start", input.bool, group = "Date Range", inline = "Start Period")
startPeriodTime = input(timestamp("20 Jan 2021"), "", input.time, group = "Date Range", inline = "Start Period")
useEndPeriodTime = input(true, "End", input.bool, group = "Date Range", inline = "End Period")
endPeriodTime = input(timestamp("20 Feb 2021"), "", input.time, group = "Date Range", inline = "End Period")

start = useStartPeriodTime ? startPeriodTime >= time : false
end = useEndPeriodTime ? endPeriodTime <= time : false
calcPeriod = not start and not end

var srcVolArray = array.new_float(na)
var volArray = array.new_float(na)
var line startAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width = 2)
var line endAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width = 2)
useBgcolor = false

if calcPeriod
    array.push(srcVolArray, src*volume)
    array.push(volArray, volume)
else
    array.clear(srcVolArray), array.clear(volArray)

customVwap = array.sum(srcVolArray) / array.sum(volArray)
if enableHighlight
    if highlightType == "Anchors"
        if useStartPeriodTime
            line.set_xy1(startAnchor, startPeriodTime, low)
            line.set_xy2(startAnchor, startPeriodTime, high)
        if useEndPeriodTime
            line.set_xy1(endAnchor, not na(customVwap) ? time : line.get_x1(endAnchor), low)
            line.set_xy2(endAnchor, not na(customVwap) ? time : line.get_x1(endAnchor), high)
    if highlightType == "Background"
        useBgcolor :=  true

bgcolor(useBgcolor and calcPeriod ? highlightColor : na, editable = false)
plot(customVwap, title="CPVWAP", color = color.blue, linewidth = 2)

group 引数は2つの方法で利用されます。文字列はグループのヘッダーとして使用され、またどの入力がそのグループに属するかを定義します。

inline 引数を使用すると、同じ inline 引数を使用するすべての input() の呼び出しを1行にまとめられます。それぞれの input() コールの title 引数は、フィールドの見出しを決定します。input() コールで title 引数が使用されていない場合には、そのフィールドには見出しが付きません。inline で結合された入力が1行に収まらない場合は、その一部が次の行に折り返されます。

新しいパラメーターの説明は、Pineリファレンスマニュアルの input() の項目をご確認ください。

Pineのすべてのアップデートについては、ユーザーマニュアルのリリースノートをご覧ください。

多数のご要望を頂いたこの機能がお役に立ちましたら幸いです。引き続き改善のためのフィードバックをお寄せください。私たちは皆様のためにTradingViewを構築していますので、フィードバックをお待ちしております。

Look first Then leap

あなたのためのTradingView、その最高の機能を最大限にご活用ください
チャートを起動