TradingView:Pineスクリプトv4 がリリース! Line(直線)とLabel(文字や図形)が自由自在に!

Posted on June 30th, 2019Updated on July 9th, 2019
TradingView:Pineスクリプトv4 がリリース! Line(直線)とLabel(文字や図形)が自由自在に!

※ この記事は最終更新日から5年以上が経過しています。

どんな記事

TradingViewのv4(バージョン4)がリリースされました。主な変更点はLine(直線)とLabel(文字や図形)が自由に設置できるようになったことです。これは、MT4に出来てTradingViewでは出来なかったことです。残る大きな違いは「自動売買ができるかどうか」くらいかもしれません。

自分の備忘録も兼ねて、少しまとめてみたいと思います!

Pineスクリプトv4の情報源

この記事を執筆している時点で、まだ日本では正式に公表されていません。現時点で確認できる情報源は英語のサイトがほとんどですね。

Pineスクリプトv4の変更点

Label(文字や図形)の描画

v3でもplotshape()という文字や図形を描画する関数はありました。しかし、この関数では位置や図形の大きさに制限が多く、限られた用途でしか使うことが出来ませんでした。

今回、新たに導入されたlabelという関数は、MT4のObjectのような自由度があります。この関数を使うことで、例えば大きな時間軸のローソク足を描画したり、好きなところに文字を出力したりということができるようになります。

例えば次のようなことができるようです。

Creating drawings

文字を出力する
//@version=4
study("My Script", overlay=true)
dt = time - time[1]
if barstate.islast
    label.new(time + 3*dt, close, xloc=xloc.bar_time)
好きな位置に配置することもできる
//@version=4
study("My Script", overlay=true)
label.new(bar_index, high, style=label.style_none,
          text="x=" + tostring(bar_index) + "\ny=" + tostring(high))

引用元: Pine Script v4 documentation: Essential features > Drawings

labelのスタイルは以下で確認できます。(以下のスクショは一部です)

様々なlabelスタイル

Line(直線)の描画

v3では、plot()を使って間をnaで空けたり、角度を計算して直線を描くしかありませんでした。やはり自由度が少なく、何本も直線を引くような処理には向きませんでした。v4は、MT4のようにプログラムで自由に直線が引けるようになっています。

Linear Regression

drawings linear regression
//@version=4
study("Linear Regression", overlay=true)
src = input(close)
len = input(50)

calcSlope(src, len0) =>
    if not barstate.islast
        [float(na), float(na), float(na)]
    else
        sumX = 0.0
        sumY = 0.0
        sumXSqr = 0.0
        sumXY = 0.0
        for i = 0 to len - 1
            val = src[i]
            per = i + 1.0
            sumX := sumX + per
            sumY := sumY + val
            sumXSqr := sumXSqr + per * per
            sumXY := sumXY + val * per
        slope = (len * sumXY - sumX * sumY) / (len * sumXSqr - sumX * sumX)
        average = sumY / len
        intercept = average - slope * sumX / len + slope
        [slope, average, intercept]

[s, a, i] = calcSlope(src, len)

startPrice = i + s * (len - 1)
endPrice = i
var line baseLine = na
if na(baseLine)
    baseLine := line.new(bar_index - len + 1, startPrice, bar_index, endPrice, width=4, extend=extend.right)
else
    line.set_xy1(baseLine, bar_index - len + 1, startPrice)
    line.set_xy2(baseLine, bar_index, endPrice)
    na

引用元: Pine Script v4 documentation: Essential features > Drawings

lineのスタイルは以下で確認できます。(以下のスクショは一部です)

様々なlineスタイル

文字列のシリーズに対応

これは今まで変数に格納できるのが数字(intやfloat)だけだったのに対して、文字列も格納できるようになったということですね。

具体的には、v4から次のようなコードが動くようになったようです。

Series String

We now support variables of a series string data type. Here is an example of using series strings in labels:

//@version=4
study("Series string", overlay = true)
draw_label(title) =>
    label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)

引用元: TradingView Blog: Introducing Pine Script v4! > Series String

Var での変数の宣言

これはコードで比較するとわかりやすいと思います。

例えばv3で次のようなコードを書いたとします。

//@version=3
study("My Script")
s = 0.0
s := close >= open ? s + 1 : s[1]
plot(s)

これが、v4ではVarを使って、次のように書くことができます。

//@version=4
study("My Script")
var s = 0.0
if close >= open
    s := s + 1
plot(s)

個人的には行数が少なくて済むのでv3での書き方が好きですが、条件分岐が複雑な場合はv4のものの方が書きやすそうかなと思います。

一部のビルトイン変数名の変更

これは単純に変数名が変更になっただけです。v3のコードをv4で動かすときに一番影響がでるのはこの点かもしれません。

  1. カラーコード:redcolor.red
  2. color.new(color.red, 50)でカラーコードの透明度を調整
  3. inputタイプ:integerinput.integer
  4. plotスタイル:histogramplot.style_histogram
  5. hlineスタイル:dottedhline.style_dotted
  6. 曜日:sundaydayofweek.sunday
  7. timeframe系:period, isintradaytimeframe.period, timeframe.isintraday
  8. intervaltimeframe.multiplier
  9. ticker, tickeridsyminfo.ticker, syminfo.tickerid
  10. nbar_index

変数の型を明示的に宣言

この変更はちょっとだけうれしかったりします。

これもコードを見るのが早いと思うのですが、次のようにfloatで変数の型を明示する書き方ができるようになりました。

//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
    high
else
    low
plot(a)

今まではa = 0.0とかa = closeとかで誤魔化して書いていたので、頭の値がいらない箇所をnaとできるようになるとちょっとスッキリします。

Pineスクリプトv4の活用例

[RS]ZigZag Percent Reversal - Forecast - patterns - labels

[RS]ZigZag Percent Reversal - Forecast - patterns - labels

[RS]Volume Bars

[RS]Volume Bars

[RS]Profiler

[RS]Profiler

Trendlines - JD

Trendlines - JD

Pivot Points Standard

Pivot Points Standard

開発を承っています

  • Pineスクリプト(インジケーターやストラテジー)
  • Google Apps Script
  • Python
  • MQL4

などの開発を承っています。とくに投資関連が得意です。過去の事例は「実績ページ(不定期更新)」でご確認ください。ご相談は「お問い合わせ」からお願いします。

yuya takahashi

タカハシ / 11年目の兼業投資家

投資やプログラミング、動画コンテンツの撮影・制作・編集などが得意。更新のお知らせは、LINE、メールで行っています。

このブログと筆者についてご質問はこちら

  • 記事をシェア
© Investment Tech Hack 2023.