TradingView:インジケーターの Pineスクリプトサンプルまとめ

TradingView:インジケーターの Pineスクリプトサンプルまとめ

TradingView(トレーディングビュー)の Pineスクリプトでつくる「Study(インジケーター)」のよく使う組み合わせをまとめてみました(主に自分用)。どれもコピペで機能をつけ加えることができる簡単なものです。

今後も、新たに見つけたり思いついたものがあれば、ここに加えていく予定です!

TradingView:インジケーターの Pineスクリプトサンプルまとめ

  1. 条件に応じて色を変更する
  2. 2本のラインの間を塗りつぶす
  3. 複数のシグナルを表示する
  4. チャート以外の価格データを取得する
  5. 直近のデータだけ描画する
  6. チャートに直線を引く①
  7. チャートに直線を引く②
  8. 前々回の安値・高値更新を元にしたトレイリングストップ
  9. 数秘を算出する
  10. 変化率の対数を算出する
  11. 強弱の順位を算出する

1.条件に応じて背景色を変更する

Pineスクリプト

bool1 = input(true ,title="色分け")
condition = __YOUR_PROGRAM__
bgcolor(color
  = bool1==false ? na
  : condition==1 ? #64B5F6
  : condition==2 ? #2196F3
  : condition==3 ? #64B5F6
  : na
  ,transp=70 ,title="背景色")

目次へ

2.2本のラインの間を塗りつぶす

Pineスクリプト

p1 = plot(emaA ,color=red ,title="EMA A" ,style=line ,linewidth=2, transp=0)
p2 = plot(emaB ,color=blue ,title="EMA B" ,style=line ,linewidth=2, transp=0)

fill(p1 ,p2 ,color=emaA > emaB ? red : blue ,title="fill" ,transp=60)

目次へ

3.複数のシグナルを表示する

TradingView Pineスクリプト 複数のシグナルを表示する

Pineスクリプト

study("My Script" ,overlay=false)

a = ema(close ,5)
b = ema(close ,25)
c = ema(close ,50)

sig1 = cross(a ,b)
sig2 = cross(a ,c)
sig3 = cross(b ,c)

p1 = plot(4 ,color=black ,editable=false ,trackprice=false)
p2 = plot(3 ,color=black ,editable=false ,trackprice=false)
p3 = plot(2 ,color=black ,editable=false ,trackprice=false)
p4 = plot(1 ,color=black ,editable=false ,trackprice=false)

fill(p1 ,p2 ,color = sig1 ? red : gray ,title="sig1" ,transp=50)
fill(p2 ,p3 ,color = sig2 ? red : gray ,title="sig2" ,transp=50)
fill(p3 ,p4 ,color = sig3 ? red : gray ,title="sig3" ,transp=50)

目次へ

4.チャート以外の価格データを取得する

security()で、チャート以外の銘柄のデータを取得できる。security("usdjpy" ,"D" ,close)closeを、ema(close ,20)などと指定することもできる。以下のコードを複数記述すると、すべて取りにいってしまうのか重たくなる。要注意。

Pineスクリプト

currency = input("None" ,title="為替換算" ,options=["None" ,"USD" ,"EUR" ,"GBP" ,"AUD" ,"CAD" ,"CHF"])

sc1(currency) =>
     currency=="None" ? 1 :
     currency=="USD" ? security("usdjpy" ,"D" ,close) :
     currency=="EUR" ? security("eurjpy" ,"D" ,close) :
     currency=="GBP" ? security("gbpjpy" ,"D" ,close) :
     currency=="AUD" ? security("audjpy" ,"D" ,close) :
     currency=="CAD" ? security("cadjpy" ,"D" ,close) :
     currency=="CHF" ? security("chfjpy" ,"D" ,close) :
     na

value = close * sc1(currency)

目次へ

5.直近のデータだけ描画する

TradingView Pineスクリプト 直近のデータだけ描画する

Pineスクリプト

plotshape(close, show_last=7)

他にも、plotplotbarplotcharfillなどでもshow_lastを使うことができる。

目次へ

6.チャートに直線を引く①

TradingView Pineスクリプト チャートに直線を引く①

Pineスクリプト

isRegularFractal(mode) =>
    ret = mode == 1 ? high[4] < high[3] and high[3] < high[2] and high[2] > high[1] and high[1] > high[0] : mode == -1 ? low[4] > low[3] and low[3] > low[2] and low[2] < low[1] and low[1] < low[0] : false

topFractal = isRegularFractal(1) ? high[2] : isRegularFractal(-1) ? low[2] : na

plot(topFractal ,color=red ,offset=-2)

naが入ると、有効なデータの点と点を直線でつないでくれます。

目次へ

7.チャートに直線を引く②

TradingView Pineスクリプト チャートに直線を引く②

Pineスクリプト

shortl   = input(10)
longl    = input(100)
offset_f = input(2)
offset_b = input(20)

// タイムラインを作成しておく
timeline = 0
timeline:= nz(timeline[1]) + 1

// ボトムを探す
a = valuewhen(low==lowest(low ,shortl) ,low ,0)
b = valuewhen(low==lowest(low ,longl)  ,low ,0)
whena = valuewhen(low==lowest(low ,shortl) ,timeline ,0)
whenb = valuewhen(low==lowest(low ,longl)  ,timeline ,0)

