The number your prop floor is built on was never in your terminal
Your prop firm's daily floor is a percentage of the account value at the daily reset, the balance for most firms and the equity for some. If MT5 was not running at that exact moment, and most of the time it was not, that number exists nowhere in the terminal. You cannot read it back, so most monitors substitute something else, and the substitution errs in the wrong direction on exactly the day it matters: after a losing morning.
Here is the whole problem. You attach a monitor at 14:00 server time, after giving back 1.4% since the reset. The monitor takes the balance it can see right now as the day start. The daily floor it draws is 1.4% lower than the real one. The panel says you have room. You do not.

Why the obvious fix does not work
The instinct is to snapshot. Store the balance at the reset hour, keep it in a global variable, done.
It fails for boring operational reasons, and it fails silently. The terminal is not running at 00:00: VPS reboots, Windows updates, a restart after changing inputs, a Monday attach after a weekend of nothing. The indicator was attached mid-session, so there is no snapshot to read because nothing was there to take it. And the stored value is one bad restart away from being wrong for the rest of the day, with nothing on screen saying so.
A snapshot only works if the observer was present. A drawdown monitor has to assume it was not.
Reconstruct backwards instead
The balance at any past moment is recoverable, because every balance change in MT5 leaves a deal record. Take the current balance, subtract everything that has moved it since the reset, and you have the reset-hour balance. It does not matter when you attach, and it survives every restart, because the answer is rebuilt rather than remembered.
The attached script is that reconstruction, complete and self-contained. It reads the account and prints one line. It opens no trades and carries no signal.
Note the failure branch in it. If HistorySelect returns false, the function returns and keeps the previous value rather than writing a half-scanned one. A monitor that computes a floor from an incomplete history read is worse than a monitor that says "sync" for two seconds.
The deal records that catch people out
DEAL_ENTRY_OUT and DEAL_ENTRY_OUT_BY. Subtract profit, swap and commission together. This is the realized move on the balance.
DEAL_ENTRY_IN. Ignore it. Opening a position does not settle to balance.
DEAL_TYPE_BALANCE. Subtract it separately as cash. A deposit is not performance and must not shift the floor.
DEAL_TYPE_CREDIT. Ignore it. Prop credit is capital, not a result.
Two details worth having in front of you. Partial closes each produce their own closing deal and each one is summed, not deduplicated, because each one really did move the balance. And if your broker books commission on the entry deal rather than the exit, that portion is already out of the balance but never appears in the closing sum, so the reconstructed day start comes out low by exactly that commission. The floor drawn from it sits low by the same fraction, which is the optimistic side, not the conservative one. It is commission-sized, and you should know it is there.
One more limit, and it is the harder one. Deal history reconstructs the balance at the reset, not the equity. If a position was open across the reset and your firm measures the day from equity, the two differ by whatever was floating at that moment, and no history scan recovers it. Exact for a flat account, approximate otherwise.
The reset hour is not your midnight
The anchor has to be built in the same clock the deals are stamped in, which is broker server time. TimeCurrent, never TimeLocal and never TimeGMT.
And the naive construction breaks for any reset hour that is not 00:00. After setting hour, minute and second on today's date, you have to check whether the anchor you just built is still in the future, and step back a day if it is. Without that check, a 22:00 reset at 06:00 in the morning anchors to a boundary that has not happened yet and the whole day scans as empty. The attached script has the two lines that handle it.
There is a further caveat no code can fix. Your firm's reset is defined in its own time zone, your server is in another, and the two shift relative to each other for roughly two weeks after each daylight-saving change. No tool can resolve that for you, so the honest thing is to state it and make you verify.
Two more things worth knowing
Credit is capital on most prop accounts. Many funded accounts arrive as a small balance plus a large credit line. ACCOUNT_EQUITY already includes credit, so if you build your drawdown from balance alone the floor collapses to somewhere near zero and every reading is meaningless. Treat credit as starting capital, and do not add it twice on the equity side.
The binding floor is the highest one, not the lowest. People read "floor" and reach for the minimum. The floor that ends the account is whichever enabled floor sits closest below current equity, so the correct selection is the maximum of the active floors. On a good day the trailing maximum-drawdown floor binds. After a sharp morning the daily floor overtakes it, and the number you have been watching is no longer the one that will stop you.
The number that genuinely cannot be recovered
Day-start balance is recoverable. The historical equity peak is not, because floating profit on positions that opened and closed between two bars leaves no trace you can replay. Deal history gives you the balance curve, not the equity curve.
So there are two options. Backfill a fake equity line from closed deals, or draw nothing before the bar you attached and say so. The first one is a lie that flatters the tool. The second is the only version I am willing to ship, so the peak is persisted forward per login from first attach and the plot begins where the observation began.
What it will not do
It reads the account and the deal history, nothing else, with no DLL and no network. It sends no order of any kind, so there is no activity for it to conceal from anyone even if that were the intention, and it is not. The firm presets in it are a convenience, copied from published rule pages that change without telling you, so treat every one of them as a starting value to check rather than a figure to trust.
No martingale. No grid. No averaging down.
The implementation of everything above is Drawdown Floor TechnoTrader on the MQL5 Market, and it is free.


