見出し画像

no.1 PineScript超入門プログラミング

今回はみんな大好きSMAを自作していきます。
面白いと思ったら高評価、チャンネル登録お願いします。

プログラムはどのように実行されるか

前回のプログラムでは”Hello Pine”という名前で
終値(close)を使ってグラフを描く(plot)インジケーターを作成しました。

indicator("HelloPine", overlay = true)
plot(close)

何となく察した方がいるかもしれませんが
プログラムはローソクが更新されるたびに実行されます

ローソクごとに実行される様子

なので、前回のプログラムは新しいローソク足が出てきたら
ローソク足の終値と前回の終値を線で結ぶプログラムということになります。
ローソクが出てくるたびに実行されるので、結んだ線がグラフになる、というイメージですね。

SMAの要件

さてSMA(移動平均線)ですが
プログラムで実装するにあたって計算方法を知る必要があります。
SMA 計算式などでググってみましょう。

SMAは一定期間の価格の平均を結んだ線であり
計算方法は 「n期間の終値を合計し、nで割る」とありました

SMAを図解すると

ローソク足に番号と終値を印字したもの

SMAの期間を「10」とした場合
ローソクの1本目~10本目の終値の合計を10で割るとSMAの数値が求まります

答えは146.378でチャートに印を付けるとこんな感じ

これを前回同様にローソクが更新されるたび計算していけば・・・

次のローソクも計算
毎ローソクごとに計算すれば

SMAになるわけですね!

計算式をプログラムで

計算式は分かりました
SMAの期間を10とした場合、「10本の終値の合計を10で割る」ですね

まず 「10本の終値の合計」を考えます
最新のローソク足の終値であれば
前回使用した close がありますね

close


過去の終値

しかし計算にはN本前の終値が必要になります
N本前の終値をプログラムで取得したい場合
以下のように記述します。

close[N]
Nを数字に置き換えると

現在の終値は close 1本前の終値は close[1] 2本前の終値は close[2] となります

期間が10のSMAの場合

close + close[1] + close[2] + close[3] + close[4] + close[5] + close[6] + close[7] + close[8] + close[9]

とても力業ですがこれで「10本の終値の合計」が求まります
あとは10で割れば良いわけですね。

PineScriptでの割り算は "/" を使用し
6を3で割りたい場合こう書きます

6 / 3

ここで注意しないといけないのが
PineScriptでは掛け算、割り算の方が足し算より先に行われる点です。

たとえば 1+4 を 2 で割りたい場合

1 + 4 / 2

と書いてしまうと先に割り算が実行されるので

1 + 2

こうなってしまい、答えがになってしまいます

これを回避するためには 1 + 4 を優先させるようにプログラムを書き換える必要があります。

(1 + 4) / 2

このように()カッコで囲うことで掛け算、割り算より先に実行されるので

5 / 2

となり、求めたい答えを計算させることが出来ます。

つまり
close + close[1] + close[2]….
を10で割りたい場合()で囲えばいいわけですね。
(横長になりすみません…

(close + close[1] + close[2] + close[3] + close[4] + close[5] + close[6] + close[7] + close[8] + close[9]) / 10


完成

あとは前回同様 plot() に計算を渡せばSMAをチャートに引いてくれます

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CXX206

//@version=5
indicator("HelloPine", overlay = true)
plot((close + close[1] + close[2] + close[3] + close[4] + close[5] + close[6] + close[7] + close[8] + close[9]) / 10)

お疲れ様です。
今回はここまでです
SMAの期間を延ばしたい場合
計算式がめちゃ長くなるのか!?
と思った方、大丈夫です。
実はもっと簡単にSMAは実装できるのですが
それはまた後の話・・・

いいなと思ったら応援しよう!