無料で扱いやすい株式チャートが見れる「Trading View」ですが、無料だと使えるインジケータが3つまでという制限があり、そのうえ出来高プロファイルも表示できません。。
でもそこは太っ腹の「Trading View」様。インジケータを自作すれば、移動平均線(短期・中期・長期・超長期)、ボリンジャーバンド、RSI、MACD、出来高プロファイル(固定期間)を同時に表示できる道を残してくださっています(感謝です<(__)>)。
「インジケータの自作なんてハードルが高そう…」と思うところですが大丈夫です。コピペだけで簡単にできます。
※この方法はPCでChromeブラウザを利用している方を対象としています。(スマホやタブレットの方ごめんなさい)
移動平均線、ボリンジャーバンド、出来高プロファイルを表示する
まずはローソク足と一緒に表示されるトレンド系インジケーターを設定します。
移動平均線、ボリンジャーバンド、出来高プロファイルの3つのインジケーターを1つのインジケーターとして自作します。
まず「Trading View」を開きます。

画面の右下にある「Pine」(三角の木のようなマーク)をクリックします。

↓「名前なしのスクリプト」が表示されます。
(表示されない場合は、スクリプト名の右にある「∨」→「新規作成」→「インジケーター」の順にクリックします)

以下のようなコードが初めから設定されています。
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 【あなたのID】
//@version=6
indicator("マイスクリプト")
plot(close)最後の2行↓を削除してください。
indicator("マイスクリプト")
plot(close)そして↓のコードを「//@version=6」の下に張り付けます。
indicator('My_MA_BB_VWAP_VP', overlay=true, precision=4, linktoseries=true, max_bars_back=1000, max_lines_count=500)
//移動平均線
day5 = input(5, title='MA短期:算出期間')
day25 = input(25, title='MA中期:算出期間')
day50 = input(50, title='MA中長期:算出期間')
day75 = input(75, title='MA長期:算出期間')
day200 = input(200, title='MA超長期:算出期間')
ma5 = ta.sma(close, day5)
ma25 = ta.sma(close, day25)
ma50 = ta.sma(close, day50)
ma75 = ta.sma(close, day75)
ma200 = ta.sma(close, day200)
plot(ma5, title='短期移動平均線', color=color.new(color.white, 0), linewidth=1)
plot(ma25, title='中期移動平均線', color=color.new(color.yellow, 0), linewidth=1)
plot(ma50, title='中長期移動平均線', color=color.new(color.aqua, 0), linewidth=1)
plot(ma75, title='長期移動平均線', color=color.new(color.orange, 0), linewidth=1)
plot(ma200, title='超長期移動平均線', color=color.new(color.purple, 0), linewidth=1)
//ボリンジャーバンド
length = input(20, title='BB:算出する期間')
price = input(close, title='BB:計算の対象')
sma = ta.sma(price, length) //移動平均線
dev = ta.stdev(price, length) //標準偏差
bb2h = sma + dev * 2
bb1h = sma + dev
bb1l = sma - dev
bb2l = sma - dev * 2
p2h = plot(bb2h, title='BB2σ+', color=color.new(color.gray, 39), linewidth=1)
plot(bb1h, title='BB1σ+', color=color.new(color.gray, 77), linewidth=1)
plot(sma, title='BBMA20', color=color.new(color.gray, 90), linewidth=1)
plot(bb1l, title='BB1σ-', color=color.new(color.gray, 77), linewidth=1)
p2l = plot(bb2l, title='BB2σ-', color=color.new(color.gray, 39), linewidth=1)
fill(p2h, p2l, title='BB2背景', color=color.new(color.gray, 96))
//出来高プロファイル
//////////////////////////////////////////////////////
//// INPUTS
//////////////////////////////////////////////////////
vp_lookback = input.int(defval=260, title='VP:対象期間(日数) [10-1000]', minval=10, maxval=1000)
vp_max_bars = input.int(defval=90, title='VP:横棒グラフの数 [10-500]', minval=10, maxval=500)
vp_bar_mult = input.int(defval=13, title='VP:横棒グラフの長さ [10-100]', minval=10, maxval=100)
vp_bar_offset = input.int(defval=13, title='VP:横棒グラフのオフセット [0-100]', minval=0, maxval=100)
vp_bar_width = input.int(defval=2, title='VP:横棒グラフの太さ [1-20]', minval=1, maxval=20)
// As suggested by @NXT2017
vp_delta_type = input.string(defval='Both', title='VP:Delta Type', options=['Both', 'Bullish', 'Bearish'])
vp_poc_show = input(defval=true, title='VP:POC(最高値ライン)を表示')
vp_bar_color = input(defval=color.new(color.yellow, 0), title='VP:グラフの色')
vp_poc_color = input(defval=color.new(color.orange, 0), title='VP:POCの色')
//////////////////////////////////////////////////////
//// VARIABLES
//////////////////////////////////////////////////////
float vp_Vmax = 0.0
int vp_VmaxId = 0
int vp_N_BARS = vp_max_bars
var int vp_first = time
vp_a_P = array.new_float(vp_N_BARS + 1, 0.0)
vp_a_V = array.new_float(vp_N_BARS, 0.0)
vp_a_D = array.new_float(vp_N_BARS, 0.0)
vp_a_W = array.new_int(vp_N_BARS, 0)
//////////////////////////////////////////////////////
//// CALCULATIONS
//////////////////////////////////////////////////////
float vp_HH = ta.highest(high, vp_lookback)
float vp_LL = ta.lowest(low, vp_lookback)
if barstate.islast
float vp_HL = (vp_HH - vp_LL) / vp_N_BARS
for j = 1 to vp_N_BARS + 1 by 1
array.set(vp_a_P, j - 1, vp_LL + vp_HL * j)
for i = 0 to vp_lookback - 1 by 1
int Dc = 0
array.fill(vp_a_D, 0.0)
for j = 0 to vp_N_BARS - 1 by 1
float Pj = array.get(vp_a_P, j)
if low[i] < Pj and high[i] > Pj and (vp_delta_type == 'Bullish' ? close[i] >= open[i] : vp_delta_type == 'Bearish' ? close[i] <= open[i] : true)
float Dj = array.get(vp_a_D, j)
float dDj = Dj + nz(volume[i])
array.set(vp_a_D, j, dDj)
Dc := Dc + 1
Dc
for j = 0 to vp_N_BARS - 1 by 1
float Vj = array.get(vp_a_V, j)
float Dj = array.get(vp_a_D, j)
float dVj = Vj + (Dc > 0 ? Dj / Dc : 0.0)
array.set(vp_a_V, j, dVj)
vp_Vmax := array.max(vp_a_V)
vp_VmaxId := array.indexof(vp_a_V, vp_Vmax)
for j = 0 to vp_N_BARS - 1 by 1
float Vj = array.get(vp_a_V, j)
int Aj = math.round(vp_bar_mult * Vj / vp_Vmax)
array.set(vp_a_W, j, Aj)
//////////////////////////////////////////////////////
//// PLOTING
//////////////////////////////////////////////////////
if barstate.isfirst
vp_first := time
vp_first
vp_change = ta.change(time)
vp_x_loc = timenow + math.round(vp_change * vp_bar_offset)
f_setup_bar(n) =>
x1 = vp_VmaxId == n and vp_poc_show ? math.max(time[vp_lookback], vp_first) : timenow + math.round(vp_change * (vp_bar_offset - array.get(vp_a_W, n)))
ys = array.get(vp_a_P, n)
line.new(x1=x1, y1=ys, x2=vp_x_loc, y2=ys, xloc=xloc.bar_time, extend=extend.none, color=vp_VmaxId == n ? vp_poc_color : vp_bar_color, style=line.style_solid, width=vp_bar_width)
if syminfo.type == 'stock' or syminfo.type == 'futures' or syminfo.type == 'forex' or syminfo.type == 'crypto' // stock, futures, index, forex, crypto, fund, dr
if barstate.islast
for i = 0 to vp_N_BARS - 1 by 1
f_setup_bar(i)
//////////////////////////////////////////////////////
//// END
//////////////////////////////////////////////////////貼り付け終わったら、「保存」を押します。

