前回の投稿では、TradingViewのチャート上に線を引く(プロットする)方法の基本を説明しました。
今回の投稿では移動平均線を計算してチャート上にプロットする方法を解説します。

わざわざ移動平均のコードを書くの?
移動平均線は基本的なテクニカルインジケーターなので、わざわざ自分でコードを書かかずに既存のインジケーターのメニューの中から選ぶこともできます。ただ無料アカウントだと同時に使えるインジケーターが3個までなので、プロットできる移動平均線の本数も限られてしまいます。自分でコードを書くことのメリットは、自分の好きな種類や期間の移動平均線を何本も好きなだけ引けることです。クロスオーバーする部分に印をつけたり、移動平均線の上下に幅をつけたり、表示位置を前や後ろにずらしたり、ほかのインジケーターと組み合わせたり、などいろんなカスタマイズが可能です。

移動平均の計算法
移動平均は過去の一定期間の市場価格の平均です。例えば5日間単純移動平均は、過去5日間の終値を足して5で割った値です。計算式は、
(4日前終値+3日前終値+2日前終値+1日前終値+当日終値)÷5=5日間単純移動平均
となります。

上記の計算式コードを書けば単純移動平均は計算できるのですが、Pine Scriptでコードを書く際はもっと簡単な方法があり、事前に登録されている単純移動平均を求める関数 ta.sma() を使います。移動平均線以外のもっと複雑な式のインジケータも、登録されている関数を使えば簡単に計算することができますので、ここで単純移動平均線の描画のしかたを覚えれば、他のインジケーターもいくらでも書けるようになります。なので、まずはta.sma()関数を使ったプロットの仕方を練習してみましょう。

5日間の移動平均を関数を使って計算するコードは、
ta.sma(source=close, length=5)
と書きます。
ta.sma()が単純移動平均線を計算する関数で、カッコの中にsource=closeとlength=5 という2つの引数が入っています。sourceは情報元のことで、source=close は終値を使って計算してください、という意味です。length とは長さ、つまり期間のことで、length=5 とは、平均計算する際にチャートのローソク足5本分で計算してください、という意味です。
ですので、ta.sma(source=close, length=5) とは、日本語で書くと「終値をつかって、ローソク足5本分の単純平均を計算する」という意味の関数になります。
source=closeの代わりにsource=low とすると、各ローソク足の最安値を使って移動平均を計算します。
length=5の代わりにlength=20とすると、20日間単純移動平均を計算します。

下記のように省略して書くこともできます。
省略しない場合 ta.sma(source=close, length=5)
省略する場合  ta.sma(close, 5)

移動平均を計算しただけではなにも起こらない
実際にTradingViewの「Pineエディタ」を開いて ta.sma(source=close,length=5) というコードだけを書いて、「チャートに追加」をクリックしてもチャート上に移動平均線は表示されません。なぜでしょう?
まず、前回の投稿で説明したように、コードのはじめにPince Scriptのバージョンを宣言して、さらに、これからインジケーターをプロットするコードを書きますよ、という宣言をする関数を書かないと、コンピューターはあなたの書いたコードを理解してくれません。なので、
//@version=5
indicator(“コードのタイトル”, overlay=true)

を最初にかならず書きましょう。
そして、その下にta.sma(close,5)を書きます。そして「チャートに追加」をクリックすると。

いや、それでもまだ移動平均線は表示されませんね。なぜでしょう?

ta.sma(close,5) は5日間の移動平均の値を計算する、という関数ですが、値を計算するだけであって、その値を使って線を引いてください、と指示するコードは別に書かなくてはなりません。
前回の投稿で説明したplot()関数を使って線をプロットするコードを書かないと、システムは線を引いてくれません。

変数を使って計算した値をプロットする
それでは関数 ta.sma(source=close, length=5) で計算した移動平均の値をチャート上に線でプロットするコードを書きます。プロットする関数は plot() でした。前項で説明したとおり、各ローソク足の終値をつなぎ合わせるような線をプロットするには plot(series=close) と書きましたね。
なので、さきほど計算した移動平均線をプロットするためには、
plot(series=ta.sma(source=close,length=5))と書いて「チャートに追加」を押すと移動平均線がチャート上に現れます。
冒頭のindicator()関数が、indicator(“タイトル”, overlay=true)となっていれば、ローソク足に重ねるように移動平均線がプロットされますが、indicator(“タイトル”) または indicator(“タイトル”, overlay=false)となっていたら、移動平均線はチャートの下に表示されてしまいますので気を付けてください。

一旦、ここまでで整理しましょう。

(例)
//@version=5
//バージョン5によるコードです
indicator(“移動平均”, overlay=true)
//以下はインジケータのコードで、タイトルは「移動平均」、チャートにかぶせてプロット表示します
plot(series=ta.sma(source=close, length=5))
//ローソク足5本分の終値の移動平均線をプロットします

さて、これで移動平均線を引くコードの書き方を学びました。
plot() という関数の中に、引数としてta.sma() 関数を組み込んだコードになっていることに注意してください。
ただ私は実際にはこのように関数を二重に組み合わせたコードを書きません。
その代わりに、ta.sma() 関数で計算した移動平均の値に名前をつけて、その名前をplot()関数の引数として使います。この名前のことを変数と言います。
次の投稿では、この変数についてと、なぜ変数を使ってコードを書くのか、について説明します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です