TradingView(トレーディングビュー)のMACDのPineスクリプトをチェック
今回は、TradingView(トレーディングビュー)のMACDのPineスクリプトを見ながら、Pineスクリプトの内容をチェックしていきます。
MACDの計算方法
MACDは一般的に「MACD」「シグナル」「ヒストグラム」の3つの数値を算出し、「MACD」「シグナル」を曲線、「ヒストグラム」をヒストグラムで表示するインジケーターです。
それぞれの数値の計算方法は次の通りです。
- ・MACD:短期EMA – 長期EMA
- ・シグナル:MACDを移動平均化
- ・ヒストグラム:MACD – シグナル
これらがTradingViewのPineスクリプトではどのように記述されるのか、細かく見ていきましょう。
PineエディタでMACDのPineスクリプトをチェック
以下は、Pineエディタに表示したMACDのソースコードです。
//@version=5
indicator(title="Moving Average Convergence Divergence", shorttitle="MACD", timeframe="", timeframe_gaps=true)
// Getting inputs
fast_length = input(title = "Fast Length", defval = 12)
slow_length = input(title = "Slow Length", defval = 26)
src = input(title = "Source", defval = close)
signal_length = input.int(title = "Signal Smoothing", minval = 1, maxval = 50, defval = 9, display = display.data_window)
sma_source = input.string(title = "Oscillator MA Type", defval = "EMA", options = ["SMA", "EMA"], display = display.data_window)
sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"], display = display.data_window)
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
alertcondition(hist[1] >= 0 and hist < 0, title = 'Rising to falling', message = 'The MACD histogram switched from a rising to falling state')
alertcondition(hist[1] <= 0 and hist > 0, title = 'Falling to rising', message = 'The MACD histogram switched from a falling to rising state')
hline(0, "Zero Line", color = color.new(#787B86, 50))
plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
plot(macd, title = "MACD", color = #2962FF)
plot(signal, title = "Signal", color = #FF6D00)
上から順にプログラムを見ていくと、最初にお決まりの「//@version=5」でPineスクリプトのバージョンを指定しています。
次に、「indicator()」でインジケーターの名前(title)、略称(shorttitle)などを指定しています。
パラメーターの設定
続いて、以下のパラメーターの設定値がそれぞれ代入される変数を定義しています。
- ・fast_length:短期EMAの期間
- ・slow_length:長期EMAの期間
- ・src:計算で使用する価格の種類
- ・signal_length:シグナルを算出するための移動平均線の期間
input関数を使い、これらの変数には設定画面の「パラメーター」タブの各項目からの設定値が代入される仕組みです。
また、TradingViewのMACDは単純移動平均線を使用したMACDを表示することもできる仕様としているため、MACD、シグナルを使用する際の移動平均線を単純移動平均線にするかというパラメーター項目も用意しており、それぞれ「sma_source」「sma_signal」という変数に設定値が代入されるようになっています。
なお、input関数は、「title」で表示される文字、「defval」でデフォルトの数値、「minval」で最小値、「maxval」で最大値、「display」でスクリプトの値が表示される場所を指定しています。
MACDの3つの構成要素の計算式
次に、MACDの具体的な計算に移ります。
長期と短期の移動平均線の値を代入するために、それぞれ「fast_ma」「slow_ma」という変数を定義しています。
ここでは、単純移動平均線が選択された場合には「ta.sma()」を用いて単純移動平均線の値、選択されなかった場合には「ta.ema()」を用いて指数平滑移動平均線の値をを代入するように記述されています。
「macd」は、MACDの値を代入するための変数です。
「fast_ma」から「slow_ma」を引いた値が代入されます。
「signal」は、シグナルの値を代入するための変数です。
先ほどの「fast_ma」「slow_ma」と同様に、指定された種類の移動平均を用いて算出したシグナルの値が代入されます。
「hist」はヒストグラムの値を代入するための変数です。
「macd」から「sigal」を引いた値が代入されます。
以上で、MACDの3つの構成要素に関する計算は終了です。
MACDで利用できる関するアラートを追加
続いて、「alertcondition()」を用いて、アラート作成ダイアログにおいてMACDについて利用できるアラートを2つ追加しています。
1つ目は「Rising to falling」という名前で、「hist」が0以上からマイナスになったことを知らせるアラートです。
2つ目は「Falling to rising」という名前で、「hist」が0以下からプラスになったことを知らせるアラートです。
チャート上に描画
最後は、MACDの構成要素などをチャートを描画するための記述です。
「hline()」は、指定した価格に水平線を描画する関数です。
ここでは「0」に、いわゆるゼロラインを描画するように記述しています。
「plot()」は、指定したデータをチャート上に描画する関数です。
ここでは、MACDの構成要素の値が代入されている3つの変数「macd(MACD)」「signal(シグナル)」「hist(ヒストグラム)」が指定されています。
「plot()」は、描画する形状や色なども指定可能です。
形状は「style=〇〇」という形で指定できますが、何も指定しない場合はラインとなります。
ここではヒストグラムのみ、「 style = plot.style_columns」とヒストグラムの形状で表示するように指定しています。
色は、「color=〇〇」という形で指定します。
ここでは、MACDは青(#2962FF)、シグナルはオレンジ(#FF6D00)です。
ヒストグラムについては、状況によって色が変わるように細かく記述されています。
具体的には、ヒストグラムが0以上のときは緑系の色、0未満のときはオレンジ系の色となり、ヒストグラムが長くなった時は濃い色、短くなったときは薄い色となる形です。
Pine Script(Pineスクリプト)をさらに学びたい方へオススメのコンテンツ
OANDA証券では、TradingViewのプログラミング言語である「Pine Script(Pineスクリプト)」に関する記事を豊富に提供しています。
プログラミング初心者の方でも、インジケーターやストラテジーの作成ができるよう、ソースコードをコピペ+少しの修正で組み上がる構成としています。
またOANDA証券とTradingViewのアカウントを連携させることで、「Tradingview」から直接トレードすることが可能です。
ぜひOANDA証券での口座開設をご検討下さい。
TradingView(トレーディングビュー)で使用する情報は、全てTradingView(トレーディングビュー)社に帰属するものであり、当社は、その正確性、完全性を保証するものではありません。同サイトで使用する情報に基づいて行った取引によって発生したいかなる損害・損失について、当社は一切責任を負いかねますのでご了承下さい。最終的な投資判断についてはお客様ご自身でお願い致します。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。