スクリプト名を聞かれるので、好きな名前を入力して「保存」を押します。
(画像では例として「My_MA_BB_VWAP_VP」と入力)

「チャートに追加」を押します。

移動平均線、ボリンジャーバンド、出来高プロファイルの3つが表示されます。

RSI、MACDを表示する
次に、ローソク足の下に表示されるオシレーター系インジケーターを設定します。
RSI、MACDの2つのインジケーターを1つのインジケーターとして自作します。
スクリプト名の右にある「∨」→「新規作成」→「インジケーター」の順にクリックします。

「名無しのスクリプト」が表示されます。

先ほどと同じように最後の2行↓を削除してください。
indicator("マイスクリプト")
plot(close)そして↓のコードを「//@version=6」の下に張り付けます。
indicator("My_MACD_RSI", overlay=false)
// --- RSI ---
len = input.int(14, minval=1, title="Length")
src1 = input.source(close, "Source")
// v5/v6では ta. 名前空間を使用します
up = ta.rma(math.max(ta.change(src1), 0), len)
down = ta.rma(-math.min(ta.change(src1), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
bandm = hline(50, "Middle Band", color=color.new(#C0C0C0, 50))
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=color.new(#9915FF, 90), title="Background")
// --- MACD ---
fast_length = input.int(12, title="Fast Length")
slow_length = input.int(26, title="Slow Length")
src2 = input.source(close, title="Source")
signal_length = input.int(9, title="Signal Smoothing", minval=1, maxval=50)
sma_source = input.bool(false, title="Simple MA (Oscillator)")
sma_signal = input.bool(false, title="Simple MA (Signal Line)")
// プロットカラー
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = color.green
col_signal = color.red
// 計算 (ta. 名前空間への移行)
fast_ma = sma_source ? ta.sma(src2, fast_length) : ta.ema(src2, fast_length)
slow_ma = sma_source ? ta.sma(src2, slow_length) : ta.ema(src2, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
plot(macd, title="MACD", color=color.new(col_macd, 0))
plot(signal, title="Signal", color=color.new(col_signal, 0))貼り付け終わったら先ほどと同じように、
「保存」→好きなスクリプト名を入力→「保存」→「チャートに追加」とクリックします。
最後に画面右上の「×」を押して、Pineエディタを閉じます。

これで無料アカウントで、TradingViewに移動平均線、ボリンジャーバンド、出来高プロファイル、RSI、MACDが表示できるようになりました。

おまけ(出来高の表示)
初期設定で表示されているかもしれませんが、出来高が表示されないよ!という方のために出来高の表示方法も書いておきます。
画面の上部にある「インジケーター」をクリックし、検索ボックスに「volume」と入力すると、「Volume(出来高)」というインジケーターが表示されます。それをクリックするとチャートに出来高が表示されるようになります。

おわりに
TradingViewで有料アカウントにアップグレードせずに、3つ以上のインジケーターを表示する方法をお伝えしました。
TradingViewが好きだけど、有料にするかどうか迷っている!という方は是非試しくてみてください。そして投資で儲けた暁には、有料アカウントにアップグレードして下さればTradingView様も喜んで更なる有益ツールを開発して下さると思います(ノ≧ڡ≦)☆
最後までお読みいただきありがとうございました。


コメント