What “MT4 Charts calculated” usually means
In MT4, the word “calculated” is best understood as: the platform turns incoming market data (ticks or already-formed bars) into the values that make up the chart’s plotted series. Those plotted series then drive what you see on screen (candles, lines, volumes, and many overlays).
A chart is not one single calculation. It is usually a pipeline with three parts:
- Data preparation: the platform stores and organizes price data over time.
- Bar/timeframe construction: it groups data into fixed time intervals (for example, 5-minute bars).
- Series computation and display: it computes what each visual element represents (for example, the OHLC fields of each bar) and maps values to coordinates.
Because the input data and chart settings change, the exact arithmetic depends on the chart type and timeframe.
Core mechanics: bar construction and OHLC definitions
Most “MT4 chart” visuals you encounter are built from bars. A bar corresponds to one time interval on a chosen timeframe. For each bar, charting commonly uses OHLC values:
- O (Open): the first traded price in that interval.
- H (High): the maximum traded price observed during that interval.
- L (Low): the minimum traded price observed during that interval.
- C (Close): the last traded price in that interval.
A simple way to express this is to define a bar interval ([t_k, t_{k+1})) and the set of tick prices that fall inside it. Let (P_i) be the sequence of trade prices (or mid prices, depending on what the platform feed defines) for ticks with timestamps (t_i) such that (t_k \le t_i < t_{k+1}). Then:
- (O_k = P_{first})
- (H_k = \max(P_i))
- (L_k = \min(P_i))
- (C_k = P_{last})
This OHLC construction is the material calculation behind the visible candle body and wicks for many standard chart modes.
Volumes and tick counting (when shown)
If the chart shows volume (or tick-based volume), a common conceptual definition is:
- Volume for bar k equals the number of ticks in ([t_k, t_{k+1})), or the sum of reported sizes if the feed provides size.
Which exact meaning applies depends on what the platform’s data feed provides and which volume option is selected.
How line charts are derived from bar series
A line chart is often computed from a chosen source within each bar series. For example:
- A “close line” conceptually plots (C_k) over time.
- A “typical price” line (in some charting setups) conceptually uses an average such as ((H_k + L_k + C_k)/3).
So the general pattern is: pick a function (f) of each bar’s OHLC (and sometimes volume), then plot (S_k = f(O_k,H_k,C_k,L_k,\text{Volume}_k)).
For common price lines, (f) is simply selecting one component (like close). For other derived series, (f) may average or transform values, but it still operates bar-by-bar.
Example with explicit assumptions (self-checkable)
Assume a timeframe of 1 minute and that you have tick prices for a single minute interval ([t_0, t_0+1m)). Suppose within that interval the tick sequence (in chronological order) is:
- (P_1 = 1.1000)
- (P_2 = 1.1010)
- (P_3 = 1.0995)
- (P_4 = 1.1020) Then the OHLC values for that bar are:
- (O = 1.1000) (first tick)
- (H = 1.1020) (maximum)
- (L = 1.0995) (minimum)
- (C = 1.1020) (last tick) If your chart uses a close line, the plotted point for that minute is (S=C=1.1020).
Independent verification idea: if you can access the underlying tick or bar data used by your chart (for example, via platform data export or an API that provides timestamps and prices), you can recompute OHLC using the same interval boundaries and confirm whether the plotted candles match.
Material limitations and failure modes
Even with the OHLC formulas above, chart values can differ for several reasons:
-
Missing or incomplete history If tick data is absent for a timeframe, OHLC can only be computed from the available subset. That can change (O), (H), (L), and (C). A candle may appear “off” versus what you expect because the platform did not receive all ticks.
-
Time alignment and timezone/clock differences Bars are created from fixed time intervals. If the chart’s server time differs from the timestamps you assume, you may group ticks into different minutes (or different hours). The set of ticks per interval changes, so OHLC changes.
-
Definition of “price” varies by feed and mode Depending on the platform and data mode, the series might be derived from bid/ask, last trade, or a constructed mid price. If your expectation assumes one definition but the feed supplies another, your recomputation will not match.
-
Costs and execution are not represented inside historical candles Candles represent observed or recorded prices for past time intervals. They do not inherently account for future costs (spreads at execution time, slippage, commissions). So any reasoning that treats displayed chart history as a forecast for net results mixes distinct concepts.
-
Indicator-like overlays depend on additional parameters If “MT4 Charts” includes moving averages, oscillators, or custom overlays, then the calculation includes extra parameters (lookback length, smoothing method, applied price, and whether the overlay uses bar closes only or intrabar data). Those settings, not just the OHLC construction, determine the final plotted values.
How to verify the calculation you see
A practical verification method, without assuming any single provider behavior, is:
- Identify the chart type (candles vs line) and the timeframe.
- Export or obtain the underlying bar data or ticks used by the chart.
- Recompute OHLC for one bar using the interval boundaries and the assumed price definition.
- Compare your recomputed (O,H,L,C) and any plotted series (like close line) to what the chart shows.
If the comparison fails, inspect which assumption changed: interval boundaries, the input price definition, or whether history is incomplete.
What to ask next
If you tell me:
- your chart type (candles, line, or a specific overlay),
- the timeframe,
- and what data source you’re using (ticks vs bars, and whether it’s bid/ask/last/mid), I can restate the exact function (S_k = f(\cdot)) for that setup and list the specific inputs you would need to recompute it end-to-end.