任意の時間足移動平均線を表示するPineスクリプト

移動平均線って、表示しているチャートの時間足を変えると、変わっちゃいますよね~
変えたくないな~ってことありません?

ないものは作ればいい!

という訳で、第2弾です。

目次

機能

盛大に盛り込みましたw
異なる時間足の移動平均線を同時に表示できます。

  • 表示しているチャートの時間足と関係なく、任意の時間足の移動平均線を表示できます。
  • 5種類の移動平均線を表示できます。
  • 期間、種類(SMA or EMA or WMA)を選べます。
  • 残念な点もあり⇒例えば、1時間足に週足のSMAを表示すると、最新のローソク足まで移動平均線が届かないです。

表示しているチャートの時間足を変えても、移動平均線は変わらないところがポイントです。

設定できること(上から順)

  • 表示のON/OFF
  • 移動平均線の期間
  • 移動平均線の種類(SMA, EMA, WMA)

設定できること(上から順)

  • 移動平均線の色、太さ

    表示のON/OFFは、ここのチェックボックスか一つ前の画像のチェックボックスで操作できます。

残念なところ

4時間足チャートに
上から、4時間足SMA、日足SMA、週足SMA
を表示したところ。
上位足になればなるほど、現在のローソク足まで届かないです。

これは、仕方ないかなと考えています。
例えば、週足のローソク1本には日足で5本、4時間足で30本な訳で、
その分、現在のローソク足まで届かないってことになるんだと思います。

コード

//@version=5
indicator('MTF_MA', shorttitle='MTF-MA', overlay=true)

//inputs
onoff_A = input(true, title='MA_A ON/OFF')
onoff_B = input(true, title='MA_B ON/OFF')
onoff_C = input(true, title='MA_C ON/OFF')
onoff_D = input(true, title='MA_D ON/OFF')
onoff_E = input(true, title='MA_E ON/OFF')

period_A = input(title='Time Frame A period', defval=20)
period_B = input(title='Time Frame B period', defval=20)
period_C = input(title='Time Frame C period', defval=20)
period_D = input(title='Time Frame D period', defval=20)
period_E = input(title='Time Frame E period', defval=20)

time_f_A = input.timeframe(title='Time Frame A', defval='15')
time_f_B = input.timeframe(title='Time Frame B', defval='60')
time_f_C = input.timeframe(title='Time Frame C', defval='240')
time_f_D = input.timeframe(title='Time Frame D', defval='D')
time_f_E = input.timeframe(title='Time Frame E', defval='W')

// MA種類を選択
ma_type_A = input.string("SMA", title="MA Type for A", options=["SMA", "EMA", "WMA"])
ma_type_B = input.string("SMA", title="MA Type for B", options=["SMA", "EMA", "WMA"])
ma_type_C = input.string("SMA", title="MA Type for C", options=["SMA", "EMA", "WMA"])
ma_type_D = input.string("SMA", title="MA Type for D", options=["SMA", "EMA", "WMA"])
ma_type_E = input.string("SMA", title="MA Type for E", options=["SMA", "EMA", "WMA"])

// 移動平均線の計算
ma_A = ma_type_A == "SMA" ? ta.sma(close, period_A) : ma_type_A == "EMA" ? ta.ema(close, period_A) : ta.wma(close, period_A)
ma_B = ma_type_B == "SMA" ? ta.sma(close, period_B) : ma_type_B == "EMA" ? ta.ema(close, period_B) : ta.wma(close, period_B)
ma_C = ma_type_C == "SMA" ? ta.sma(close, period_C) : ma_type_C == "EMA" ? ta.ema(close, period_C) : ta.wma(close, period_C)
ma_D = ma_type_D == "SMA" ? ta.sma(close, period_D) : ma_type_D == "EMA" ? ta.ema(close, period_D) : ta.wma(close, period_D)
ma_E = ma_type_E == "SMA" ? ta.sma(close, period_E) : ma_type_E == "EMA" ? ta.ema(close, period_E) : ta.wma(close, period_E)

// 各タイムフレームでの移動平均線
MA_A = request.security(syminfo.tickerid, time_f_A, ma_A, barmerge.gaps_on)
MA_B = request.security(syminfo.tickerid, time_f_B, ma_B, barmerge.gaps_on)
MA_C = request.security(syminfo.tickerid, time_f_C, ma_C, barmerge.gaps_on)
MA_D = request.security(syminfo.tickerid, time_f_D, ma_D, barmerge.gaps_on)
MA_E = request.security(syminfo.tickerid, time_f_E, ma_E, barmerge.gaps_on)

// プロット
plot(onoff_A ? MA_A : na, color=color.new(color.white, 0), linewidth = 2, title='MA_A')
plot(onoff_B ? MA_B : na, color=color.new(color.green, 0), linewidth = 2, title='MA_B')
plot(onoff_C ? MA_C : na, color=color.new(color.red, 0), linewidth = 2, title='MA_C')
plot(onoff_D ? MA_D : na, color=color.new(color.aqua, 0), linewidth = 2, title='MA_D')
plot(onoff_E ? MA_E : na, color=color.new(color.blue, 0), linewidth = 2, title='MA_E')
むさし先輩

5個も必要なけりゃ、
コードを消せば、
減らせるぜ。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次