1. 相場
  2. TradingView

【TradingView】Pine Scriptで線を引く方法まとめ

Pine Scriptを使って線を引くときに使える関数が主に3つあります。その使い分けを解説します。


2021年3月12日

Pine Scriptを使ってチャートに線を引く

インジケーターを作るときに欠かせないのが、線を引くことです。 ひと口に線と言っても、計算結果の出力だけでなく補助線などを引きたい場合もあるでしょう。

どういった線を引きたいかによって、以下の3つを使い分ける必要があります。

  • hline
  • plot
  • line.new
  • hline

    水平なラインを引く場合に使用するのがhlineです。頭に着く「h」はHorizonの頭文字なのでしょう。

    オシレーターの「買われ過ぎ/売られ過ぎ」のラインを引く場合などに使用します。 また、fillと組み合わせることで、線ではなく範囲を塗りつぶすことも可能です。

    ➡ hline()

    定数しか受け取れない

    水平線を引くだけなら、plotに定数を渡すことでも同じことができます。

    value = 80
    hline(value)
    plot(value)
    

    上の2つは共に80のところに水平線を描写します。 これらは同じような見た目になりますが、行なっていることには大きな違いがあります。

    plotによる描写は足ごとに行なわれています。 上記のコードの場合、全ての足において80のところに線を引いており、それらがずっと同じ値なので水平線に見えているだけです。 足ごとに描写が行われるので、水平線の終わりは現在の足と同じ位置になります。

    一方、hlineには時間の概念がありません。その証拠に、hlineで引いた水平線は、チャートを右側にスクロールしても続いていきます。

    時間の概念が無いということは、時間による値の変化に対応できないということです。

    value = sma(close, 20)
    hline(value)
    

    このように、足ごとに値の変わる水平線をhlineで引こうとしてもエラーとなります。

    専用のスタイルが用意されている

    hlineには、plotとは異なるスタイルが用意されています。

    • hline.style_solid
    • hline.style_dotted
    • hline.style_dashed

    ドットやダッシュはplotでは使えないスタイルです。hlineの見た目を変更したいときは、引数にlinestyleとして上記のどれかをを渡します。

    plot

    plotは、インジケーターの計算結果をチャートに出力したいときに使う関数です。 ですから、plotに渡す引数は、定数ではなくシリーズデータであることが一般的です。

    ➡ plot()

    状態が変化するまで同じ値を表示する

    plotに関しては特に述べることが無いので、良く使うテクニックを紹介します。

    plotに渡すシリーズを作る際、一定期間変化しないデータを用意したい場合があります。 例えば、支持抵抗線などです。

    value = 0.0
    value := value[1]
    
    if open > close
        value := high 
    
    plot(value)
    

    その場合、上記コードのような流れを作ることで実現できます。これを言葉にすると、

    • 変数を初期化
    • 1つ前の値を変数に代入
    • 条件にマッチしたら値を上書き

    となります。

    line.new

    line.newは、新しいラインオブジェクトを作成するための関数です。

    起点(x1, y1)から終点(x2, y2)までの直線を引きます。 例えば、ZIGZAGの安値と高値を線で結ぶといったときに使用します。

    ➡ line.new()

    垂直の線を引く

    line.newを使って「縦線」を引くことも可能です。TradingViewには垂直線を引く関数が用意されていないため、line.newで代用します。

    起点と終点のx座標を同じにしてやれば、描写される線は垂直となります。

    isHour     = hour == 12
    isMinute   = minute == 0
        
    if(isHour and isMinute)
        line.new(bar_index, low, bar_index, high, xloc.bar_index, extend.both) 
    

    このコードでは12時に縦線を引いています。引数にextend.bothを指定してチャートを縦断する線にするのがポイントです。

    相場の最新記事

    1. 11月18日から11月29日

    2. 11月1日から11月15日

    3. 10月14日から10月31日

    4. 10月1日から10月11日

    5. 12月25日から12月29日

    PAGE TOP