Pineスクリプト®にメソッド構文が登場

03 7, 2023

他の言語で拡張メソッドに使用されているドット表記が、Pineスクリプト®でも使用できるようになりました。プログラマーの皆様には、この新しい構文を以下2つの異なる方法でご使用いただけます:

  • ユーザー定義メソッド、つまり新しいmethodのキーワードで宣言された特別な関数での使用
  • ビルトイン関数、つまりarrayboxlabellinelinefillmatrix、そしてtable型の名前空間からの関数で、初期パラメーターがその型のオブジェクトのIDである場合

ここでは、上昇バーのローリングウィンドウについて安値の平均を計算する簡単な例を見てみましょう。:

//@version=5
indicator("Long stop", "", true)
int lengthInput = input(20)
var pricesArray = array.new<float>(lengthInput)

method maintainQueue(array<float> srcArray, float value) =>
    // Append a new value to the end of the array.
    srcArray.push(value)
    // Remove the oldest value from the beginning of the array.
    srcArray.shift()

if close > open
    // Track the `low` values of up bars.
    pricesArray.maintainQueue(low)

plot(pricesArray.avg(), "Stop")

maintainQueue()メソッドは通常の関数と非常によく似ているので、同じように使うことができますが、methodのキーワードを使うと、第1引数の型の変数の後にドット表記を使用することもできます。この場合だと、pricesArray.maintainQueue(low)のように、メソッドの呼び出しから第1引数を省略することができます。

また、メソッドのコード内ではsrcArray.push()srcArray.shift() 、そして最後の行ではpricesArray.avg()など、arrayの名前空間からの関数においてメソッド表記を使っている点にも注目してください。

この新機能の詳細については、ユーザーマニュアルのMethodsについてのページに記載があります。

メソッドの実際の使用例を見るには、ビルトインのインジケーターであるGaps (ギャップ)でアップデートされているコードをご覧ください。ビルトインメソッドとユーザー定義メソッドの両方を使用して、チャート上のギャップをボックスで強調しています:

さらに私たちはZigZagライブラリのコードも更新し、ビルトインメソッドとユーザー定義メソッドを使用しています:

TradingViewによるZigZag

PineCodersによるスクリプトで使用されているオブジェクトやメソッドを以下に示しましたのでご覧ください:

FikiraによるFlare

HeWhoMustNotBeNamedによるRecursive Zigzag [Trendoscope]

HeWhoMustNotBeNamedによるRecursive Auto-Pitchfork [Trendoscope]

Pineスクリプト®の新機能に関する情報については、ユーザーマニュアルのリリースノートでご確認ください。また、PineCodersのアカウントでは、TelegramのSquawk BoxTwitterアカウントPineスクリプト® Q&A公開チャットから最新情報を発信しています。

ご要望の多かったこの機能が皆様のお役に立てば幸いです。今後も引き続き、ご意見・ご感想・改善提案などをお寄せください。私たちがTradingViewを構築しているのは皆様のためです。皆様からのご意見をいつでもお待ちしております。

Look first Then leap

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