TradingView用のインジケーターです。
SMAとEMAが切り替えられるMAが4本。その4本いずれかとローソク足がクロスした時点でアラートが鳴るようになっています。
こんな感じ。
一見普通のMA(移動平均線)が表示されているインジケーターですが、MAにローソク足がクロスすることで鳴るアラートを設定できます。
MAはそれぞれ
- MA1
- MA2
- MA3
- MA4
と4本用意してあります。
MAはEMAとSMAを切り替え可能です。
MA1~4は、期間を調節できるので好みで設定してください。
スタイル画面はコチラ。
MA1~4の表示非表示が切り替えられ、太さや色を好みで設定できます。
アラート画面がコチラ。
- MA1とのクロスでアラート
- MA2とのクロスでアラート
- MA3とのクロスでアラート
- MA4とのクロスでアラート
と4種類用意してあります。
「MA1とのクロスでアラート」は、設定したMA1とローソク足がクロスするとアラートが鳴るという具合ですね。
ローソク足が確定してからのアラートを設定した場合、ローソク足のヒゲではなく実体がクロスしていたらアラートが鳴るようになっています。
ローソク足確定ではなく、クロスしたタイミングでアラートが鳴る設定をしている場合はローソク足がMAに触れたタイミングでアラートが鳴るようになっています。
ご自身のロジックに合わせて使い分けてください。
4MA C(candle)CROSSアラート コード
※2025/9 表示がズレていたので、修正しました。
クロスでサインの表示非表示もできます。
//@version=5 indicator("4MA Cross Indicator", shorttitle="4MA 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") // MA4設定 maType4 = input.string("EMA", title="MA4 Type", options=["EMA", "SMA", "WMA", "RMA"]) length4 = input.int(50, title="MA4 Length", minval=1, maxval=500) color4 = input.color(color.purple, title="MA4 Color") // 表示設定 showMA1 = input.bool(true, title="Show MA1") showMA2 = input.bool(true, title="Show MA2") showMA3 = input.bool(true, title="Show MA3") showMA4 = input.bool(true, title="Show MA4") // 線の太さ設定 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") // 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) ma4 = calcMA(src, length4, maType4) // 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) plot(showMA4 ? ma4 : na, title="MA4", color=color4, 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) crossUpMA4 = ta.crossover(src, ma4) crossDownMA4 = ta.crossunder(src, ma4) // クロスシグナルの表示 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↓") plotshape(showCrossUp and crossUpMA4, title="MA4 Cross Up", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.lime, text="4↑") plotshape(showCrossDown and crossDownMA4, title="MA4 Cross Down", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red, text="4↓") // アラート条件(個別) 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}})!") alertcondition(crossUpMA4, title="MA4 Cross Up", message="Price crossed above MA4 ({{maType4}} {{length4}})!") alertcondition(crossDownMA4, title="MA4 Cross Down", message="Price crossed below MA4 ({{maType4}} {{length4}})!") // 統合アラート条件 anyCrossUp = crossUpMA1 or crossUpMA2 or crossUpMA3 or crossUpMA4 anyCrossDown = crossDownMA1 or crossDownMA2 or crossDownMA3 or crossDownMA4 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!") // 情報テーブル(現在の価格と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) // MA4情報 ma4Status = src > ma4 ? "Above" : src < ma4 ? "Below" : "Equal" ma4StatusColor = src > ma4 ? color.lime : src < ma4 ? color.red : color.gray table.cell(infoTable, 0, 4, "MA4(" + str.tostring(length4) + ")", text_color=color4) table.cell(infoTable, 1, 4, str.tostring(ma4, "#.####"), text_color=color.black) table.cell(infoTable, 2, 4, ma4Status, text_color=ma4StatusColor)
他にもマルチタイムフレームでEMA SMA表示できるインジも作りました。

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