【無料】4本のSMA EMAローソク足クロスでアラートインジケーター

4MAcCROSSサムネイル 無料インジケーター

TradingView用のインジケーターです。

SMAとEMAが切り替えられるMAが4本。その4本いずれかとローソク足がクロスした時点でアラートが鳴るようになっています。

 

4MAcCROSSインジケーター画面

こんな感じ。

一見普通のMA(移動平均線)が表示されているインジケーターですが、MAにローソク足がクロスすることで鳴るアラートを設定できます。

4MAcCROSSパラメータ画面

MAはそれぞれ

  • MA1
  • MA2
  • MA3
  • MA4

と4本用意してあります。

MAはEMAとSMAを切り替え可能です。

 

MA1~4は、期間を調節できるので好みで設定してください。

 

4MAcCROSSスタイル画面

スタイル画面はコチラ。

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とかだと、短い時間足で確認して、長い時間足で~とかっていちいち切り替えるのがかなり面...

コメント

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