TradinSolutionsEXECUTION LAYER
Start Free Trial →
HOME/BLOG

Notes from building execution infrastructure.

Prop-firm drawdown arithmetic, broker symbol suffixes, contract rolls, and what actually breaks when you copy a trade across five platforms.

← ALL POSTS
Trading Education20 Sept 2026 · 8 min · TradinSolutions

Automated Trading Journal: What It Can Capture From a Broker, and What It Cannot Know

A broker feed gives you entry, stop, size, fill and close price with perfect accuracy. It has no idea why you took the trade or why you closed it early — and that is the column that matters.

A trader reviews three months of automatically synced history and finds a clean pattern: trades entered between 08:00 and 09:00 return roughly twice what trades entered after midday do. Convincing, specific, and completely useless as it stands — because the record cannot say whether the morning trades were better setups or simply the ones taken before the day got busy and the sizing got sloppy. The data was accurate. The conclusion needed a field no broker holds.

That gap is the whole subject of this post. An automated journal is extremely good at one half of the job and structurally incapable of the other half, and knowing exactly where the line falls is what turns a synced history into something you can make decisions from.

What a broker connection can fill in by itself

Everything in this section comes out of the account record with no input from you, and comes out correct.

Identity and timing. Ticket or deal identifier, symbol, direction, open time, close time, and therefore duration. Server time, which is not your local time — a journal that does not normalise this will misattribute every session boundary.

Size and value. Volume, contract size, tick value, and the account currency conversion. This is where a journal earns its keep immediately, because it means the risk figure is computed from the instrument's actual specification rather than from an assumption about what a pip is worth.

Prices. Requested price where the platform records it, actual fill price, stop level, take-profit level, and close price. The difference between requested and filled is slippage, and it is one of the most useful numbers in the whole record because almost nobody tracks it by hand.

Costs. Commission, swap or financing charged per night, and — on index CFDs — dividend adjustments. Costs are where automated journals most clearly beat manual ones, because manual journals almost universally record the gross result and quietly ignore three nights of swap.

Modifications. Where the platform exposes them, the history of stop and target changes on a position. This is the raw material for answering the question "how often do I move my stop", which is a question most traders would rather not have answered precisely.

Account state. Balance and equity over time, from which the journal derives the drawdown series, the daily loss against each day's reference, and the high-water mark.

Derived risk, if the stop was attached. With entry, stop and size, the initial risk in account currency is arithmetic. With the close price, so is the result in multiples of that risk — the R multiple, the single most portable statistic a trader has, because it compares a gold trade to an index trade to a currency trade on one scale.

text
entry        1.0842      stop        1.0812      size   0.73 lots
initial risk = 30 pips * 10.00 * 0.73          =   219.00
closed at    1.0918      gross                  =   554.80
swap                                            =    -6.20
commission                                      =   -10.90
net                                             =   537.70
R multiple   = 537.70 / 219.00                  =   2.46R

That calculation is reliable, repeatable, and requires nothing from the trader. It is also the point at which the automation runs out.

What no broker feed contains

The reason for entry

The record knows you bought EURUSD at 09:14. It does not know whether that was a planned setup that triggered, a discretionary read of the session, or boredom. Those three produce very different statistics, and if they are pooled, the good one is hidden inside the average of the bad ones.

This is the highest-value field in any journal and it cannot be derived. A single tag — the setup name, from a fixed list you wrote in advance — is enough. A free-text paragraph is not, because you will not be able to group by it later.

The reason for exit

This one is subtler and matters more than people expect. The record shows a close price. It can usually infer whether the stop or the target was hit, because the close price will sit at the level. What it cannot distinguish is the entire category of manual closes:

  • Closed because the thesis was invalidated by something you saw.
  • Closed because it had been open a long time and you wanted it gone.
  • Closed early because the profit was uncomfortable to hold.
  • Closed because you had to leave.

All four look identical in the data: a manual close at a price between entry and target. They are four completely different problems with four different fixes, and separating them requires one tag at the moment of closing.

