Pineスクリプトのインディケーターを新規作成する

# Pine Script(Pineスクリプト)チュートリアル
## はじめに
qiitaは技術系のサイトであり、利益が出る・出ない等の話は適切ではないと考えます。
なので、そういった話は以下のblogでしていきます。
[超入門 TradingView PineScript](https://tradingview.blog.fc2.com/)

よかったら見に来てください。
## この記事について
近年、仮想通貨がメジャーなものになってきたり、Oandaとの連携も始まったりしてTradingViewを使ってる方も多くなってきました。
しかし、Trading Viewでチャートを見たり、自作のインジケータを使う人は多くいるはずなのに、PineScriptに関する日本語の情報はまだまだ少ないのが現状です。
最近でこそマニュアルが日本語化されていますが、私がPineScriptを初めて触った頃はマニュアルも英語でした。

自分でチャートを描画する必要が無く、インジケータや売買ロジック部分の作成に集中できるのは、個人的にものすごくメリットだと思います。
本記事では、Trading ViewのPineScriptについて私が今まで断片的な情報をかき集めて学んできたことを皆様とシェアしたく、記事にまとめてみました。

今回は、移動平均線を表示するスクリプトから、Pine Scriptの基礎を学んでいきましょう。

qiitaは技術系のサイトですので、「利益が出るインジケータはどれか」という視点ではなく、あくまでスクリプトの書き方等、技術寄りの情報を書いていきます。

## Pineスクリプトを新規に作成する
trading Viewでチャートを表示し、下部にある「Pineエディタ」をクリックしてください。
![111.png](https://qiita-image-store.s3.amazonaws.com/0/223372/edce9568-22ec-4deb-7e17-8e03db279fd0.png)

Pineエディタが開きます。ここにスクリプトを書いていきます。
![222.png](https://qiita-image-store.s3.amazonaws.com/0/223372/8414095a-9a4d-c957-a889-155f82e88025.png)

では、さっそくスクリプトを書いていきましょう。
一からですと大変なので、今回はMA（移動平均線）をローソク足に表示するサンプルをこちらで用意しました。

## チャート上に指標を表示する
### MA（移動平均線）を表示するスクリプト

```c:MAを表示するスクリプト
// タイトル。必ずstudyが必要。overlayをtrueにするとチャートの上に描画される
study("Moving Average", shorttitle="MA", overlay=true)

// ソース（終値）
source = close

// MAの長さ
len = 10

// MAの計算
ma = sma(source, len)

// 計算したMAをプロットする
plot(ma)
```

Pineエディタにコピペし、「チャートへ追加」を押すと、MA(10)がローソク足の所に表示されました。（少し見にくいですが水色の線です）
![333.png](https://qiita-image-store.s3.amazonaws.com/0/223372/badc094d-5029-d819-0232-af3a25fa3232.png)

source(series)の中にはcloseを入れましたが、open,low,highを指定することによってそれぞれ始値、安値、高値の移動平均線を引くことも可能です。
lenの中には10を入れました。これは移動平均線の日数です。
maに、単純移動平均線（sma）を計算させた結果を入れています。sma関数はソース(series)と日数を入れるとseriesが戻ってくる関数です。

しかし、これでは移動平均線の日数やsourceを変更する度にスクリプトを修正しなければなりません。なので、設定からsourceと移動平均線の日数を変更できるように修正しましょう。

```c:MAを表示するスクリプト（修正版）
// タイトル。必ずstudyが必要。overlayをtrueにするとチャートの上に描画される
study("Moving Average", shorttitle="MA", overlay=true)

// ソース（終値）
source = input(close)

// MAの長さ
len = input(10, title="Length")

// MAの計算
ma = sma(source, len)

// 計算したMAをプロットする
plot(ma)
```

input関数を使うことにより、インディケーターの設定画面から、ソースとMAの日数を変更する事ができるようになりました
![sss.png](https://qiita-image-store.s3.amazonaws.com/0/223372/cbe2dcf2-ed4d-011a-aba8-ae8dcd572c12.png)

## チャート下に指標を表示する
### RSIを表示するスクリプト

```c:RSIを表示するスクリプト
// タイトル。必ずstudyが必要。overlayをtrueにするとチャートの上に描画される
study("RSI", shorttitle="RSI")

// ソース（終値）
source = input(close)

// 計算したRSIをプロットする
plot(rsi(source, 10), color=red)
```

rsi関数部以外はoverlay部を削除（自動でfalseになる）しただけですので、詳細は省略します。

## 使用した要素のリファレンス一覧
より深く知りたい方は、以下のリファレンスをご覧ください。本記事では紹介していない引数やサンプルソースもあります。
[study](https://jp.tradingview.com/study-script-reference/#fun_study)
[close](https://jp.tradingview.com/study-script-reference/#var_close)
[sma](https://jp.tradingview.com/study-script-reference/#fun_sma)
[rsi](https://jp.tradingview.com/study-script-reference/#fun_rsi)
[plot](https://jp.tradingview.com/study-script-reference/#fun_plot)
[input](https://jp.tradingview.com/study-script-reference/#fun_input)

## 参考URL
[PINEスクリプト言語参照マニュアル](https://jp.tradingview.com/study-script-reference/)
[TradingViewのPine Scriptを効率的にデバッグする](https://qiita.com/horimislime/items/df88756eccb64cccb9f4)
[Pine Script Tips](https://qiita.com/maruman029/items/563a24efb69be36f8ba8)