BLT Journal
demo

Send feedback

Report a bug, suggest an improvement or ask a question. The page you are on is attached, and we read every message.

⚙
Demo This is the real journal with sample trades. Look around: nothing you do here is saved. Get the journal → Leave the demo
Ask

These conversations were asked of the sample journal in advance. In your own journal, Ask answers anything, with an AI key you save once.

Is my problem the strategy or how I execute it?
Fri 30 Oct, 23:17
Is my problem the strategy or how I execute it?

When you followed your rules, 66 trades averaged 0.82R and netted 11239.95. When you broke at least one, 60 trades averaged -0.30R and netted -3494.34.

The trades inside your rules do clearly better than the ones outside them, so the first place to work is execution, not the strategy itself.

Figures from your journal, not advice. A few trades say little; the pattern over many is what counts.

What it ran · 1 query
1 2 rows
SELECT plan_adherence AS verdict, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND plan_adherence IS NOT NULL GROUP BY plan_adherence ORDER BY plan_adherence
verdicttradesnetavg_r
broke60-3494.34-0.30
followed6611239.950.82
Fri 30 Oct, 23:17
Which rule do I break most, and what does it cost me?

The rule you break most is “No new trade within 30 minutes of closing a loser”: 15 trades, averaging 0.11R, netting -2.22.

The one that costs you most is “Never move the stop further away”: 12 trades, netting -3460.59.

A trade can break more than one rule, so these groups overlap and should not be added up. Figures from your journal, not advice.

What it ran · 1 query
1 7 rows
SELECT 'No new trade within 30 minutes of closing a loser' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%30 minutes%' UNION ALL SELECT 'Waited for the retest' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%Waited for the retest%' UNION ALL SELECT 'Level was untouched since it formed' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%untouched since it formed%' UNION ALL SELECT 'Never add to a losing trade' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%add to a losing trade%' UNION ALL SELECT 'No more than 4 trades in a day' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%4 trades in a day%' UNION ALL SELECT 'Never move the stop further away' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%move the stop further%' UNION ALL SELECT 'Risk no more than 1% of equity' AS rule, COUNT(*) AS trades, ROUND(SUM(net_pnl), 2) AS net, ROUND(AVG(r_actual), 2) AS avg_r FROM journal_trades WHERE status = 'closed' AND broken_rules_json LIKE '%1% of equity%' ORDER BY trades DESC
ruletradesnetavg_r
No new trade within 30 minutes of closing a loser15-2.220.11
Never move the stop further away12-3460.59-1.26
Never add to a losing trade122427.350.59
Waited for the retest11-745.89-0.37
Level was untouched since it formed8-1275.88-0.67
Risk no more than 1% of equity71796.630.75
No more than 4 trades in a day4-1252.81-0.96