A single average spread figure blends the routine hours with the disruptive ones into one number that describes neither. To see what an entry actually costs, spread has to be measured hour by hour, not folded into a mean. Where the measurement comes from Every closed one-minute bar on a chart carries a spread value recorded at the moment the bar closed. That stored value is the raw material for the whole method: pull the M1 history already held for a symbol, and for each closed bar, read that spread. The bar still forming is excluded, since a spread reading taken mid-bar can still move before that bar itself closes. Rebuilding the picture once per closed minute, rather than on every tick, keeps it from being noisy without losing anything, because the number only stops moving once the bar does. Sorting the measurements into hours Group the measurements two ways at once: by the hour of day and by the day of the week, using each bar's own timestamp. Seven weekdays across twenty four hours makes a hundred and sixty eight buckets. The hour comes from the bar time on the broker's own server clock, and every broker sets that clock to its own offset from UTC, so the grouping is specific to the feed being measured, not a generic table borrowed from elsewhere. Printing that server-to-UTC offset once, ahead of the result, lets the hours translate to an ordinary wall clock without doing the arithmetic by hand. Three numbers, not one Inside each bucket, three statistics answer three different questions. The median marks what a typical entry costs at that hour. The 90th percentile shows how rough that hour's worst measurements actually get, which is not the same question as the median, because an hour can look cheap on a typical bar and still carry a heavy tail on its worst ones. A third option, the share of measurements above a chosen ceiling, answers how often that hour crosses a level already judged unacceptable. Computing all three, and being able to switch between them, keeps all three questions available instead of collapsing them into one. The hour already suspected Most traders already have one hour they distrust with their own broker, commonly the one around rollover. That is the cell to check first: find it in the grid, compare its median against its neighbours in the same row, then look specifically at its 90th percentile, since a rollover hour can carry a median that looks tolerable next to a tail that does not. Confirm the pattern against what the platform shows live during that hour - the live reading and the historical figure describe the same measurement. Don't trust a thin bucket A bucket built from three measurements is not a median, even though the arithmetic hands back a number that looks exactly like one built from three thousand. Set a minimum count a bucket must clear before it is allowed to show a figure at all, and leave the ones under that floor blank instead of confident-looking. The same discipline covers two edge cases: a feed that doesn't record spread on M1 bars at all, and a symbol whose broker doesn't report a tick value for it. Both cases call for saying so plainly, not drawing a grid of zeros or a converted figure that is really a guess. From points to money A spread in points ranks hours against each other, but it isn't what an entry costs in the account's own currency. That figure comes from two numbers every broker publishes for the symbol, the value of one tick and the size of one tick, applied to the volume actually traded, plus whatever commission gets billed per round-turn lot. Spread and commission together make up what a position actually costs to enter; leaving either one out understates it. Put together, hour, weekday, sample size and currency conversion turn one flat spread number into an answer to when a symbol is actually expensive to enter, and when it only looks that way in a table of averages. A free indicator named Hourly Spread Map runs this same grouping automatically on a chart, but the measurement itself only needs the M1 history a terminal already holds.


