Pine Scriptとは|インジケーターを自作する前に見ること

TradingViewでインジケーターを自作したいと思った時、最初に出てくるのがPine Scriptです。ただ、名前だけを見ると、MT4のMQL4やMT5のMQL5と同じように扱える言語なのか、TradingViewの画面内だけで使うものなのかが分かりにくいところがあります。

Pine Scriptを見る時は、コードの書き方だけでなく、TradingView上で動くこと、インジケーター・ストラテジー・ライブラリの種類があること、バーごとに実行されること、アラートは別途作成が必要になることを先に分けておくと迷いにくくなります。

先に短く言うと
  • Pine ScriptはTradingViewのプログラミング言語で、TradingView上のインジケーターやストラテジーを作る時に使います。
  • TradingView公式ドキュメントでは、Pine ScriptはTradingViewのサーバー上で動くツールを作るための言語として説明されています。
  • すべてのPineスクリプトには、indicator()strategy()library() のいずれかの宣言が必要です。
  • MT4のMQL4やMT5のMQL5とは、動く場所、ファイルの扱い、注文シミュレーションやアラートの考え方が違います。

Pine ScriptはTradingView上で使う言語

TradingView公式ドキュメントでは、Pine ScriptはTradingViewのプログラミング言語であり、自分用の取引ツールを作り、TradingViewのサーバー上で動かせるものとして説明されています。用途としては、インジケーターやストラテジーの開発が中心です。

ここで大切なのは、Pine Scriptを「MT4やMT5へ入れるファイル」として見ないことです。MT4ではMQL4、MT5ではMQL5、TradingViewではPine Scriptというように、使う場所が違います。似たような移動平均線やサイン表示を作る場合でも、コードをそのまま流用できるとは限りません。

公式情報で見るPine Scriptの位置づけ

TradingView公式ドキュメントでは、Pine ScriptはTradingViewの軽量かつ強力な言語として設計され、インジケーターやストラテジーを作り、それらをバックテストできると説明されています。また、多くの組み込みインジケーターがPine Scriptで書かれていることにも触れています。

用途1 インジケーターを作る

チャート上に線、帯、条件表示、ラベル、図形などを出して、相場を見るための補助情報を表示します。

用途2 ストラテジーを書く

売買ルールを過去データ上でシミュレーションするためのスクリプトです。結果は判断材料の一つとして見ます。

用途3 ライブラリを使う

よく使う関数などを再利用するための仕組みです。インジケーターやストラテジーから呼び出して使います。

最初に見るのはindicator、strategy、libraryの違い

Pine Scriptの公式ドキュメントでは、すべてのPineスクリプトに宣言文が必要で、indicator()strategy()library() のいずれかを使うと説明されています。つまり、コードを書く前に「これは何のスクリプトなのか」を決める必要があります。

インジケーターを自作したいなら、最初は indicator() から見るのが自然です。ストラテジーは過去データ上で売買ルールをシミュレーションするためのもの、ライブラリは関数などを再利用するためのものとして分けます。

indicator() 表示やアラート向け

インジケーターとして宣言するための関数です。計算結果をチャートに表示したり、条件に応じてアラートイベントを用意したりする場面で見ます。

strategy() 過去データ上の検証向け

ストラテジーとして宣言するための関数です。仮想的な注文やバックテスト結果を見るための機能が関係します。

library() 再利用する関数向け

他のスクリプトで使い回す関数や構造をまとめるための宣言です。最初の自作インジでは主役になりにくいですが、後で効いてきます。

インジケーター自作前に見たい流れ

TradingView公式の「First indicator」では、Pine Editorを開き、新しいインジケーターを作成し、コードを保存して、Add to chartでチャートへ追加する流れが示されています。いきなり複雑なサインや複数時間足の処理を見るより、まずは小さな計算を表示するところから始める方が理解しやすくなります。

自作インジケーターは、見た目の完成度より先に、どの価格を使うのか、どの時間足で見るのか、過去バーと現在バーで計算がどう変わるのかを押さえる必要があります。Pine Scriptはバーごとに実行されるため、現在進行中のバーでは結果が動く場合があります。

1
Pine Editorを開く TradingViewのチャート下部にあるPine Editorから、コードを書く場所を開きます。
2
新しいIndicatorを作る 新規作成時にIndicatorを選び、indicator() 宣言のスクリプトとして作ります。
3
保存してチャートへ追加する コードを保存し、Add to chartでチャート上へ反映します。設定画面で入力値を変えられるようにする流れも後で見ます。

バーごとに実行される仕組みを見る

