Join our fan page
- Views:
- 73
- Rating:
- Published:
-
Need a robot or indicator based on this code? Order it on Freelance Go to Freelance
An indicator is recalculated on every tick. If it simply checks that price is above a level and shows a popup, the popup comes back on every tick for as long as the condition holds. That is why people complain that an indicator buries them in alerts, and why attaching one to a chart can throw dozens of windows at once for bars that closed long ago.
AlertKit is a small class that decides whether an alert goes out or not. You include it, call one method when your condition is met on a closed bar, and it does the rest. It sends one alert per event and bar, keeps a separate memory for every event name so a buy alert never blocks a sell alert, and stays silent about everything older than the bar it started on. It can show a popup, send a push notification or an email, or play a sound, and it can keep a pause between alerts if you want one.

Why it keeps a log
Alerts do not fire in the strategy tester at all, so the usual way of checking an indicator does not work here, and in practice alert logic is shipped without any check. To fix that, AlertKit can write every decision it makes to a CSV file, including the alerts it refused and the reason for each. You can open that file and see exactly what happened on every bar.
What it changed on a real chart
I ran the example indicator on EURUSD H1 from June to August 2026. During those three months it asked the module 6 419 times whether to alert. The module sent 27 alerts, one for each real break of the range, and held back the other 6 392 calls. Without it the same indicator would have shown about 238 popups for every break.
Those repeats come from two places. Some are ticks inside one bar, and the module removes them by itself. The rest are bars on which price just keeps sitting beyond the level. A break is a crossing, not a place, so the example indicator calls the module only on the bar where the crossing happens. You need both parts, and if you skip either one the flood comes back.
How to use it in your own indicator
#include <AlertKit.mqh>
CAlertKit alerts;
int OnInit()
{
alerts.Channels(true, false, false, false, "alert.wav");
alerts.Init(_Symbol, iTime(_Symbol, _Period, 1), "");
return(INIT_SUCCEEDED);
}
// then, on a closed bar
alerts.Fire("break_up", time[closed], "closed above the level");
The four switches in Channels turn on the popup, push, email and sound. The event name is any text you like, and each name has its own memory. If you call Fire again for the same event on the same bar, it returns false and writes the reason to the log.
Files
AlertKit.mqh is the module itself and goes to MQL5\Include. RangeBreakAlert.mq5 is a working indicator built on it. It draws the highest high and the lowest low of the last N completed days and alerts when a closed bar breaks one of them. To get the log, type a file name such as alerts.csv in the last input of the indicator, attach it to a chart or run it in the strategy tester, and open the file in the MQL5\Files folder.
The indicator only draws two lines and never places orders. Nothing here is about profit, the code is only about how alerts behave.
SessionEdgeTester - does a time-of-day rule beat spread and swap?
Tests "buy at hour X, exit Y hours later" on your broker's own history after spread, commission and swap, with an out-of-sample split, weekday/year breakdown and an all-hours baseline.
BotWatchdog - phone alerts when your EAs silently stop working
Push notifications when the connection drops, algo trading is switched off, an EA leaves its chart, the account changes, a position has no stop, equity or margin hit a limit - plus a daily heartbeat.
Rolling VWAP Deviation Regime Filter
A regime-classification oscillator that measures how far, and how persistently, price deviates from a rolling volume-weighted VWAP in standard-deviation units, separating trending conditions from ranging ones.
TradeGuard - Reliable Order Execution: No Duplicates, Safe Retries, Restart Recovery
A one-file library that handles how an EA trades: pre-trade checks, normalisation to broker limits, safe retries, one order per signal, isolation by magic number and state recovery after a restart. Lot by risk, daily loss limit and equity floor included. Verified in the Strategy Tester.