TradingViewのPineスクリプトでインジケーター設定(歯車マーク)を自作するには?
投稿日:カテゴリ:TradingView
この記事のポイント
自作したPineスクリプトのインジケーター。その数値を変更するたびに、エディタを開いてコードを書き換えるのは面倒ですよね。この記事では、そんな手間を解消する「input」機能の使い方を解説します。この機能をマスターすれば、あなたも標準インジケーターのような設定画面(歯車マーク)を自作でき、コードを触らずにパラメータを調整可能になります。これを読めば、あなたのオリジナルインジケーターが格段に使いやすくなります。
「インジケーターの数値を、毎回コードを書き換えて変更するのが面倒…」
上記の記事で、簡単な移動平均線インジケーターを作成する方法を紹介しました。しかし、実際にそれを使ってみると、すぐに一つの大きな壁にぶつかります。
それは、「期間の数値を20から50に変更したい」と思った時、いちいちPineエディタを開き、コードの中の数字を直接書き換えなければならない、という点です。この作業は非常に手間がかかり、分析の思考を中断させてしまいます。
標準のインジケーターなら、チャート左上の歯車マーク(設定)から誰でも簡単にパラメータを変更できるのに、自作のものではそれができません。このままでは、せっかく作ったオリジナルインジケーターも、非常に使い勝手の悪いものになってしまいます。
この問題を解決し、あなたのインジケーターを、まるで標準搭載されているかのように使いやすくするのが、今回学ぶ「input」機能です。
設定変更のたびにコードを書き換える非効率性
上記の記事で作成した移動平均線のコードでは、期間を「20」という数字で、プログラムの中に直接書き込みました。このように、設定値をコード内に直接記述する方法を「ハードコーディング」と呼びます。
この方法の問題点は、数値を変更したいと思うたびに、Pineエディタを開いてコードを一行ずつ探し、手作業で書き換えなければならないという、その非効率性にあります。これでは、様々な期間を素早く試すといった、柔軟な分析ができません。
また、他の人がそのスクリプトを使おうとしても、コードを読めない限り設定変更が不可能です。
理想的なのは、コードの「計算ロジック」の部分と、変更する可能性のある「設定値」の部分とを、明確に分離することです。これを実現するのが、次の章から学ぶ`input`関数です。
input()関数の基本:設定メニュー項目を作る
ハードコーディングの問題を解決するのが`input()`関数です。この関数は、インジケーターの設定画面(歯車マーク)に、ユーザーが数値を入力できる項目を追加する命令です。最も基本的な書き方は以下の通りです。
`hensu_mei = input.int(20, title=”Kikan”)` まず、`hensu_mei`の部分で、この設定値にプログラム内で使う名前を付けます。
`input.int()`は、整数(integer)を入力させる、という意味です。括弧の中の`20`は、最初に表示される初期値(デフォルト値)です。
`title=”Kikan”`は、設定画面に表示される項目名を指定しています。この一行をコードに追加するだけで、あなたのインジケーターの設定画面に「Kikan」という名前の、初期値が20の入力ボックスが一つ作られます。
実践①:移動平均線の期間をinput()で変更可能にする
上記の記事で作成した単純移動平均線のスクリプトを、`input()`関数を使って改造してみましょう。
元のコードでは、期間の「20」という数字が直接書き込まれていました。これを、設定画面から変更できるようにします。Pineエディタを開き、コードを以下のように4行に書き換えてください。
3行目に追加:`smaLength = input.int(20, title=”SMA期間”)` この一行で、設定画面に「SMA期間」という項目を作り、その値を`smaLength`という名前の入れ物に保存します。
4行目を変更:`plot(ta.sma(close, smaLength))` 最後の行の、数字の`20`だった部分を、先ほど作成した入れ物の名前`smaLength`に置き換えます。
これで、あなたのインジケ-タ-は、設定画面の数値を見て計算するようになります。
実践②:計算に使う価格(終値など)を選択式にする
期間だけでなく、計算に使う価格データそのものを、設定画面から選べるようにしてみましょう。これには`input.source()`という命令を使います。先ほど4行に改造したコードの、3行目と4行目の間に、以下の新しい行を追加してください。
`priceSource = input.source(close, title=”ソース”)` これは、「ソース」という名前で、計算に使う価格(初期値は終値`close`)を選ぶためのドロップダウンメニューを設定画面に作る、という命令です。
そして、最後の`plot`の行を、`plot(ta.sma(priceSource, smaLength))` のように書き換えます。`close`だった部分を、新しく作った変数`priceSource`に置き換えるのです。
これで、期間と価格ソースの両方を、コードを触らずに変更できる、より本格的なインジケーターが完成します。
その他の便利なinputの種類
数値や価格ソースの入力以外にも、`input`関数には便利な種類があります。①チェックボックスを作る(`input.bool()`):オンとオフを切り替えるチェックボックスを追加します。例えば、「移動平均線の表示・非表示」を切り替えるスイッチとして利用できます。
②カラーピッカーを作る(`input.color()`):線の色を設定画面から自由に変更できる、色の選択機能を追加します。`input.int`(整数)、`input.source`(価格)、`input.bool`(真偽)、`input.color`(色)。
これらの`input`関数を組み合わせることで、あなたは、まるでTradingViewに標準で備わっているインジケーターのような、多機能で使いやすいオリジナルツールを開発することができるのです。これが、Pineスクリプトの応用への入り口となります。
行動へのステップ
1.TradingViewのPineエディタを開き、入門編で作成した単純移動平均線のコードを表示させましょう。
2.plot()関数の前に、`smaLength = input.int(20, title=”SMA期間”)` という行を追加しましょう。
3.plot()関数の中にある、ハードコーディングされた数字の「20」を、作成した変数名「smaLength」に書き換えましょう。
4.スクリプトを「チャートに追加」し、チャート左上のインジケーター名の横にある歯車マークをクリックしてみましょう。
5.表示された設定画面で数値を変更すると、チャート上の線が変化することを確認しましょう。



















