Pineスクリプト(Pine Script)の三項条件演算子「?:」の使い方
Pineスクリプト(Pine Script)において、条件分岐はif else文で複数行を使って記述するのが基本です。
三項条件演算子を使えば、この条件分岐をシンプルに1行で記述することができます。
「Pineスクリプト(Pine Script)の「ta.change関数」の使い方について解説」で出てきました塗り分けの条件式を例に説明します。
処理の内容は、
ヒストグラムが0より大きい が真ならば 処理Aを実行(緑系の色)。
ヒストグラムが0より大きい が偽ならば 処理Bを実行(赤系の色)。
処理A,Bの中にもif else文を使用していますが、 ここでは、ヒストグラムが上昇時は明るい色、下降時は暗い色で塗り潰されるように判定しています。
これを、三項条件演算子で書き直します。
構造としては、
判定式 ? 処理A : 処理B
です。
動作は、
判定式 が真ならば 処理Aを実行。
判定式 が偽ならば 処理Bを実行。
となり、同じ機能を表現出来ます。
書き換えたソースは以下です。
三項条件演算子とif else文で同じ判定ができました。
よりシンプルに短いスクリプトを書きたい場合は、三項条件演算子を使用すると良いでしょう。
ただし長い変数名などを使っている場合、式全体が見難くなる場合もあります。
if else文は書式のルールで字下げをして記述しますので、1行では書けませんが、このルールのおかげでこちらの方が見やすいことも多いです。
三項条件演算子とif else文で一覧性が高い書き方を選択すると記述ミスを減らすことができます。
次回以降も使用頻度の高い関数など説明します。
参考スクリプト シンプルバージョン
- インジケーター名:MACD_Base
- 機能:MACDを表示する。
//@version=5
indicator("MACD Base",overlay = false)
SigLength = input.int(title='Signal 期間', defval = 9, minval = 1)
fastMA = input.int(title="Fast MA 期間", defval = 12, minval = 1)
slowMA = input.int(title="Slow MA 期間", defval = 26, minval = 1)
[macdLine, signalLine, histLine] = ta.macd(close, fastMA, slowMA, SigLength)
plot(macdLine, color=color.blue)
plot(signalLine, color=color.red)
plot(histLine, color=color.orange, style=plot.style_histogram)
- インジケーター名:MACD_UpDown
- 機能:MACDを表示する。塗り分け機能あり。if else文バージョン
//@version=5
indicator("MACD UpDown",overlay = false)
SigLength = input.int(title='Signal 期間', defval = 9, minval = 1)
fastMA = input.int(title="Fast MA 期間", defval = 12, minval = 1)
slowMA = input.int(title="Slow MA 期間", defval = 26, minval = 1)
[macdLine, signalLine, histLine] = ta.macd(close, fastMA, slowMA, SigLength)
//ヒストグラム色指定 プラス側2色
his_colorUp1=color.new(color.lime, transp = 50)
his_colorUp2=color.new(color.green, transp = 50)
//ヒストグラム色指定 マイナス側2色
his_colorDn1=color.new(color.maroon,transp = 50)
his_colorDn2=color.new(color.red, transp = 50)
//ヒストグラム色初期値指定
plotColor=color.new(color.black,transp = 0)
//ヒストグラムを現在値と1本前の差分を計算
diff=ta.change(histLine,1)
if histLine>0
if diff>0
plotColor := his_colorUp1
else
plotColor := his_colorUp2
else
if diff>0
plotColor := his_colorDn2
else
plotColor := his_colorDn1
plot(histLine, title = "ヒストグラム", style = plot.style_histogram, color =plotColor, linewidth = 4)
plot(macdLine, color=color.blue)
plot(signalLine, color=color.red)
- インジケーター名:MACD_UpDown2
- 機能:MACDを表示する。塗り分け機能あり。三項条件演算子バージョン
//@version=5
indicator("MACD UpDown2",overlay = false)
SigLength = input.int(title='Signal 期間', defval = 9, minval = 1)
fastMA = input.int(title="Fast MA 期間", defval = 12, minval = 1)
slowMA = input.int(title="Slow MA 期間", defval = 26, minval = 1)
[macdLine, signalLine, histLine] = ta.macd(close, fastMA, slowMA, SigLength)
//ヒストグラム色指定 プラス側2色
his_colorUp1=color.new(color.lime, transp = 50)
his_colorUp2=color.new(color.green, transp = 50)
//ヒストグラム色指定 マイナス側2色
his_colorDn1=color.new(color.maroon,transp = 50)
his_colorDn2=color.new(color.red, transp = 50)
//ヒストグラムを現在値と1本前の差分を計算
diff=ta.change(histLine,1)
plotColor = histLine > 0 ? diff > 0 ? his_colorUp1 : his_colorUp2 : diff > 0 ? his_colorDn2 : his_colorDn1
plot(histLine, title = "ヒストグラム", style = plot.style_histogram, color =plotColor, linewidth = 4)
plot(macdLine, color=color.blue)
plot(signalLine, color=color.red)
Pine Script(Pineスクリプト)をさらに学びたい方へオススメのコンテンツ
OANDA証券では、TradingViewのプログラミング言語である「Pine Script(Pineスクリプト)」に関する記事を豊富に提供しています。
プログラミング初心者の方でも、インジケーターやストラテジーの作成ができるよう、ソースコードをコピペ+少しの修正で組み上がる構成としています。
またOANDA証券とTradingViewのアカウントを連携させることで、「Tradingview」から直接トレードすることが可能です。
ぜひOANDA証券での口座開設をご検討下さい。
TradingView(トレーディングビュー)で使用する情報は、全てTradingView(トレーディングビュー)社に帰属するものであり、当社は、その正確性、完全性を保証するものではありません。同サイトで使用する情報に基づいて行った取引によって発生したいかなる損害・損失について、当社は一切責任を負いかねますのでご了承下さい。最終的な投資判断についてはお客様ご自身でお願い致します。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。