m                 = (b-a) / (whenb-whena)
bot_price         = m * (timeline-whena) + a
back_bot_price    = m * (timeline-whena-offset_b) + a
forward_bot_price = m * (timeline-whena+offset_f) + a
bot_price        := b-a==0 ? nz(bot_price[1]) : bot_price
same_bot          = a==a[1] and b==b[1] and a!=0 and b!=0 and whena!=whenb

plot(same_top ? top_price         : na ,style=linebr ,color=red ,linewidth=2 ,offset= 0        ,transp=50 ,title="_top")
plot(same_top ? back_top_price    : na ,style=linebr ,color=red ,linewidth=1 ,offset=-offset_b ,transp=50 ,title="back_top")
plot(same_top ? forward_top_price : na ,style=linebr ,color=red ,linewidth=1 ,offset= offset_f ,transp=70 ,title="forward_top")

タイムラインと上昇幅を算出して、力技で直線を引く。

目次へ

8.前々回の安値・高値更新を元にしたトレイリングストップ

TradingView Pineスクリプト トレイリングストップ

Pineスクリプト

vw_low  = valuewhen(low  > low[1]  ,low[1]  ,1)
vw_high = valuewhen(high < high[1] ,high[1] ,1)
low_active  = close > vw_low
high_active = close < vw_high
p1 = plot(low_active  ? vw_low  : na ,linewidth=1 ,color=purple ,style=linebr ,title="前々回の安値更新")
p2 = plot(high_active ? vw_high : na ,linewidth=1 ,color=purple ,style=linebr ,title="前々回の高値更新")

当然だが、有効なときとそうでないときがある。

目次へ

9.数秘を算出する

「Astrology(占星)が有効なら、Numerology(数秘)も有効なんじゃないか」と、ちょっと気になって作成してみたコード。実用性はあまりなさそう。サクッと試せるのはTradingViewの良いところ。

Pineスクリプト

calc_n(target) =>
    n4  = target >= 2000 ? 2 : target >= 1000 ? 1 : 0
    n3_ = target - n4*1000
    n3  = n3_ >= 900 ? 9 : n3_ >= 800 ? 8 : n3_ >= 700 ? 7 : n3_ >= 600 ? 6 : n3_ >= 500 ? 5 : n3_ >= 400 ? 4 : n3_ >= 300 ? 3 : n3_ >= 200 ? 2 : n3_ >= 100 ? 1 : 0
    n2_ = n3_ - n3*100
    n2  = n2_ >= 90 ? 9 : n2_ >= 80 ? 8 : n2_ >= 70 ? 7 : n2_ >= 60 ? 6 : n2_ >= 50 ? 5 : n2_ >= 40 ? 4 : n2_ >= 30 ? 3 : n2_ >= 20 ? 2 : n2_ >= 10 ? 1 : 0
    n1  = n2_ - n2*10
    [n4 ,n3 ,n2 ,n1]

[y4 ,y3 ,y2 ,y1] = calc_n(year)
[_ ,_ ,m2 ,m1]   = calc_n(month)
[_ ,_ ,d2 ,d1]   = calc_n(dayofmonth)
num__ = y4 + y3 + y2 + y1 + m2 + m1 + d2 + d1

[_ ,_ ,n2_ ,n1_] = calc_n(num__)
num_ = n2_ + n1_    

[_ ,_ ,n2 ,n1] = calc_n(num_)
num = n2 + n1

目次へ

10.変化率の対数を算出する

roc()が変化率。1%を、0.01ではなく1と返すため、100で割っている。log()は対数を返す。これを必要なだけ足していくと Ku-Chart ができあがる。

Pineスクリプト

calc_log(target) => nz( log( 1 + roc(target ,1) / 100 ))

目次へ

11.強弱の順位を算出する

同程度の数値があって順位が欲しい場合に使う。

Pineスクリプト

target1 = __YOUR_PROGRAM__
target2 = __YOUR_PROGRAM__
target3 = __YOUR_PROGRAM__
target4 = __YOUR_PROGRAM__
target5 = __YOUR_PROGRAM__
target6 = __YOUR_PROGRAM__
target7 = __YOUR_PROGRAM__
target8 = __YOUR_PROGRAM__

rank(target) =>
    _1 = target > target1 ? 0 : 1
    _2 = target > target2 ? 0 : 1
    _3 = target > target3 ? 0 : 1
    _4 = target > target4 ? 0 : 1
    _5 = target > target5 ? 0 : 1
    _6 = target > target6 ? 0 : 1
    _7 = target > target7 ? 0 : 1
    _8 = target > target8 ? 0 : 1
    _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8

rank1 = rank(target1)

目次へ

Back to Top

最高のトレード環境を実現する「サクソバンク証券」

ボクが唯一つかっている取引会社です。

世界中のほとんどの市場に対応していて、日本株をCFDで取引すれば個別株とFXの損益を通算することもできます。何よりも、ひとつの口座に入金するだけですべての銘柄を取引できるのが本当に便利。

SaxoTraderGO
  • 「FX口座」150以上の通貨ペア
  • 「株価指数CFD口座」約250種類
  • 「個別株CFD口座」日米中など世界22カ国・34市場
  • 「バラエティCFD口座」債券やVIX、商品など約100種類
  • MT4にも対応!

Investment Tech Hack

Sorry... doesn't support your browser

To get the best possible experience using our site we recommend that you upgrade to a modern web browser. Investment Tech Hackではご利用中のブラウザサポートはしていません。
Internet Explorerのアップグレード行う、もしくはその他のブラウザを使用しての閲覧をお願いします。