At first, I naturally thought in terms of one trader, one account. Then the reality of trading quickly caught up with me.
Many traders don't have a single account. They may have a personal account. A simulation account. Several prop firm accounts. Sometimes several platforms. And sometimes the same strategies are used across different accounts.
From there, LowFlow had to be able to track all of this without mixing the data.
The account becomes an important dimension of the journal
Two identical trades on the same instrument are not necessarily the same trade. They can belong to two different accounts. They can have different sizes. Different commissions. Different objectives.
So the account has to stay attached to each transaction. And the trader has to be able to choose what they want to look at. A single account. Several accounts. Or all of them.
The danger is merging everything too early
This is a problem I ran into several times during development. When a piece of data serves many purposes, it becomes easy to give it too many responsibilities. Then one day, a rule changes and everything becomes hard to untangle.
So I learned to keep the roles separate. The account says who the trade belongs to. The trade keeps its identity. The statistics then use the chosen filter. But none of these layers should reinvent the others.
Comparing without changing the original data
The trader may want to know: which account was the most active? How does a setup behave across two accounts? How many trades were taken in total? Or simply hide an account they no longer care about.
The journal can show several different views without changing what was actually recorded. And this comes back to the same principle: the data stays the data. The view is a choice.
Several accounts, several platforms, but one memory
That's where the structure really starts to get interesting. A trader can use NinjaTrader for one account. Sierra Chart for another. Import an old history via CSV. Add screenshots.
And despite all these different sources, LowFlow has to be able to rebuild a coherent history. Not because all platforms work the same way. But because in the end, the trader has to be able to find their own trades, no matter where they come from.
This is one of the differences between a prototype and a product
A prototype works perfectly in the scenario it was built for. A product has to keep working when users start using it in a way the developer had not imagined on day one.
That's why LowFlow gradually became more modular. Not to add complexity. To be able to accept the trader's reality without asking them to adapt to the software.