この投稿文では移動平均線を関数で計算して、それを変数に代入してプロットする方法を解説します。
なぜ変数を使うのか
前回の投稿では、下記のコードで移動平均線を引けることを確認しました。
//@version=5
indicator(“移動平均”, overlay=true)
plot(series=ta.sma(source=close,length=5))
これで良いでしょ、と思うかもしれませんが、私はあまりこういうコードを書きません。
先に、移動平均の値を別の行で計算して、その値に「名前」をつけます。その「名前」を使ってplot()関数の引数を指定します。下記のようなコードになります。
//@version=5
indicator(“移動平均”, overlay=true)
my_sma = ta.sma(source=close, length=5)
plot(series=my_sma)
最初のコードとの違いは下記の二つです。
1.plot()関数の行の上に、my_sma = ta.sma(source=close, length=5) という行が追加されている。
2.plot()の引数が、series=my_smaに変わっている。
追加された行 my_sma = ta.sma(source=close, length=5) はなにかというと、ta.sma(source=close, length=5)で計算した移動平均の値をmy_smaという名前の変数に代入する、とい意味のコードです。
変数は、計算結果などの数値や、文字列、ブーリアン値などを入れておく箱のようなものです。ブーリアンについては後で説明しますので、いまは気にしないでください。
プログラムは長くなっていくと読むのが大変です。あとで読みやすくするために計算した値に名前を付けておくのです。読みやすくすればコーディングの間違いも減らせますし、あとから編集するときも楽になります。
移動平均線を引くだけのコードならいいのですが、長いコードになると、変数をうまくつかって綺麗に整理することが間違いを減らすために大切になってきます。
my_sma は変数に付けた名前です。半角のアルファベット文字、数字、アンダースコア( _ のような下線)を使って、自分がわかりやすい好きな名前をつけて構いません。ただ、Pine Script言語で他に意味のある言葉は変数の名前にはできません。
変数の作り方
my_sma = 計算式
で、右側の計算式で計算した値をmy_smaという名前の変数に代入するコードになります。
my_sma = ta.sma(source=close, length=5)
とすると、ta.sma(source=close, length=5)で計算した値をmy_smaという変数に代入します。
= という記号は、学校の算数では右側と左側が同じ(イコール)という意味だと習ったと思います。
プログラミングでは少し意味が違っていて、右側の値を左側の変数に代入する、という意味の記号になるので注意してください。
変数は自分の好きな名前を付けてよい、と書きましたが、一般的な変数の名前の付け方のパターンがあるみたいなので覚えておいてください。
my_sma のように単語と単語の間にアンダースコア記号 _ をいれる。
mySma のように、2つ目以降の単語の最初の文字を大文字にする。
MySma のように、各単語の最初の文字を大文字にする。
などです。
作った変数を使う
my_sma という変数を作ったら、それ以降の行で my_sma 変数を使ってコードを書くことができます。
なので、
plot(series=ta.sma(source=close, length=5))
とは書かずに、
plot(series=my_sma)
と書くことができます。plot()関数の引数として、それ以前の行で作ったmy_sma という変数を使っているのです。
移動平均線を2本引いてみましょう
それでは、練習として、変数をつかってチャート上に移動平均線を二本引くコードを書いてみましょう。
(例題1)
10日単純移動平均、100日単純移動平均の二本をチャート上にプロットするコードを書く。
(答え1)
//@version=5
indicator(“移動平均2本”, overlay=true)
sma_short = ta.sma(source=close, length=10)
sma_long = ta.sma(source=close, length=100)
plot(series=sma_short)
plot(series=sma_long)
上記のコードを書いて、「更新をチャートに反映」を押すと二本の移動平均線がチャート上に表示されるはずです。
でも、このままでは二本の移動平均線が同じ色になっていて見ずらいですね。せっかくなので色を付けてみましょう。
(例題2)
チャート上に10日移動平均線を緑、100日移動平均線を赤で表示するコードを書く。
(答え2)
//@version=5
indicator(“移動平均2本”, overlay=true)
sma_short = ta.sma(source=close, length=10)
sma_long = ta.sma(source=close, length=100)
plot(series=sma_short, color=color.green)
plot(series=sma_long, color=color.red)
これで見やすい移動平均線がプロットできました。
コードも見やすいですね。
引数 length=10 を length=20に書き換えると20日単純移動平均線になりますし、length=200にすると200日単純移動平均線になります。
ただ、移動平均線の期間を変えるごとにコードを書き替えるのは面倒なので、次の投稿では便利なインプット関数について説明します。