Journal

Every closed trade writes itself.

The last block of the chain, fully operational. It reads the trades that closed on the terminals, writes each one down and rewrites the dashboard. Nobody logs a single line by hand.

JournalEngine.py
# one pass per closed minute
while True:
    strategies = load_map()      # where to read
    closed = read_closed_trades()

    if closed:
        write_local(closed)      # on disk
        mirror_to_sheet(closed)  # dashboard

    sleep_to_next_minute()

The pass, end to end

Four steps, in order, on every pass. The map says which terminal to read, the closed trades are pulled, the journal is written on disk, then the sheet and its dashboard are mirrored.

Map & strategieswhich terminal, which sheet
Read closeddeals shut since the last row
Write localthe journal on disk
Sheetrow appended, dashboard redrawn

It writes on a closed trade. On nothing else.

A pass with nothing new does no work: no row, no API call, no noise.

Pass every minute New closed trade? No Idle · no write · no API call Yes Append the row local journal on disk Redraw the dashboard mirrored to the sheet

The journal, block by block

One rhythm: one pass per closed minute. The same steps, every time.

Journal Engine Read Closed Trades Local Journal Writer Google Sheet