Pine Scriptの実行モデルは、イベント駆動で順番に処理される仕組みです。公式ドキュメントでは、スクリプトはデータセットの各バーで繰り返し実行され、バーごとに計算や表示を行うと説明されています。

この仕組みは、インジケーターの見え方に直結します。確定済みの過去バーでは結果が固定されて見えても、リアルタイムで動いているバーでは価格や出来高の更新に応じて計算結果が変わることがあります。リペイントやアラートの違和感を見る時にも、この前提が関係します。

実行タイミングで見ること
  • 過去バーで計算される値と、現在進行中のバーで動く値を分けて見る
  • openhighlowclosevolume などのデータをどこで使うかを見る
  • アラート条件がバー確定前に動くのか、バー確定後に見るのかを分ける
  • 表示が変わることと、コードが誤っていることをすぐ同一視しない

アラートはコードだけでは動かない

Pine Scriptでアラートを扱う時は、コードを書けばすぐ通知が作成されるわけではありません。TradingView公式ドキュメントでは、Pine Scriptのアラート関連コードはアラートイベントを用意するものであり、実際に動くアラートはチャートUI側でユーザーが作成する必要があると説明されています。

また、アラート作成時にはスクリプト、入力値、チャートの銘柄と時間足などがTradingViewサーバー上に保存されます。そのため、あとからスクリプトや入力値を変えても、既に作成したアラートへ自動で反映されない場合があります。インジケーター自作前に、この点は必ず見ておきたいところです。

公式情報で見るアラートの注意点

TradingViewのPine Scriptドキュメントでは、alert()alertcondition() などはアラートイベントを作るためのもので、実際のアラートはユーザーがCreate Alert画面で作成すると説明されています。また、作成済みアラートはスクリプトや入力値のスナップショットを使うため、後から条件を変えた場合は作り直しが必要になることがあります。

MT4・MT5の自作インジと同じ感覚で見ない

MT4やMT5の自作インジケーターでは、MQL4やMQL5、EX4やEX5、データフォルダ、ナビゲーター表示などを見ることが多いです。一方、Pine ScriptはTradingView上のPine Editor、チャート、アラート、公開スクリプト、ストラテジーテスターと結びついて見ます。

そのため、MT4用のインジケーターファイルをTradingViewへ入れる、Pine ScriptをMT5のデータフォルダへ置く、といった使い方は前提が違います。似たロジックを別環境で再現したい場合は、コード変換ではなく、計算条件を読み直して別言語で書き直す発想が必要になります。

MT4 MQL4とファイル配置を見る

カスタムインジケーターでは、MQL4、EX4、データフォルダ、Navigator表示などが関係します。

MT5 MQL5とEX5を見る

MT5では、MQL5、EX5、MQL5/Indicators、MetaEditor、ストラテジーテスターなどを分けて見ます。

TradingView Pine Editorとチャートを見る

Pine ScriptはTradingView上で書き、保存し、チャートへ追加して動かすスクリプトとして見ます。

自作前に決めておきたいこと

インジケーターを自作する前に、まず「何を表示したいのか」を決めてください。サインを出したいのか、移動平均や高安値を見やすくしたいのか、時間帯や価格帯を色分けしたいのかで、必要なコードは変わります。

TradingViewのPine Scriptには、多くの組み込み変数や関数があります。公式ドキュメントでは、Pine Scriptには多数の組み込み変数・関数があり、言語リファレンスがコードを書く時の重要な資料になると説明されています。最初から全部を覚えるのではなく、必要な関数を公式リファレンスで引きながら進めるのが現実的です。

表示 何をチャートに出すか

線、色、ラベル、背景、条件表示など、まずは見せたいものを一つに絞ります。

条件 何をもとに判断するか

価格、出来高、移動平均、時間帯、過去バーなど、使うデータを先に分けます。

通知 アラートが必要か

表示だけでよいのか、アラートイベントも用意するのかを分けて考えます。

導入前メモ

Pine Scriptを見る前に、まずは「何を補助したいのか」を一つに絞ると、必要な関数や表示方法を探しやすくなります。

自作インジケーターは取引判断を補助する道具です。表示やアラートの便利さと、取引結果を混同しないようにしてください。

用語集であわせて見たい言葉

関連記事

まとめ

Pine Scriptは、TradingView上でインジケーターやストラテジーを作るための言語です。MT4のMQL4やMT5のMQL5とは、動く場所、保存のされ方、アラートや検証の扱いが違います。

インジケーターを自作する前には、indicator()strategy()library() の違い、バーごとの実行、リアルタイムバーで値が動く可能性、アラートはUI側で作る必要があることを先に見ておくと、つまずきにくくなります。まずは小さな表示から始め、公式ドキュメントで仕様を確認しながら進めてください。

参考文献