マルチタイム表示できるEMAとSMA6本インジケーター作った件

マルチタイムフレームEMASMAインジサムネ (1) 無料インジケーター

チャートを見ていると「うわ 5分見てるけどこれ1時間足だとEMAどの辺にあるんだろ」

って時ありませんかね?自分だけですかね

 

例えばみんな大好き200EMAとかだと、短い時間足で確認して、長い時間足で~とかっていちいち切り替えるのがかなり面倒。

そこで、どの時間足でチャートを見てもマルチタイムフレーム機能で。指定した時間足のEMAやSMAを表示させるインジケーター作りました。

マルチタイムフレームEMA/SMA

マルチタイムフレームEMASMAインジ

コチラが実際にチャートに表示しインジケーター。

最大6本のMAラインが表示されています。

 

これだと良く分からないと思いますが、

マルチタイムフレームEMASMAインジ設定 (1)

このようにパラメータ画面を見ると分かりやすいですかね。

 

まず「MAタイプ」でEMAかSMAかを選べます。1本ごとに設定可能です。

次に「時間枠」。これでどの時間枠のMAを表示させるかを決めます。

MA期間はそのままの意味ですね。

 

例えば時間枠を「1時間」にして、200EMAを設定しておけば、どの時間足でインジケーターを見ても「1時間足の200EMA」が表示されている。

というものです。

マルチタイムフレームMAのコード

//@version=5
indicator("Multi-Timeframe Moving Averages", overlay=true)

// MA1の設定
ma1_type = input.string("EMA", "MA1 タイプ", options=["EMA", "SMA"], group="MA1")
ma1_tf = input.timeframe("D", "MA1 時間枠", group="MA1")
ma1_length = input.int(20, "MA1 期間", minval=1, group="MA1")
ma1_color = input.color(color.new(color.blue, 0), "MA1 色", group="MA1")

// MA2の設定
ma2_type = input.string("EMA", "MA2 タイプ", options=["EMA", "SMA"], group="MA2")
ma2_tf = input.timeframe("240", "MA2 時間枠", group="MA2")
ma2_length = input.int(50, "MA2 期間", minval=1, group="MA2")
ma2_color = input.color(color.new(color.red, 0), "MA2 色", group="MA2")

// MA3の設定
ma3_type = input.string("EMA", "MA3 タイプ", options=["EMA", "SMA"], group="MA3")
ma3_tf = input.timeframe("60", "MA3 時間枠", group="MA3")
ma3_length = input.int(100, "MA3 期間", minval=1, group="MA3")
ma3_color = input.color(color.new(color.green, 0), "MA3 色", group="MA3")

// MA4の設定
ma4_type = input.string("EMA", "MA4 タイプ", options=["EMA", "SMA"], group="MA4")
ma4_tf = input.timeframe("15", "MA4 時間枠", group="MA4")
ma4_length = input.int(200, "MA4 期間", minval=1, group="MA4")
ma4_color = input.color(color.new(color.orange, 0), "MA4 色", group="MA4")

// MA5の設定
ma5_type = input.string("EMA", "MA5 タイプ", options=["EMA", "SMA"], group="MA5")
ma5_tf = input.timeframe("5", "MA5 時間枠", group="MA5")
ma5_length = input.int(10, "MA5 期間", minval=1, group="MA5")
ma5_color = input.color(color.new(color.purple, 0), "MA5 色", group="MA5")

// MA6の設定
ma6_type = input.string("EMA", "MA6 タイプ", options=["EMA", "SMA"], group="MA6")
ma6_tf = input.timeframe("1", "MA6 時間枠", group="MA6")
ma6_length = input.int(5, "MA6 期間", minval=1, group="MA6")
ma6_color = input.color(color.new(color.yellow, 0), "MA6 色", group="MA6")

// MA計算関数
get_ma(src, length, tf, ma_type) =>
    ma = request.security(syminfo.tickerid, tf, 
         ma_type == "EMA" ? ta.ema(src, length) : ta.sma(src, length), 
         gaps=barmerge.gaps_on)
    ma

// 各MAの計算
ma1 = get_ma(close, ma1_length, ma1_tf, ma1_type)
ma2 = get_ma(close, ma2_length, ma2_tf, ma2_type)
ma3 = get_ma(close, ma3_length, ma3_tf, ma3_type)
ma4 = get_ma(close, ma4_length, ma4_tf, ma4_type)
ma5 = get_ma(close, ma5_length, ma5_tf, ma5_type)
ma6 = get_ma(close, ma6_length, ma6_tf, ma6_type)

// プロット
plot(ma1, title="MA 1", color=ma1_color, linewidth=2, style=plot.style_line)
plot(ma2, title="MA 2", color=ma2_color, linewidth=2, style=plot.style_line)
plot(ma3, title="MA 3", color=ma3_color, linewidth=2, style=plot.style_line)
plot(ma4, title="MA 4", color=ma4_color, linewidth=2, style=plot.style_line)
plot(ma5, title="MA 5", color=ma5_color, linewidth=2, style=plot.style_line)
plot(ma6, title="MA 6", color=ma6_color, linewidth=2, style=plot.style_line)

 

シンプルなインジケーターですが、そこそこ使い道あると思います。

とりあえず最大6本ですが、需要あれば増やせるので必要な人はコメントなどに残しておいてください。

コメント

タイトルとURLをコピーしました