PulseWatch · Guides
Updated October 2026
MetaTrader will happily let your account die in silence. The platform has push notifications, but they mostly cover trade executions — there is no built-in "your margin level just crossed 300%" or "your VPS has been quiet for two minutes" message. By the time you find out the usual way, it's a stop-out email from your broker.
Traders standardise on Telegram for this because it's free, instant, works on every device, and has a clean bot API. Here are the alerts worth having, the ways to get them, and the handful of design details that decide whether an alert system actually saves you money or just trains you to swipe notifications away.
Worth being precise, because it's the number every margin alert is built on:
margin level % = equity ÷ used margin × 100
Equity is balance plus floating P/L, so the ratio moves in real time as open positions swing. Used margin is what the broker has locked up to hold your current positions. Most brokers issue a margin call somewhere around 100% and begin force-closing positions (stop-out) around 50%, though both numbers vary by broker and instrument — check your own contract specs rather than assuming.
There's a trap here that catches home-made alert scripts. With no open positions, used
margin is zero, and the ratio is undefined — not 0%. If your script computes
equity / margin without guarding the divide, you get a division by zero, and if it
"helpfully" substitutes 0 you now have a critical margin alert firing on an idle account with
no risk whatsoever. The correct behaviour is to report no margin level at all when nothing is
open, and to suppress margin alerts entirely in that state.
Everyone building alerts arrives at the same two rules: fire on transitions, not on every reading, and add a cooldown so a flapping account can't spam you. Both are right. Combining them naively breaks the single most important alert you have.
Consider a margin collapse. Equity falls, and on the way down it crosses your warning level first, then your critical level moments later. With a blanket cooldown — say five minutes between messages per account — here is what you receive:
14:02:10 margin level 280% → ⚠️ warning sent
14:02:41 margin level 140% → critical, but it's 31 seconds since the last message — suppressed
14:03:12 margin level 110% → still critical, still inside the cooldown — suppressed
14:05:48 stop-out
You got a "warning" and then silence, during precisely the four minutes you needed to act. And if the account happens to recover before the cooldown expires, you receive a cheerful "back to normal" message having never been told it went critical at all.
The fix is that a cooldown should suppress repetition, never escalation. Rank the conditions by severity and let any move to a worse one through immediately:
| Transition | Should it wait for the cooldown? |
|---|---|
| ok → warning | No — it's a new problem |
| warning → critical | Never. This is the one that must always get through |
| critical → warning | Yes — things are improving, there's no hurry |
| any → offline | Yes — an offline/online flap is exactly what the cooldown is for |
| any → ok (recovery) | No — recoveries are rare and worth knowing |
If you're writing your own alerting, this is the detail worth getting right before any other. It's invisible in testing — you'll never trip it manually — and it only shows up on the day it costs you.
An EA runs inside MetaTrader. When the terminal closes, the VPS reboots, Windows installs an update, or the process hangs, the EA stops running — and a stopped EA cannot send a farewell message. This is the structural reason the offline alert can't be built into the terminal, and why it's the alert do-it-yourself setups almost always lack.
The only way to detect it is from outside: something that expects regular updates and notices when they stop. The EA pushes a snapshot on a timer — typically every few seconds, and down to one second if you want — and the server flags the account as offline once nothing has arrived for a defined window. 90 seconds is a reasonable default: long enough to ride out a brief network blip or a slow broker reconnect, short enough that you hear about a dead VPS while you can still do something about it.
One nuance that confuses people: a quiet market is not a quiet terminal. Because the EA reports on a timer rather than on incoming price ticks, it keeps pushing through the weekend, through holidays, and through any instrument that simply isn't moving. So silence genuinely means the terminal or the machine is down — not that the market closed. An alert system built on tick events instead of a timer can't tell those apart, and will cry wolf every Saturday morning.
You can write an EA that checks margin every tick and calls
api.telegram.org via WebRequest. Free and instructive, but there are traps: you must
debounce (or you'll get a message per tick), handle the day rollover in server time, and —
critically — a dead terminal can't send you anything. The offline alert, the
one that saves real money, is impossible from inside the terminal alone.
Two more that bite later: you'll need to whitelist the URL under Tools → Options → Expert Advisors → Allow WebRequest for listed URL or every send fails with error 4014/4060, and you'll be running one bot per terminal, so monitoring five accounts means five copies of the same configuration to keep in sync.
Some copier suites bolt on notifications. If you already run one, check what it covers — usually trade events, rarely margin thresholds or offline detection, and rarely across many accounts at once.
A push EA streams your account state to a server; the server evaluates thresholds and messages your Telegram. Because the logic runs outside the terminal, it can also detect the terminal going silent — typically within 90 seconds — and message you on recovery too. One Telegram link covers all your accounts.
PulseWatch does exactly this. Margin warning and critical thresholds (per-user, transition-only, with escalation to critical exempt from the cooldown), daily drawdown as a percentage of the broker-day's opening equity with cashflows excluded, offline/recovery detection, and a daily digest at your broker's midnight. Setup is: sign up, attach a read-only EA, tap one link to connect Telegram. First account free.
A reference for the alert set described above, as PulseWatch implements it. If you're building your own, it's a reasonable specification to copy.
| Alert | Condition | Repeat behaviour |
|---|---|---|
| Margin warning | Margin level falls below your warning threshold (default 300%) | Once per crossing |
| Margin critical | Margin level falls below your critical threshold (default 150%) | Once per crossing, never delayed by a cooldown |
| Daily drawdown | Equity falls your chosen % below the broker-day's opening equity, with deposits and withdrawals excluded | At most once per account per day |
| Offline | No update from the terminal for 90 seconds | Once, then cooled down to survive a flapping connection |
| Recovered | Condition returns to normal from any of the above | Once per recovery |
| Daily digest | Your broker day rolls over | Once per day, optional |
Worth asking of any service you rely on, because the naive answer is unpleasant. Alert state — "this account was last seen in warning" — usually lives in memory. If it's wiped on restart and the system treats every account as newly observed, a routine deploy replays every currently open condition as a fresh alert, and you wake up to a screen of notifications describing nothing new.
The correct behaviour is to re-baseline silently: on the first reading after a restart, record whatever condition each account is in without messaging, and only alert on the next genuine change. The honest trade-off is that a transition occurring during the restart window itself is missed. That's a far better failure than a storm, but it's a real gap, and it's another reason not to treat alerts as a safety net.
Why Telegram and not email or SMS? Email is slow and filtered; SMS costs money and truncates. Telegram delivers in about a second, free, with full text — and traders tend to have it open already.
Do I need to make my own bot? With DIY, yes (via BotFather). With a monitoring service, you usually just tap a deep link that connects your chat.
Will I get spammed during a volatile session? Not if alerts are transition-based: one message when a threshold is crossed, one when it recovers, nothing in between. The one exception that should always get through immediately is an escalation to a worse level.
What should I set the thresholds to? Most brokers margin-call around 100% and stop out around 50%. Warning at 300% and critical at 150% leaves room to act before either. Run low leverage and tight stops and you can lower both; hold positions overnight through news and you should raise them.
Why does my account show no margin level? Because nothing is open. Margin level is equity over used margin, and with no positions the denominator is zero, so the figure is undefined rather than 0%. Anything showing 0% there is about to alert you for no reason.
Can an EA tell me its own terminal went offline? No — it dies with the terminal. That detection has to live outside the terminal.
Will a server restart flood me? It shouldn't. A sensible system records each account's current condition silently on the first reading after a restart, and only messages you on the next genuine change — so a deploy or reboot doesn't replay every open condition as a fresh alert. The trade-off is that a change happening during the restart itself is missed.
More guides: Monitor multiple MT4/MT5 accounts · Daily drawdown alerts for funded accounts · How to tell if your EA stopped trading · Run multiple MT5 accounts at once