Skip to main content

understanding the algo trade log

how to read the algo trade log — finding a day's trades, the status filters, how entries pair with exits, and how to troubleshoot when your algo doesn't execute.

Written by Brad

summary: how to read the algo trade log — how to find a day's trades, what the status filters mean, how entries pair with exits, and how to spot trades that didn't go through.

this article covers: reading the trade log end-to-end — finding a day's trades, the status filters (all / working / closed / rejected / cancelled), how entries and flattens pair by trade ID, and the most common failed and rejected scenarios. new to algo automation? start at the algo automation quickstart. already see an error string in the log and want a direct fix? jump to the algo error message decoder.

what the trade log is

every time edgeful receives a webhook from TradingView and processes a trade, it gets logged in the trade log. this is your record of everything that happened — entries, exits, rejections, and failures.

you'll find it at edgeful.com/algos-automation/trade-log. (the trade log used to be called trade notifications. old links still redirect here.)

think of it as the receipt for every trade your algo attempted. if something went wrong, this is where you start.

how to get there

  1. log into edgeful

  2. click algos in the left sidebar

  3. click trade log

the trade log shows one day at a time. use the arrows or the date picker at the top to move between days, the strategy filter to narrow it to one strategy, and the status filter to show all, working, closed, rejected, or cancelled trades.

reading the trade log

each row is one trade. here's what you're looking at:

column

what it shows

broker / account

the broker and account the trade went to

strategy

which strategy in your dashboard the alert came through

ticker

the contract traded

direction

long or short

status

where the trade stands: working, closed, rejected, or cancelled (the same options as the filter chips at the top)

P&L

the trade's profit or loss

time

when the trade was entered

click a trade to expand it and you'll see the orders inside it, the entry and the exit (or exits), one line each:

column

what it shows

side

buy or sell

sentiment

long or short for the entry, flat for the exit

qty

how many contracts

status

the order's own status, for example filled

price / filled

the price in the alert and the price your broker actually filled

time

when the order was placed

latency

how long the order took from alert to broker

details

show more opens the full record for that order

show more opens the order's details: the trade ID (with a copy button, handy when you message support), a check that the signal was received and validated, a timing breakdown from the TradingView alert to edgeful to your broker, and the signal data edgeful received.

the most important column is status — that's where you'll see whether everything went through or something broke.

what the statuses mean

in plain terms, every trade in the log ends up in one of a few places. the trade's status reads working while it's in progress, then closed, rejected, or cancelled, and each order inside it shows its own status (like filled). for a detailed fix for each, see the algo error message decoder.

it went through — the order executed at your broker and shows filled. once the exit fills too, the trade shows closed. this is what you want to see.

it failed to reach the broker — edgeful received the webhook but couldn't place the trade at your broker. the most common cause is a broker disconnection — your Tradovate, NinjaTrader, or ProjectX session expired or got invalidated.

it was rejected — your broker received the order but refused to execute it. these show under the rejected filter. this usually means a contract mismatch (your TradingView alert is on a different contract than your broker expects), insufficient margin, or your account doesn't have the right permissions.

it's still being processed — you'll typically only see this briefly. if a trade sits unconfirmed for a while, something may have stalled in the webhook chain, so check your broker directly.

so if a trade failed or was rejected — don't panic. it's almost always a fixable connection or configuration issue, not a problem with the algo itself.

entry vs. flatten — how trades are paired

every algo trade has 2 events: an entry (opening the position) and a flatten (closing it). both sit inside the same trade row: expand it and the entry shows a long or short sentiment, the exit shows flat.

they're linked by the trade ID, which you'll find under show more on either order.

why separate rows? because TP and SL are delivered as separate alerts — they're not part of the entry. each alert travels through the same strategy webhook but fires as its own event when price hits the level. for the full breakdown of how exits are delivered (and which order types are used), see how the algo automation chain works.

when you're troubleshooting, you need to check both sides of the trade:

  • entry went through, no flatten — the exit alert may not have fired yet (trade is still open), or the exit webhook failed

  • entry never reached the broker, no flatten — the entry never executed, so there's nothing to flatten

  • entry went through, flatten was rejected — you got into the trade but the exit had an issue. check your broker for the open position

