Pineスクリプト(Pine Script)のVersion4とVersion5の違い
Pineスクリプト(Pine Script)もバージョンを重ねるごとにさらに使いやすく、便利な機能が増えています。
これまでは、書きにくい、予め使える指標がもっとあれば良いのにと感じていた部分もどんどん改善されています。
Version4で作成された資産とも言える多くのPineスクリプトがありますので、Version4のスクリプトを活用しながら、Version5の新しい機能を使ってより効率的にスクリプトの作成を進めていただけたらと思います。
それでは、新しくなったVersion5の説明を順にいたします。
1.コード記述の変更点
最初にインジケーターなのかストラテジーなのか宣言する部分が変わりました。
Pineスクリプトでインジケーターを作るときに、先頭で関数宣言をする必要がありますが、Version4ではstudy(~)と書きましたが、Version5ではindicator(~)になりました。
間違えにくい表現になりました。
study(~)で使用出来た引数は、indicator(~)に全て継承されています。
Version4→5への書き換え時はこの部分は関数名の変更だけで動きます。
種類 | Version4 | Version5 |
---|---|---|
インジケーター | study(~) | indicator(~) |
ストラテジー | strategy(~) | strategy(~) |
2.名前空間の追加
同じ種類の関数の先頭に同じ文字が付加されるようになりました。
ソースコードとしては統一感が出ますので、ソースコードを後から見返した際に可読性が上がると思います。
2-1.テクニカル分析を行う関数 ta.
ここでは、よく使われるものを挙げます。
テクニカル分析関数 | Version4 | Version5 |
---|---|---|
SMA | sma() | ta.sma() |
EMA | sma() | ta.ema() |
Cross | cross() | ta.cross() |
Crossover | crossover() | ta.crossover() |
Crossunder | crossunder() | ta.crossunder() |
MACD | macd() | ta.macd() |
Bollinger bands | bb() | ta.bb() |
Stochastic | stoch() | ta.stoch() |
RSI | rsi() | ta.rsi() |
ATR | atr() | ta.atr() |
Supertrend | supertrend() | ta.supertrend() |
など | … | … |
2-2.数学に関する関数 math.
ここでも、よく使われるものを挙げます。
数学関数 | Version4 | Version5 |
---|---|---|
絶対値 | abs(number) | math.abs(number) |
コサイン | cos(number) | math.cos(number) |
サイン | sin(number) | math.sin(number) |
タンジェント | tan(number) | math.tan(number) |
平均値 | avg() | math.avg() |
最大値 | max() | math.max() |
最小値 | min() | math.min() |
など | … | … |
2-3.足の種類 ticker.
数学関数 | Version4 | Version5 |
---|---|---|
平均足 | heikinashi() | ticker.heikinashi() |
カギ足 | kagi() | ticker.kagi() |
新値足 | linebreak() | ticker.linebreak() |
ポイント&フィギュア値 | pointfigure() | ticker.pointfigure() |
練行値 | renko() | ticker.renko() |
など | … | … |
2-4.文字列に関する関数 str.
文字列関数 | Version4 | Version5 |
---|---|---|
引数の文字列表現 | tostring(x, y) | str.tostring(value, format) |
数字を文字列に変換 | tonumber(x) | str.tonumber(string) |
2-5.外部データの取得 request.
外部データ取得関数 | Version4 | Version5 |
---|---|---|
シンボルの財務系データ | financial() | request.financial() |
シンボルのデータ | quandl() | request.quandl() |
別のシンボル/時間足 | security(… , resolution, …) | request.security( … , timeframe, …) |
など | … | … |
3.関数や変数名に使用できない単語
あらかじめ、Pineスクリプトで役割が決められている単語があります。
これらは予約語とよばれ、関数名や変数名に使用できません。
Version5では以下の予約語がありますので、使わないようにして下さい。
- catch
- class
- do
- ellipse
- in
- is
- polygon
- range
- return
- struct
- text
- throw
- try
4.新たな機能インポートできるライブラリ機能の追加
これはとても便利な機能で、Pineスクリプトでできることが増える、とても魅力的なものです。
「ライブラリ」とは、色々な機能を持った関数群をパッケージにしたもので、それをインポート(取り込み)することができます。
以下はTradingViewで公開されているライブラリの一例です。
例えば、ZigZagの波の角度を使って相場の勢いを分析したいとします。
このときに、図のように「A点の日時と価格」、「B点の日時と価格」を使って、三角関数を使って計算する必要があります。
それをスクリプトで書くとなると、以下のようなコードを書く必要があります。
でも、この角度を計算するライブラリが公開されていますので、ライブラリをインポートすることで、スクリプトにはこの1行で計算できるようになります。
- x1: A点の日時
- x2: B点の日時
- y1: A点の価格
- y2: B点の価格
公開されているライブラリを使うこともできますし、ご自分で作成されたオリジナルの関数をライブラリにまとめて使うこともできます。
簡単に表現すると、ブロックを組み合わせるようなイメージでスクリプトを書くことができて効率的になります。
また動作確認を済ませたライブラリを使うことでスクリプトの信頼性を上げることにも役立ちます。
5.ユーザー定義関数にデフォルト値が設定可能
これまで自作関数に引数のデフォルト値は指定できませんでした。
今回からデフォルト値が設定できるため、引数を省略することもできて自由度の高いスクリプトが書けるようになりました。
6.switch構文が追加
Pineスクリプトでもswitch構文が使えるようになりました。
switchはif文を改良したものです。
複数の分岐が必要になる場合にif,elseを組み合わせたものよりも分かりやすく書くことができます。
また可読性が良くなるためミスの防止に役立ちます。
例:
入力値ma_typeが
「SMA」の時はta.sma関数を選択させたい、
「EMA」の時はta.ema関数を選択させたい、
「RMA」の時はta.rma関数を選択させたい場面があったとします。
このときは、以下のように書くことで、目的の結果を得ることができます。
result = switch ma_type
"EMA" => ta.ema(close, length)
"SMA" => ta.sma(close, length)
"RMA" => ta.rma(close, length)
=> 0
入力値の該当がない場合は0が返ります。
7.while構文が追加
繰り返し処理に便利なwhileループが使えるようになりました。
whileはfor文に似た動きをします。
「条件を満たしている間ずっと繰り返す」動作をします。
このため、予め繰り返す回数が決まっていない場合に便利です。
また途中でbreakを使うことで中断することもできます。
8.Version4→Version5に自動変換
TradingViewではVersion4から5へ自動で変換してくれる機能があります。
これまでのVersion4のスクリプトを自動変換し、それをともにVersion5で追加になった新しい機能を使って、オリジナルのインジケーターやストラテジーを作成するのも良いと思います。
(下図)
ここまで、Version4とVersion5の違いを説明いたしましたが、この後の記事でも躓きやすい部分などは説明を加えながら、機能の紹介やスクリプトの作成方法について説明していきます。
Pine Script(Pineスクリプト)をさらに学びたい方へオススメのコンテンツ
OANDA証券では、TradingViewのプログラミング言語である「Pine Script(Pineスクリプト)」に関する記事を豊富に提供しています。
プログラミング初心者の方でも、インジケーターやストラテジーの作成ができるよう、ソースコードをコピペ+少しの修正で組み上がる構成としています。
またOANDA証券とTradingViewのアカウントを連携させることで、「Tradingview」から直接トレードすることが可能です。
ぜひOANDA証券での口座開設をご検討下さい。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。