Pineスクリプト(Pine Script)入門 - 種類や関数などを初心者向けに詳しく解説
1.Pineスクリプトとは?
・TradingViewのプログラミング言語
TradingViewのチャート上で動作するインジケーターやストラテジー(トレードロジック)を作成することができるプログラミング言語です。
プログラミング言語というと難しいように感じますが、Pineスクリプトは比較的少ない手順で作ることができます。
この記事を通して、未経験の方でもインジケーターの作成からストラテジーの作成までできることを目指しています。
後の方の章では各ソースコードをコピペ+少しの修正で、インジケーターやストラテジーが組み上がる構成となっていますので是非、チャレンジしてみて下さい。
・Pineスクリプトでできること
Pineエディタ
チャートの下にスクリプトコードのエディタがあります。
これはTradingViewの標準機能で、コードを書き易しくしてくれる便利な機能が沢山あります。
ハイライト機能
あらかじめ組み込まれてる関数や変数を分かり易く色分け強調をしてくれます。
追加情報の表示機能(ポップアップウィンドウ)
Pineスクリプトに組み込まれた関数などにカーソルを合わせると、追加の情報が表示されます。
ここでは、関数の使い方、変数の種類などを簡潔に表示してくれます。
リファレンスマニュアルをみなくても使い方を知ることができるので便利です。
インジケーターやストラテジーの保存機能
ご自分で作成したインジケーターやストラテジーを保存することができます。
データの保存はTradingViewの、ご自分のアカウント内に保存されます。
つまりTradingViewにログインできる環境さえあれば、何処からでも作成、編集できるという強みがあります。
スクリプトの投稿機能
TradingViewには、作成したスクリプトを投稿する機能があります。
ご自身の目的に応じて、URLを知っている人だけが見られる「プライベートでの投稿」と、TradingViewコミュニティ参加者全員が見られる「公開ライブラリへの投稿」が可能です。
※無料(Basicプラン)のアカウントでは、登録から3ヶ月間はスクリプトの公開はできません。また、公開できるのは月2回までとなっています。
またTradingViewで投稿したスクリプトは消えることなく、ずっとTradingViewに保存されています。
そのため、お気に入りのインジケーターが消えてしまったということが、起きにくいシステムとなっているのも魅力の一つです。
自分が投稿したスクリプトは上部メニューの「コミュニティ」から簡単に見つけることができますので、参考にして下さい。
2.Pineスクリプトの種類は3つ
・インジケーターを作成する宣言:indicator()
インジケーターとは、チャート内に表示されるラインやシグナルなどのことです。
Pineスクリプトを使うと、下の画像にあるような移動平均線から派生したインジケーターや、トレードの参考になるシグナルなどを、自由自在に作ることができます。
よく使用される組み込み関数(後述)も用意されていますので、簡単に組み込むことができるものも多くあります。
実際にインジケーターのスクリプトを作成する際は、右下の「開く」から「新規インジケーター」を選びます。
次にインジケーターであることを宣言する「indicator()」を記述し、作成していきます。
※旧バージョンのPineスクリプトv4では、宣言するステートメントは「indicator()」ではなく「study()」です。
・ストラテジーを作成する宣言:strategy()
ストラテジーとは、表示中のチャート上でさまざまな売買戦略に基づいてトレードのシミュレーションを行えるプログラムのことです。
過去の売買の結果検証(バックテスト)を通じて、自分の考えたトレード戦略がどのようなときに強いのか、弱いのかなどを知ることができます。
ストラテジーを使うと、下の画像のように、どのような資産推移になるかビジュアル的に見て分析することができます。
実際にストラテジーのスクリプトを作成する際は、右下の「開く」から「新規ストラテジー」を選びます。
次にストラテジーであることを宣言する「strategy()」が記述されていることを確認し、作成していきます。
・ライブラリを作成する宣言:library()
ライブラリとは、他のスクリプトの中で使える関数やコードをまとめたもののことです。
これをうまく利用することで、複雑なインジケーターやストラテジーも効率良く作成できるようになります。
初心者向けではありませんが、スクリプトの作成に慣れてきたら便利なライブラリ作成にも取り組んでみてください。
ライブラリを作成する際は、右下の「開く」から「新規ライブラリ」を選びます。
次にストラテジーであることを宣言する「library()」が記述されていることを確認し、作成していきます。
3.Pineスクリプトの関数とは?
・「関数」とは何か
プログラミングでよく出てくる関数と言う言葉があります。
一番分かり易い日本語に置き換えると「○○をしてくれる機能」のことです。
何かを入力すると別の何かに変換してくれる機能のことです。
上図の例はシンプルな例ですが、複雑な計算や処理をひとまとめにして、関数として作ることができます。
またプログラムを書く上で、引数と言う言葉も沢山出てきます。
引数は、上図の5や3のことで、関数に渡す(入力する)値です。
引数を渡してあげることで、15の結果を得ることができます。
この結果15はプログラミングでは戻り値と呼ばれます。
Pineスクリプトには、予めよく使われる操作を組み込み関数として準備してくれています。
これらを上手く使うと、簡単でシンプルにスクリプトを書くことができます。
・ビルトイン関数(組み込み関数)について
ビルトイン関数とは、予めPineスクリプトで用意されている関数です。
トレードを扱うスクリプトで特に便利なのは、様々な指標を幾つかの引数を入力するだけで、計算してくれるものたちです。
例:指数平滑移動平均線を計算しようとすると、以下の様な計算が必要です。
(直近の動きに追従し易い移動平均線)
この程度なら、全てスクリプトを記述しても良いかも知れませんが、平均したい期間が100日、200日の平均となると大変です。
そこでビルトイン関数を使用します。
指数平滑移動平均線用にPineスクリプトで用意されているビルトイン関数は、ta.emaです。
これを使って記述すると
指数平滑移動平均線 = ta.ema(価格, 平均期間※)
※3日平均であれば3を入力
この1行で済んでしまいます。
このようなビルトイン関数が指標以外にも、画面の表示機能などにも用意されていますので、上手く活用することで、効率的にミスを減らしながらスクリプトを書くことができます。
下図は一例ですが、2つの値のクロスも3種類用意されていて、他にも様々なビルトイン関数が用意されていますので、これを駆使することで、簡潔で信頼性の高いスクリプトを書くことができます。
ビルトイン関数名 | 戻り値 |
---|---|
ta.sma(s, length) | sの期間lengthの単純移動平均値 |
ta.ema(s, length) | sの期間lengthの指数平滑移動平均値 |
ta.cross(s1,s2) | s1,s2の系列が互いにクロスすると true |
ta.crossover(s1, s2) | s1がs2を上にクロスすると true |
ta.crossunder(s1, s2) | s1がs2を下にクロスすると true |
4.Pineスクリプトの変数とは?
・変数とは何か
変数はとても頻繁に登場しますので、しっかりとおさえておいてください。
プログラミングの変数は、数値や文字などの値を入れられる領域のことです。
「値を入れておく箱」と思って頂いて大丈夫です。
プログラミングでは、扱いたい値によって、予め入れる箱の種類を決めておく必要があります。
これを変数の型と言います。
型指定を間違えると極端な例ですが、水をボトルに入れるべきところを、カゴに入れると水はこぼれて使えなくなってしまいます。
正しく入れた変数は何度でも入っている値をみたり、別の値を入れたりすることができます。
必ず適切な箱(型)を用意するようにして下さい。
箱(型)が違っても入ることがありますが、中身が変わってしまうこともありますので注意が必要です。
・Pineスクリプト上での書き方まとめ
変数の型の種類
代表的なものを以下に示します。
変数の型 | 扱える値 | 例 |
---|---|---|
Int型 | 整数 | 123,-123 |
float型 | 小数 | 12.34, -12.34 |
string型 | 文字列 | あかさたな |
bool型 | 真偽値 | true,false |
変数を使うには
①箱の種類を決める = 変数の型を決める。
②箱に名前を付ける。 = 変数の名前を決める。
③箱に値を入れる。 = 変数の値を代入する。
3つです。
これを「変数を宣言する」と言います。
実際の例です。
int型の変数を使い、変数の名前は「i」と決めました。
そして、初期値として14を代入する処理をしています。
このような形で変数が使えます。
・ビルトイン変数について
ローソク足の始値、終値、高値、安値など頻繁に使うものは、予めビルトイン変数というもので用意されていて、手軽に使うことができます。
よく使うものでは下記です。
ビルトイン変数名 | 戻り値 |
---|---|
open | ローソク足の始値 |
close | ローソク足の終値 |
high | ローソク足の高値 |
low | ローソク足の安値 |
volume | 取引高 |
ビルトイン変数名をスクリプトに組み込むだけで、各値を参照することができます。
※ただし、予め用意されている変数名は、自分で同じ名前の変数を作ることはできません。
5. Pineスクリプトの演算子とは?
・演算子とは何か
大きくは算出演算、論理演算があり、スクリプトでロジックを書く際に必須となるものです。
①算術演算子
足し算、引き算、かけ算、割り算などを行うためのものです。
ここでは変数を以下のように定義した例です。
var1=6,var2=3,var3=5
算術演算子 | 使用例 | 実例 | |
---|---|---|---|
+(★) | 加算 | var1+var2 | 6+3=9 |
+=(★) | 加算 代入 |
var1+=var2 | 6+3が行われ、 var1に9が代入されます |
– | 減算 | var1+var2 | 6-3=3 |
-= | 減算 代入 |
var1-=var2 | 6-3が行われ、 var1に3が代入されます |
* | 乗算 | var1*var2 | 5×3=15 |
*= | 乗算 代入 |
var1*=var2 | 6x3が行われ、 var1に18が代入されます |
/ | 割り算 | var1/var2 | 6÷3=5 |
/= | 割り算 代入 |
var1/=var2 | 6÷3が行われ、 var1に2が代入されます |
% | 割り算の 余り |
var1%var3 | 6/5=1.2が行われ 余り0.2が戻り値となります |
%= | 割り算の 余りの代入 |
var1%=var3 | var1に余り0.2が 代入されます |
(★)印の2つは、文字列にも使用できます。
②論理演算
論理演算は、論理演算子と比較演算子の2つがあります。
論理演算子様々な条件判定をするのに用います。
ここでは変数A,Bは論理値である必要があります。
つまり、bool型での宣言が必要です。
倫理演算子 | 使用例 | 実例 |
---|---|---|
and | A and B | AもBも真ならば、 真が返されます |
or | A or B | AとBどちらかが真ならば、 真が返されます |
not | not A | Aが偽ならば、 真が返されます |
if | if A | Aが真のときに、 その後に続く処理を実行することが できます。 |
比較演算子
同様に様々な条件判定をするのに用います。
比較演算子 | 使用例 | 実例 |
---|---|---|
< | A<B | AがB未満のときに、 真が返されます |
<= | A<=B | AがB以下のときに、 真が返されます |
> | A>B | AがBより大きいときに、 真が返されます |
>= | A>=B | AがB以上のときに、 真が返されます |
== | A==B | AとBが等しいときに、 真が返されます |
!= | A!=B | AとBが異なるときに、 真が返されます |
算術演算子、論理演算子、比較演算子について説明してきましたが、これらを組み合わせてトレードロジックの中核を書くことができます。
続いて、Pineスクリプトのv4とv5の違いを紹介した後、作成例や書き方などに進んでいきます。
>PineスクリプトのVersion4とVersion5の違い
Pine Script(Pineスクリプト)をさらに学びたい方へオススメのコンテンツ
OANDA証券では、TradingViewのプログラミング言語である「Pine Script(Pineスクリプト)」に関する記事を豊富に提供しています。
プログラミング初心者の方でも、インジケーターやストラテジーの作成ができるよう、ソースコードをコピペ+少しの修正で組み上がる構成としています。
またOANDA証券とTradingViewのアカウントを連携させることで、「Tradingview」から直接トレードすることが可能です。
ぜひOANDA証券での口座開設をご検討下さい。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。