TradingViewに搭載されているPineスクリプトを詳しく解説!

tradingview

プログラムは難しい。そういうイメージをお持ちの方も多いかと思います。たしかに難しい部分もあります。しかしこのTradingViewのプログラミング言語「Pine」はそこまで難しくありません。

この記事では、プログラミングをしたことがない人に向けて丁寧に解説していきます。一行一行に意味があります。ぜひ自分が作りたいインジケーターやストラテジーをPineスクリプトで作ってみてください。

今まで作ってきた中から解説!

いくつかPineスクリプトを作りました。

その中から「マルチタイムフレーム平均足バー」のスクリプトを解説します。

マルチタイムフレーム平均足バー

一行ずつ解説していきます!

たった数行でスクリプトが書けてしまいます。上から順番に見ていきましょう。

マルチタイムフレーム平均足バーのスクリプト解説

1行目 //@version=3

このプログラムはPineスクリプトのバージョン3で作っていることを示しています。最新のバージョンはバージョン4です。なので//@version=4としても構いません。この一文は忘れないようにしましょう。

2行目 study("MTF Heikinashi Bar" , overlay=false)

studyでインジケーターの名前やどんなインジかを指定します。

この場合は、""で囲った部分、「MTF Heikinashi Bar」にしています。title="MTF Heikinashi Bar"としてもいいです。

次に例えばshorttitle="MTF Heikinashi Bar"と入力してもいいのですが、省略しています。

overlay=falseにしています。サブウィンドウ(下に表示するインジ)なのでfalseとなります。デフォルトもfalseなので省略してもいいです。メインチャートに表示するのであればtrueとなります。

 

リファレンス

study(title, shorttitle, overlay, format, precision, scale, max_bars_back, resolution) → void

【例】
study(title='MyScriptStudy')
study(title="MyScriptStudy", shorttitle="MSS", precision=6, overlay=true)

【引数】
title (const string) インジケーターウィジェットに表示される研究タイトル。 引数は必須です。
shorttitle (const string) 過去チャートに表示される短い研究タイトル。引数は追加です。
overlay (const bool) もしtrueの場合は研究は主な形式のオーバーレイとして追加されます。 もしfalseの場合は、別のチャートペインに追加されます。 デフォルトはfalseです。

4行目 mtf = input(title="MTF", type=resolution, defval="1D")

inputでユーザーが入力した値を設定できるようになります。入力した値というのは上位足のタイムフレームです。そして入力した値を「mtf」に入れています。

入力項目のタイトルはMTFです。そしてtype=resolutionとしています。defval="1D"でデフォルトの値を日足にしています。

 

リファレンス

input(defval, title, type, minval, maxval, confirm, step, options) → input integer

【例】
i = input(title="Offset", type=input.integer, defval=7, minval=-10, maxval=10)
plot(offset(close, i))

【引数】
defval (Depends on 'type' argument) 入力変数のデフォルト値。スクリプトによって実際に使用される入力値は、オブジェクトの書式設定ダイアログでユーザーが設定することに注意してください。
title (const string) 入力の表題
type (const string) Inputの種類。可能な値は input.bool, input.integer, input.float, input.string, input.symbol, input.resolution, input.session, input.sourceです。

6行目、7行目 
heikin_open = security(heikinashi(tickerid), mtf, open)
heikin_close = security(heikinashi(tickerid), mtf, close)

平均足の初値(heikin_open)と平均足の終値(heikin_close)2つを求めています。

まずheikinashi(tickerid)で、現在の通貨ペアに対して、平均足の値ですよという識別子を作ります。それと先ほどのマルチタイムフレームの値mtfと、openなので初値での値ということをsecurityの中に入れています。こうすることで、平均足の値を自動的に求めてくれます。securityは要求した値を導き出してくれる便利な関数です。

 

リファレンス

security(symbol, resolution, expression, gaps, lookahead) → series[float]

【引数】
symbol (string) シンボル。
resolution (string) 時間足。
expression (series[color]) security の呼び出しで式を計算し返す事ができます。系列または系列にキャストできる要素を含むタプルが可能です。

9行目、10行目 
p = plot(0, color=gray , editable=false)
p1 = plot(1, color=gray ,editable=false)

plotはチャートに表示するためにあるのですが、この場合はバーを表示するための準備段階です。

ヒストグラムで0と1の間しか表示しないので、まずplotの中で、0を指定します。色は何でもいいです。そしてeditable=falseとして編集をできなくします。これを二つ作ります。要は0と1に水平線を引くような感じです。

 

リファレンス

チャート上に一連のデータを描写します。

plot(series, title, color, linewidth, style, trackprice, transp, histbase, offset, join, editable, show_last, display) → plot

【引数】
series (series) 描写されるデータ形式。 必須の引数。
color (color) plotの色。'color=color.red''color=#ff001a' といった定数や 'color = close >= open ? editable (const bool) trueの場合、描写されたスタイルはフォーマットダイアログで編集可能です。 デフォルトはtrueです。

12行目、13行目 
fill(p, p1 ,color = heikin_open <= heikin_close ? green : red , title="Heikin color" ,transp=50)

fillは2つの描写した間を色で塗りつぶす関数です。

最初に先ほど作ったpとp1を入れます。次にどの色を塗りつぶすかですが、条件に合ったときに塗りつぶします。

color = heikin_open <= heikin_close ? green : red
終値が初値より大きいときは緑色、終値が初値より小さいときは赤色と指定しています。

このバーの名前を「Heikin color」とし、transp=50とすることで半透明にしています。

 

リファレンス

2つのプロットまたはラインの間の背景を指定された色で塗りつぶす。

fill(plot1, plot2, color, transp, title, editable, show_last) → void

【引数】
plot1 (plot) 最初の描写オブジェクト。 必須の引数。
plot2 (plot) 2番目の描写オブジェクト。 必須の引数。
color (color) plotの色。'color=color.red''color=#ff001a' といった定数や 'color = close >= open ? color.green : color.red' の様な複雑な式を利用できます。オプション引数。
transp (input integer) 塗りつぶされた背景の透明度。 可能な値は0(透明ではない)から100(不可視)までです。 追加の引数。

 

どうすればもっと作れるようになるのか?

もっと作れるようになる方法、それは他人が作ったものを真似るです。TradingViewでは多くのスクリプトが公開されています。中には非公開のものもありますが、それもごく一部です。

新規作成から他のスクリプトを見ることができる

基本となるインジケーターのスクリプトは公開されてますので、順番に表示させては変更して試してみる。そうすることで徐々に分かってきます。いろいろと試してみてください。

TradingView 公式サイト

タイトルとURLをコピーしました