見出し画像

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

条件文(if文)

もしローソク足が陽線だったらAの処理
陰線だった場合はBの処理をしたい

そんな時に使えるのが条件文(if文)です。

プログラミングは条件文を無数に組み合わせて作成するもの、と言っても過言ではありません。
なので条件文は必須科目ということになります。
何事も基礎が無いと応用はできないので一緒に学んでいきましょう。


条件

プログラムの処理を分岐させるのに必要なのが条件です
例えば以下の処理を考えたとき
・SMAの上で買い、下で売り
この場合は
SMAの上か、下か】これが条件になるわけです。

簡単にプログラムで書いてみるとこうなります。

if close > sma
  // 買い

if close < sma
  // 売り

close > sma これが条件になります
close(終値) が sma より大きいか?
という判定をするわけですね

もちろんこのコードをそのままPineScriptに書いても
smaが未定義、つまり変数宣言をしていないのでエラーになりますが
とりあえずのイメージとなります。


書き方

基本的にプログラミングには書き方というのがある程度決まっています。
たとえば前回学んだ変数宣言では

// <変数名> = <初期値>
apple = 300

上記のように書いていました

変数名 = 初期値 これらを改行して書いてみるとエラーになります。

赤いにょろにょろが・・・!

この例では勝手に改行するとエラーになるというのが分かりますね。

それを踏まえて
条件文の書き方はこうなります

if <条件>
    <処理>

処理は改行をして尚且つ右にズレていますね

プログラミングではこの右にズレることをインデントと言います。
詳しく解説すると難しくなるのでさらっと行きます

インデントで右にズレる様子

上記のプログラムの場合
まず条件Aが判定されます
もし条件Atrue(真)の場合
処理Aが実行され
次の条件文である条件Bが判定されます
条件Btrueだった場合に処理Bが実行される
という流れになります。

条件文を書く際
条件を満たした(true)場合の処理は
かならずインデントをしてから書きます

PineScriptでのインデント
空文字(スペースキー)4つ
もしくはTabキー1つになります。


実践

せっかくなので条件文を使ったインジケーターを作成してみます
内容は
・ローソク足が陽線なら背景を赤にする
・ローソク足が陰線なら背景を青にする

という内容でやってみます。

背景色を変更させるには bgcolor() を使用します

bgcolor() の概要
bgcolor(color.aqua)

このコードでは常に color.aqua(水色) で背景を埋め尽くす状態になります

bgcolor() という機能に 色(color.aqua) を渡せば
その色で背景色が変わるのが分かりますね。

しかしこれでは color.aqua色 にしかならないので
条件文を追加して陽線の場合のみ色を変更するように
プログラムを変更してみます。

条件文を追加

if close > open これでローソク足が陽線であるかを判断していますそして
インデント をしてから bgcolor() を使用して背景色を赤(color.red)にしようとしていますが
エラーが出ていますね

エラーの内容

Cannot use 'bgcolor' in local scope
bgcolor
local scope では使用できない
と書かれています
local scope とは インデントした場所を指します

つまり条件文の中で使用出来ないわけですね。

解決策として変数を用いて
bgcolor()インデントせず使用してみます。

プログラム

bgcolor() そのものを条件文の中に入れるのではなく
bgcolor() に渡す色を変数にし、その変数の内容を変更させることで
陽線だった場合の背景色を赤にしています。

実行結果

back_ground 変数の初期値を color.aqua にすることにより
ローソク足が陽線でない場合は色が color.red にならないので
間接的に陰線だった場合の背景色color.aqua に出来ています。


今回はここまで。
条件文(if文)を学んでいきました
条件文をマスターすれば様々なインジが作成できるようになるので
ぜひご自身でもオリジナルのプログラムを書いて
いろいろ試してみてください。

それではまた自分のやる気が出る日まで。

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