多くの海外のFX手法で使われるインジケーター。
Zero Lag MA Trend Levels Chart Prime。
トレーディングビューで調べてみても、すでに利用者も多い人気のインジケーターです。
とても素晴らしいインジケーターなのですが、アラートが付いてないのが使いにくい。。
そこで改造しました。
Zero Lag MA Trend Levels Chart Prime

トレーディングビューで探して導入するとこんな感じになります。
ザックリ説明すると、大きな動きが起きてオーダーブロックが発生。
そのオーダーブロックに一度入るけど、ヒゲで押し返されたときにサインが出るというインジケーターですね。
オーダーブロック発生で♦マーク。BUYかSELLで▲マークが出ます。
オーダーブロックって狙っていてもそのまま貫通して「オイッ!!!」ってなることありますが、リバウンド確認してサインが出るのでとっても合理的ではないでしょうか。

Zero Lag MA アラート付けて改造
Zero Lag MA はとってもいいインジだと思うのですが、アラートがとっても使いにくい。
交差?すると鳴るようにできたりしますが設定が大変。
使えるアラートがないとチャートに張り付いていないといけないのでトイレにも行けない。
ということで使いやすいアラート機能つけました。コピーの際は一言コメントなど頂けるととっても嬉しいです。
※2025/9 表示エラーが出ていたので修正しました。(修正済み)
//@version=5
indicator("ZLMA Trend", overlay = true, max_lines_count = 500, max_boxes_count = 500)
// User inputs
int length = input.int(15, "Length")
bool show_levl = input.bool(true, "Trend Levels")
color up = input.color(#30d453, "+", group = "Colors", inline = "i")
color dn = input.color(#4043f1, "-", group = "Colors", inline = "i")
var box box1 = box(na)
series float atr = ta.atr(200)
// Calculations
series float emaValue = ta.ema(close, length)
series float correction = close + (close - emaValue)
series float zlma = ta.ema(correction, length)
bool signalUp = ta.crossover(zlma, emaValue)
bool signalDn = ta.crossunder(zlma, emaValue)
// Safe box condition checks
bool crossunder_cond = na(box1) ? false : ta.crossunder(high, box.get_bottom(box1))
bool crossover_cond = na(box1) ? false : ta.crossover(low, box.get_top(box1))
color zlma_color = zlma > zlma[3] ? up : zlma < zlma[3] ? dn : na
color ema_col = emaValue < zlma ? up : dn
// Visualization
p1 = plot(zlma, color = zlma_color, linewidth = 1)
p2 = plot(emaValue, color = ema_col, linewidth = 1)
fill(p1, p2, color.new(zlma_color, 80))
method draw_box(color col, float top, float bot, float price) =>
box.new(bar_index, top, bar_index, bot, col, 1, bgcolor = color.new(col, 90), text = str.tostring(math.round(price, 2)), text_size = size.tiny, text_color = chart.fg_color, text_halign = text.align_right)
// Box and signal logic
if show_levl
// Handle new signals
if signalUp
box1 := up.draw_box(zlma, zlma - atr, close)
else if signalDn
box1 := dn.draw_box(zlma + atr, zlma, close)
// Update existing box
if not na(box1) and not (signalUp or signalDn)
box.set_right(box1, bar_index + 4)
// Triangle signals
if crossunder_cond and not signalUp[1] and not signalUp and emaValue > zlma
label.new(bar_index - 1, high[1], "▼", color = color(na), textcolor = dn, style = label.style_label_down)
if crossover_cond and not signalUp and not signalUp[1] and emaValue < zlma
label.new(bar_index - 1, low[1], "▲", color = color(na), textcolor = up, style = label.style_label_up)
plotshape(signalUp ? zlma : na, "", shape.diamond, location.absolute, color = up, size = size.tiny)
plotshape(signalDn ? zlma : na, "", shape.diamond, location.absolute, color = dn, size = size.tiny)
// Combined Alerts
alertcondition((crossover_cond and not signalUp and not signalUp[1] and emaValue < zlma) or (crossunder_cond and not signalDn[1] and not signalDn and emaValue > zlma), title="Triangle Signal ▲▼", message="{{ticker}} {{interval}}")
alertcondition(signalUp or signalDn, title="Diamond Signal ◆", message="{{ticker}} {{interval}}")
コピペで使えるはずです。

アラート画面にはこんな感じで表示されます。
このZLMA Trendインジケーターには2種類のアラートが設定されています:
- Triangle Signal ▲▼(トライアングルシグナル) 価格がトレンドレベルボックスを突破した瞬間に発動:
- ▲上向き三角: トレンドが上向きの時、価格がボックス上限を下から上に突破
- ▼下向き三角: トレンドが下向きの時、価格がボックス下限を上から下に突破
- Diamond Signal ◆(ダイヤモンドシグナル) ZLMAとEMAがクロスした瞬間に発動:
- 上昇シグナル: ZLMAがEMAを下から上に突き抜けた時
- 下降シグナル: ZLMAがEMAを上から下に突き抜けた時
BUYシグナルとSELLシグナルは、アラート項目節約するために1つにしました。
Zero Lag MAについて
値動きを取っても分かりやすくしてくれるインジケーター。単品でも使えるんじゃないかと思うぐらいです。
例えば損切直近安値にして、利確ライン1:1.5とか。
他にもEMA200より上にあるときにBUYサインだけに従ってインするとか。
インジ自体はとても機能的なので、後は自分を制御できるような他のインジの組み合わせやルール作り次第で期待が持てそうです。
使う時間足、通貨によっても変わるハズなので、必ずご自身で確認してから使用してくださいね。


コメント
はじめまして
これって何分足がいいですかね?
気づかず遅くなりました。扱う通貨によって合う時間足は変わると思います。
普段使う通貨、自分に合った時間足に付けて目視で確認してみるとイイかと思いますよ。