TradingViewのインジケーターやストラテジーをPineScriptで自作している時に、「ここの値は色々変えて検証してみたいな」とか「状況に応じて値を変えられるようにしたいな」と思った事はありませんか?
例えば移動平均の日数とか、利確や損切の%値とか。
PineScriptのinput命令を使うと、自作のインジケーターやストラテジーに独自の入力パラメータを追加することができます。
input命令をマスターすれば、より汎用的なインジケーター(ストラテジー)が作成可能になりますので、本記事ではその仕組みについて簡単に解説します。
インジケーターやストラテジーの「パラメーター」とは?
TradingViewのインジケーターやストラテジーは、チャートに追加した後に「設定」アイコンをクリックすると様々な設定ができます。その中に「パラメーター」というタブがあり、様々な設定が可能です。(項目はインジケーターやストラテジーごとに異なります)
たとえばTradingViewに標準搭載されている「単純移動平均線(SMA)」のパラメータは、こんな感じ。(久しぶりに見たら色々増えてる・・)
様々な項目がパラメータ―として用意されていることで、色んな用途で使えるインジケーターになっています。
PineScriptではどう書くの?
上のパラメーターは、項目ごとにPineScriptで1行書くだけで簡単に追加できます。
具体的にはコード内で以下のように、左辺に変数を、右辺にinput.XXXと書くと、自動的にそのインジケーター(ストラテジー)のパラメータ設定画面に入力項目が反映されます。
in_period = input.int(5, title="移動平均線 長さ")
といった感じで書けば、以下のようになります。
上の例は「input.int」なので、整数型(int)となります。他にも様々な種類が用意されていて、種類に応じて入力式になったりチェックボックス式になったりと、自動的に項目の形式も変わります。
そしてインジケーター(ストラテジー)を利用する人がこの設定画面で項目を指定すると、コードで左辺に書いた変数にその内容が入った状態でコードが実行されます。
つまり上の例でいえば「5」に設定されているので、コード上では「in_period」が「5」として実行されるわけです。例えば移動平均線を計算するコードを以下のように書けば、5日移動平均線が描画されることになります。
plot(ta.sma(close, in_period), color=color.green)
利用者が「移動平均線 長さ」を「25」に設定すれば、同じコードのままで25日移動平均線が描画される・・というわけですね。
自作インジケーター(ストラテジー)にパラメーターを用意するメリット
自作のインジケーターやストラテジーはコードを自分で自由に変えられるので、わざわざパラメーターを用意しなくても良いんじゃないか?と思われる方もしれません。
ここでは僕が実際に使っていて感じているメリットを3つ挙げてみます。
異なるチャートで併用できる
チャートを複数枚並べて使っていたり、複数のチャートレイアウトを使っている方も多いかと思います。
例えば日足チャートでは25日移動平均線を出したいけれど、15分足チャートでは13足指数平滑移動平均線を出したい・・といった場合。
移動平均線の計算日数(足数)や計算方式(SMA/EMA)をパラメーター化しておくと、同じプログラムをどちらのチャートにも追加してパラメータだけ変えることで実現できます。
バックテスト検証時に便利
これはストラテジー限定の話ですが、「ストラテジーテスター」の画面を表示した状態でもストラテジーのパラメータを変更することができます。
さらに、変更すると「ストラテジーテスター」の内容も自動更新されるので、パラメータ―を色々変えながら検証してみることが可能です。(これ結構便利)
配布しやすいインジケーター(ストラテジー)が作れる
自作したインジケーターやストラテジーを配布したい場合、自分が使うだけの場合よりも多様な利用の仕方が考えられます。
こういった時もパラメーターで色々変更可能にしておくことで、より汎用的なプログラムとして配布できるようになります。
僕も以下のような「移動平均線3本が表示できるインジケーター」を無料配布していますが、パラメーターで移動平均線の計算日数やEMA対応などが可能になっているため、おかげさまで多くの方にご利用いただいております。
おわりに
以上、PineScriptのinput命令を使ってインジケーターやストラテジーに独自のパラメータを追加する基本手順を解説しました。
具体的にどのような種類の項目が追加できるのかについては、また別の記事でまとめたいと思います。(v5以降からかなり種類が増えたので面白いです)