TIP

If you record only one thing by hand, record the exit reason from a fixed list of five options. Comparing the R distribution of stop-outs against manual exits is usually the most uncomfortable and most useful chart a trader ever produces.

The intended target

If you close at a discretionary level, the journal has no idea what the plan was. That means it cannot compute the R you were aiming for, and therefore cannot tell you whether your realised R is falling short of your planned R — which is the diagnostic for cutting winners early.

A trade with an attached take-profit order solves this for free. A trade managed by hand does not, and needs the intended target written down at entry, before the outcome is known. Written down afterwards, it is fiction.

Everything about you

Sleep, stress, whether the trade was revenge for the last one, whether you had already breached your own rules that morning. There is a real temptation to over-collect here — mood scores, energy ratings, a paragraph of reflection — and it is how journals die. Two or three binary flags that you will actually tick, such as "traded outside the plan" and "third trade of the day or later", carry more signal than a mood scale you abandon in a fortnight.

The context around the fill

The record knows you got filled 2.4 pips worse than requested. It does not know that a rate decision had landed eleven seconds earlier. Some journals enrich the record with an economic calendar and with spread at the moment of entry, which closes part of this gap — but it is enrichment added by the journal, not data from the broker.

The division of labour that works

FieldSource
Symbol, direction, times, volumeAutomatic
Fill price, slippage, stop, close priceAutomatic
Commission, swap, dividend adjustmentsAutomatic
Initial risk, realised R, drawdown seriesDerived automatically
Stop and target modificationsAutomatic where the platform exposes it
Setup tagTrader, at entry
Intended target, if not an orderTrader, at entry
Exit reasonTrader, at close
Rule-break flagTrader, same day

Nine rows filled by software, four by you, and the four take about fifteen seconds per trade. That ratio is the argument for automating the journal: not that it saves the fifteen seconds, but that it removes the ninety seconds of tedious transcription that was causing you to skip the fifteen.

Where automated journals quietly get things wrong

Partial closes and scale-outs. One position exited in three pieces is three deals in the record. A journal that treats them as three trades will report three different R multiples on what was one decision. Correct handling groups them back into a single position with a weighted average exit.

Netting accounts. On MT5 netting, an opposing order reduces a position rather than opening a new one. A journal built for hedging accounts will reconstruct these incorrectly, showing trades that never existed as separate decisions.

Trades without a stop. No stop means no initial risk means no R. A journal that substitutes a default stop to keep the maths tidy is inventing data. The honest behaviour is to flag the trade as unmeasurable, which is also the more useful behaviour, because "how many of my trades cannot be measured" is itself a finding.

Multi-account aggregation. The same strategy copied across four accounts produces four records of one decision. Pooled without care, it quadruples the sample and makes every statistic look four times more significant than it is. Deduplicating to the originating decision is the only way to get an honest sample size.

Timezone drift. Broker server time, your local time, and the market's session boundaries are three different clocks. Session analysis done on the wrong one produces confident nonsense.

WARNING

Be careful with the significance you attach to any of this. Forty trades split into four setup tags is ten trades per group, and ten trades tells you close to nothing about expectancy. An automated journal makes it very easy to slice a small sample into smaller ones and find a pattern in noise.

The point of the exercise

A journal is not a record-keeping obligation. It exists to answer a small number of questions that decide whether you keep trading a strategy: what the expectancy is in R, whether the realised distribution matches the planned one, how much of the result is cost, and whether the losses cluster around a behaviour rather than around a market condition.

Automation gets you the first, most of the third, and half of the second. The four fields you fill in by hand get you the rest. Skip them and you have a very accurate record of what happened and no way to know why.

Where this fits

For the MT5-specific mechanics — how a connected account syncs, why deals and positions are different objects, and what to check after the first import — read mt5-trading-journal. If the broader argument for automating the record rather than keeping it by hand is what you are after, trading-journal-guide covers that ground.

NEXT