TradingView用のインジケーターです。
SMAとEMAが切り替えられるMAが3本。その3本いずれかとローソク足がクロスした時点でアラートが鳴るようになっています。
一見普通のMA(移動平均線)が表示されているインジケーターですが、MAにローソク足がクロスすることで鳴るアラートを設定できます。
MAはそれぞれ
- MA1
- MA2
- MA3
と3本用意してあります。
MAはEMAとSMAを切り替え可能です。
ちなみに、全く同じような機能で4本のMAラインを設定できるインジケーターもあります。
≫【無料インジ】4本のSMA EMAローソク足クロスでアラート
え?そしたら4本の方がイイじゃん!という意見の方はまさにその通り。
普通に考えて4本の方が調節できて便利なのですが、なんとなくスタイリッシュな3本を作ってみただけです。
MA1~3は、期間を調節できるので好みで設定してください。
スタイル画面はコチラ。
MA1~3の表示非表示が切り替えられ、太さや色を好みで設定できます。
アラート画面がコチラ。
- MA1とのクロスでアラート
- MA2とのクロスでアラート
- MA3とのクロスでアラート
と3種類用意してあります。
「MA1とのクロスでアラート」は、設定したMA1とローソク足がクロスするとアラートが鳴るという具合ですね。
ローソク足が確定してからのアラートを設定した場合、ローソク足のヒゲではなく実体がクロスしていたらアラートが鳴るようになっています。
ローソク足確定ではなく、クロスしたタイミングでアラートが鳴る設定をしている場合はローソク足がMAに触れたタイミングでアラートが鳴るようになっています。
ご自身のロジックに合わせて使い分けてください。
3MA C(candle)CROSSアラート コード
※2025/9 表示がズレていたので修正しました。
//@version=5 indicator("3MA Cross Indicator", shorttitle="3MA Cross", overlay=true) // インプット設定 src = input.source(close, title="Source") // MA1設定 maType1 = input.string("EMA", title="MA1 Type", options=["EMA", "SMA", "WMA", "RMA"]) length1 = input.int(5, title="MA1 Length", minval=1, maxval=500) color1 = input.color(color.blue, title="MA1 Color") // MA2設定 maType2 = input.string("EMA", title="MA2 Type", options=["EMA", "SMA", "WMA", "RMA"]) length2 = input.int(10, title="MA2 Length", minval=1, maxval=500) color2 = input.color(color.red, title="MA2 Color") // MA3設定 maType3 = input.string("EMA", title="MA3 Type", options=["EMA", "SMA", "WMA", "RMA"]) length3 = input.int(20, title="MA3 Length", minval=1, maxval=500) color3 = input.color(color.green, title="MA3 Color") // 表示設定 showMA1 = input.bool(true, title="Show MA1") showMA2 = input.bool(true, title="Show MA2") showMA3 = input.bool(true, title="Show MA3") // 線の太さ設定 lineWidth = input.int(2, title="Line Width", minval=1, maxval=4) // クロスシグナル設定 showCrossUp = input.bool(true, title="Show Cross Up Signals") showCrossDown = input.bool(true, title="Show Cross Down Signals") showMAAlignment = input.bool(true, title="Show MA Alignment Signals") // MA計算関数 calcMA(source, length, maType) => switch maType "EMA" => ta.ema(source, length) "SMA" => ta.sma(source, length) "WMA" => ta.wma(source, length) "RMA" => ta.rma(source, length) => ta.ema(source, length) // デフォルト // MAの計算 ma1 = calcMA(src, length1, maType1) ma2 = calcMA(src, length2, maType2) ma3 = calcMA(src, length3, maType3) // MAのプロット plot(showMA1 ? ma1 : na, title="MA1", color=color1, linewidth=lineWidth) plot(showMA2 ? ma2 : na, title="MA2", color=color2, linewidth=lineWidth) plot(showMA3 ? ma3 : na, title="MA3", color=color3, linewidth=lineWidth) // クロス条件 crossUpMA1 = ta.crossover(src, ma1) crossDownMA1 = ta.crossunder(src, ma1) crossUpMA2 = ta.crossover(src, ma2) crossDownMA2 = ta.crossunder(src, ma2) crossUpMA3 = ta.crossover(src, ma3) crossDownMA3 = ta.crossunder(src, ma3) // MA間のクロス条件 ma1_cross_ma2_up = ta.crossover(ma1, ma2) ma1_cross_ma2_down = ta.crossunder(ma1, ma2) ma1_cross_ma3_up = ta.crossover(ma1, ma3) ma1_cross_ma3_down = ta.crossunder(ma1, ma3) ma2_cross_ma3_up = ta.crossover(ma2, ma3) ma2_cross_ma3_down = ta.crossunder(ma2, ma3) // MAアライメント条件 bullishAlignment = ma1 > ma2 and ma2 > ma3 // 上昇トレンド bearishAlignment = ma1 < ma2 and ma2 < ma3 // 下降トレンド alignmentChanged = (bullishAlignment and not bullishAlignment[1]) or (bearishAlignment and not bearishAlignment[1]) // 価格とMAのクロスシグナル表示 plotshape(showCrossUp and crossUpMA1, title="MA1 Cross Up", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.lime, text="1↑") plotshape(showCrossDown and crossDownMA1, title="MA1 Cross Down", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red, text="1↓") plotshape(showCrossUp and crossUpMA2, title="MA2 Cross Up", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.lime, text="2↑") plotshape(showCrossDown and crossDownMA2, title="MA2 Cross Down", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red, text="2↓") plotshape(showCrossUp and crossUpMA3, title="MA3 Cross Up", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.lime, text="3↑") plotshape(showCrossDown and crossDownMA3, title="MA3 Cross Down", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red, text="3↓") // MAアライメントシグナル表示 plotshape(showMAAlignment and bullishAlignment and not bullishAlignment[1], title="Bullish Alignment", location=location.belowbar, style=shape.diamond, size=size.normal, color=color.lime, text="🔥") plotshape(showMAAlignment and bearishAlignment and not bearishAlignment[1], title="Bearish Alignment", location=location.abovebar, style=shape.diamond, size=size.normal, color=color.red, text="❄️") // 背景色でトレンド表示 bgcolor(bullishAlignment ? color.new(color.lime, 95) : bearishAlignment ? color.new(color.red, 95) : na, title="Trend Background") // 価格とMAのクロスアラート alertcondition(crossUpMA1, title="MA1 Cross Up", message="Price crossed above MA1 ({{maType1}} {{length1}})!") alertcondition(crossDownMA1, title="MA1 Cross Down", message="Price crossed below MA1 ({{maType1}} {{length1}})!") alertcondition(crossUpMA2, title="MA2 Cross Up", message="Price crossed above MA2 ({{maType2}} {{length2}})!") alertcondition(crossDownMA2, title="MA2 Cross Down", message="Price crossed below MA2 ({{maType2}} {{length2}})!") alertcondition(crossUpMA3, title="MA3 Cross Up", message="Price crossed above MA3 ({{maType3}} {{length3}})!") alertcondition(crossDownMA3, title="MA3 Cross Down", message="Price crossed below MA3 ({{maType3}} {{length3}})!") // MA間のクロスアラート alertcondition(ma1_cross_ma2_up, title="MA1 crosses above MA2", message="MA1 crossed above MA2 - Bullish signal!") alertcondition(ma1_cross_ma2_down, title="MA1 crosses below MA2", message="MA1 crossed below MA2 - Bearish signal!") alertcondition(ma1_cross_ma3_up, title="MA1 crosses above MA3", message="MA1 crossed above MA3 - Strong bullish signal!") alertcondition(ma1_cross_ma3_down, title="MA1 crosses below MA3", message="MA1 crossed below MA3 - Strong bearish signal!") alertcondition(ma2_cross_ma3_up, title="MA2 crosses above MA3", message="MA2 crossed above MA3 - Trend change!") alertcondition(ma2_cross_ma3_down, title="MA2 crosses below MA3", message="MA2 crossed below MA3 - Trend change!") // MAアライメントアラート alertcondition(bullishAlignment and not bullishAlignment[1], title="Bullish MA Alignment", message="All MAs aligned bullish - Strong uptrend!") alertcondition(bearishAlignment and not bearishAlignment[1], title="Bearish MA Alignment", message="All MAs aligned bearish - Strong downtrend!") // 統合アラート条件 anyCrossUp = crossUpMA1 or crossUpMA2 or crossUpMA3 anyCrossDown = crossDownMA1 or crossDownMA2 or crossDownMA3 anyCross = anyCrossUp or anyCrossDown alertcondition(anyCrossUp, title="Any MA Cross Up", message="Price crossed above any MA!") alertcondition(anyCrossDown, title="Any MA Cross Down", message="Price crossed below any MA!") alertcondition(anyCross, title="Any MA Cross", message="Price crossed any MA!") // 情報テーブル(現在の状態) if barstate.islast var table infoTable = table.new(position.top_right, 3, 5, bgcolor=color.white, border_width=1) table.cell(infoTable, 0, 0, "MA", text_color=color.black, bgcolor=color.gray) table.cell(infoTable, 1, 0, "Value", text_color=color.black, bgcolor=color.gray) table.cell(infoTable, 2, 0, "vs Price", text_color=color.black, bgcolor=color.gray) // MA1情報 ma1Status = src > ma1 ? "Above" : src < ma1 ? "Below" : "Equal" ma1StatusColor = src > ma1 ? color.lime : src < ma1 ? color.red : color.gray table.cell(infoTable, 0, 1, "MA1(" + str.tostring(length1) + ")", text_color=color1) table.cell(infoTable, 1, 1, str.tostring(ma1, "#.####"), text_color=color.black) table.cell(infoTable, 2, 1, ma1Status, text_color=ma1StatusColor) // MA2情報 ma2Status = src > ma2 ? "Above" : src < ma2 ? "Below" : "Equal" ma2StatusColor = src > ma2 ? color.lime : src < ma2 ? color.red : color.gray table.cell(infoTable, 0, 2, "MA2(" + str.tostring(length2) + ")", text_color=color2) table.cell(infoTable, 1, 2, str.tostring(ma2, "#.####"), text_color=color.black) table.cell(infoTable, 2, 2, ma2Status, text_color=ma2StatusColor) // MA3情報 ma3Status = src > ma3 ? "Above" : src < ma3 ? "Below" : "Equal" ma3StatusColor = src > ma3 ? color.lime : src < ma3 ? color.red : color.gray table.cell(infoTable, 0, 3, "MA3(" + str.tostring(length3) + ")", text_color=color3) table.cell(infoTable, 1, 3, str.tostring(ma3, "#.####"), text_color=color.black) table.cell(infoTable, 2, 3, ma3Status, text_color=ma3StatusColor) // トレンド情報 trendStatus = bullishAlignment ? "Bullish" : bearishAlignment ? "Bearish" : "Neutral" trendColor = bullishAlignment ? color.lime : bearishAlignment ? color.red : color.gray table.cell(infoTable, 0, 4, "Trend", text_color=color.black) table.cell(infoTable, 1, 4, trendStatus, text_color=trendColor) table.cell(infoTable, 2, 4, "", text_color=color.black)
他にもマルチタイムフレームでEMA SMA表示できるインジも作りました。

マルチタイム表示できるEMAとSMA6本インジケーター作った件
チャートを見ていると「うわ 5分見てるけどこれ1時間足だとEMAどの辺にあるんだろ」 って時ありませんかね?自分だけですかね 例えばみんな大好き200EMAとかだと、短い時間足で確認して、長い時間足で~とかっていちいち切り替えるのがかなり面...
コメント