this is especially important with 2TP strategies (like ORB 2TP) where you'll see 3 orders inside one trade: 1 entry + 2 exits (TP1 and TP2).

the most common reason a trade fails

the #1 reason a trade fails to reach your broker is a broker session expiring. here's what happens:

  1. you connected your broker in the algo dashboard at some point

  2. your broker's authentication session expired (Tradovate does this periodically)

  3. your algo fires, edgeful receives the webhook, but when it tries to route the order — the broker connection is dead

  4. the trade log shows the trade didn't go through, with an unauthorized error

the fix:

  1. go to edgeful.com/algos-automation/dashboard

  2. click reconnect next to your broker. if that doesn't stick, click + add broker and sign in again (don't delete the broker, because that deletes every strategy attached to it)

  3. make sure the status shows connected (green)

you don't need to recreate your strategy or update your TradingView alerts — the webhook URL stays the same. you're just refreshing the broker connection.

the most common "rejected" scenario

the #1 reason trades show "rejected" is a contract mismatch.

here's the gotcha: TradingView uses specific contract symbols for futures. if your alert was created on ESM2026 but that contract has rolled over to ESU2026, the broker will reject the order because the old contract is no longer valid.

the fix:

  1. update your TradingView chart to the current front-month contract

  2. delete the old alert

  3. create a new alert on the updated chart

  4. paste the same webhook URL (your strategy and webhook don't change — only the TradingView alert does)

rejected flattens — "cannot sell when position is 0"

the second most common cause of a rejected trade is a flatten hitting an empty position. this happens when the entry never executed — or when you manually closed the trade before the TP or SL level triggered.

when edgeful sends the exit order, your broker sees there's nothing to close. you'll see a rejection with an error like: Cannot sell when position is 0 (must be > 0 to flatten long).

in plain english — the automation tried to close a trade that doesn't exist anymore. since there's no open position, executing that exit would actually open a new position in the opposite direction. your broker blocks that, which is the right behavior.

if you're seeing this error, check whether:

  • the entry for that trade ID was also rejected or never reached the broker — meaning the position was never opened in the first place

  • you manually closed the trade in your broker before the algo's TP or SL fired

either way, it's not a bug. the automation is protecting you from an accidental position in the wrong direction.

other common rejection causes

beyond contract mismatches and empty position flattens, you might also see rejections when your broker account doesn't have enough margin for the contract size, or your account type doesn't support the product you're trying to trade.

for the full list of error strings — including "contract not found," "unauthorized," "errorCode=3," and Tradovate-specific rejections — see the algo error message decoder.

checking both sides of a trade

if you're looking at a specific trade and want the full picture, here's the process:

  1. find the entry row in the trade log — note the trade ID

  2. scroll or search for the matching flatten row with the same trade ID

  3. check the status of both

if the entry went through but you can't find a flatten — the trade may still be open. check your broker's positions directly.

if both entry and flatten went through but the numbers don't match what you expected — that's likely slippage on the market order exits. SL is always a market order; TP can be market or limit depending on how you configured the strategy. see how the algo automation chain works for a full breakdown of where slippage comes from.

when nothing shows up at all

if your algo fired on TradingView but nothing appears in the trade log, the issue is upstream of edgeful — the webhook never arrived.

common causes:

  • webhook URL mismatch — the URL in your TradingView alert doesn't match the one in your edgeful dashboard. copy it fresh from the dashboard and update the alert

  • webhook in the wrong field — the URL goes in TradingView's "webhook URL" field, not the "message" field

  • TradingView plan — webhooks require TradingView Essential or higher. the free and Basic plans don't support webhooks

  • alert expired — TradingView alerts expire periodically. check that your alert is still active

  • JSON message format — the alert message needs the correct JSON format. if it's wrong, edgeful can't parse the webhook

for the full diagnostic flow when a trade didn't execute, start at my algo didn't trade — start here. for webhook-specific debugging, see no notification in edgeful — webhook troubleshooting.

related articles

start here:

other spokes:

webhook deep dives:

Did this answer your question?