FOREX SIGNAL ↗ Ouvrir l'app

Journal de trades — template Sheets

Template pour Google Sheets / Excel / Numbers. Pensé pour les 30 premiers trades démo (gate du KANBAN root avant Hermes), mais tient pour les 1000 suivants.

Critère #1 d'un bon journal : il est rempli. Un journal parfait pas rempli ne vaut rien. Vise 60 secondes par trade, pas 10 minutes.


Pourquoi un journal

Sans journal, tu vas répéter les mêmes erreurs sans le savoir, et tu n'auras pas de baseline pour évaluer Hermes quand il démarrera.

Avec un journal, tu peux répondre à des questions concrètes :

Sans data, tout ça est pur ressenti — donc faux 80% du temps.


Format Sheets — 2 onglets

Onglet 1 : trades (le journal principal)

Une ligne par trade exécuté en démo. Champs alignés sur le schéma SQLite de Hermes (cf. KANBAN.md Phase 5b) — au moment où Hermes démarrera, tu pourras importer ce CSV directement dans signals_taken.

Headers CSV (à copier-coller dans la 1ʳᵉ ligne)

id,date_time,pair,tf,direction,setup_type,session,entry_price,stop_price_initial,tp_price_initial,size_units,exit_date_time,exit_price,exit_reason,pnl_pips,pnl_eur,r_multiple,emotion_entry,emotion_exit,error_made,filters_passed,notes

Description colonne par colonne

# Colonne Type Exemple Comment remplir
1 id int 1, 2, 3... Auto-incrément. T-001, T-002 si tu préfères les préfixes.
2 date_time datetime 2026-04-28 18:42 Heure d'entry. Format ISO recommandé.
3 pair text EURUSD V1.5 = toujours EURUSD, mais on garde la colonne.
4 tf text H1 Timeframe d'exécution.
5 direction text long ou short
6 setup_type text pullback_ema50 1 des 4 codes (cf. § codes).
7 session text london_ny Session forex au moment de l'entry (cf. § codes).
8 entry_price float 1.08502 5 décimales pour EUR/USD.
9 stop_price_initial float 1.08172 Stop placé à l'entry (avant tout ajustement).
10 tp_price_initial float 1.09162 TP placé à l'entry.
11 size_units int 14 700 Position size en unités (Oanda/MT5).
12 exit_date_time datetime 2026-04-29 03:14 Quand le trade s'est fermé.
13 exit_price float 1.08842 Prix réel de fermeture.
14 exit_reason text tp / sl / manual / killswitch / expiry Pourquoi tu es sorti.
15 pnl_pips float +66 ou -33 Auto-calculé : sign(direction) × (exit_price - entry_price) / 0.0001.
16 pnl_eur float +61.38 Auto-calculé : pnl_pips × 0.93 × size_units / 10000.
17 r_multiple float +2.0 ou -1.0 Auto-calculé : pnl_pips / abs(stop_price_initial - entry_price) × 0.0001.
18 emotion_entry text calm Cf. § codes. À remplir à la prise du trade.
19 emotion_exit text relieved Cf. § codes. À remplir à la sortie.
20 error_made text none ou move_stop Cf. § codes. Honnêteté brutale obligatoire.
21 filters_passed int 5 Combien des 5 filtres macro étaient OK (toujours 5 si tu as suivi la checklist).
22 notes text "Bonne discipline" 1 phrase, pas un essai.

Onglet 2 : skipped (les presque-trades — IMPORTANT)

Ce 2ème onglet est ce qui sépare un journal amateur d'un journal pro. 90% des traders débutants ne le tiennent pas.

Pourquoi le tenir :

Headers CSV

id,date_time,session,candidate_setup,reason_skipped,multi_tf_status,score_seen,what_happened_24h,note
# Colonne Type Exemple Description
1 id int S-001 ID skip distinct.
2 date_time datetime 2026-04-28 14:22 Heure du presque-trade.
3 session text london_ny Session courante.
4 candidate_setup text pullback_ema50 long Le setup envisagé.
5 reason_skipped text news_blackout 1 des 11 critères SKIP (cf. § codes).
6 multi_tf_status text aligned, mixed, neutral État du bandeau multi-TF.
7 score_seen float +42 ou -28 Score React au moment du skip.
8 what_happened_24h text winner / loser / range À remplir 24h après — ce que tu aurais eu si tu avais pris.
9 note text "BCE meeting dans 2h" 1 phrase.

Codes standardisés (vocabulaire fixe)

Pour pouvoir filtrer/grouper par la suite, garde un vocabulaire strict.

setup_type

session

exit_reason

emotion_entry

emotion_exit

error_made

reason_skipped (onglet 2) — 15 codes alignés sur la checklist

Aligné avec les 11 critères SKIP de CHECKLIST_PRE_TRADE.md

Mappés directement sur les 11 SKIP critères de la checklist :

Granularité supplémentaire (sub-cas Phase 1-2) :

Note : session_inactive, score_low, cooldown, pressure_time sont des raffinements des critères CHECKLIST. Tu peux mapper en sous-catégorie ou utiliser le code parent — au choix selon ton style de journalisation. Pour des stats hebdo simples, garder les 11 codes parents. Pour identifier finement les motifs de skip, utiliser les 15 codes complets.


Formules pour les colonnes auto-calculées

pnl_pips (colonne 15)

=IF(direction="long",
    (exit_price - entry_price) / 0.0001,
    (entry_price - exit_price) / 0.0001)

pnl_eur (colonne 16)

Approximation pour EUR/USD avec compte EUR :

=pnl_pips * 0.93 * size_units / 10000

Le 0.93 vient du taux EUR/USD ≈ 1.08 (1/1.08). Précision suffisante pour le journal — pour la compta exacte, regarde Oanda.

r_multiple (colonne 17)

=pnl_pips / (ABS(stop_price_initial - entry_price) * 10000)

Pour un stop de 33 pips et un gain de +66 pips → R = +2.0. Pour une perte au stop → R = -1.0. C'est la métrique reine.


Routines d'analyse

Quotidien (5 min, fin de session)

À chaque fin de session de trading, avant de fermer ton ordi :

Hebdomadaire (15 min, dimanche soir)

Avant de préparer la semaine prochaine, ouvre le Sheets et calcule :

Stats de la semaine
─────────────────────
Trades pris        : ___
Trades gagnants    : ___ (___%)
R:R réalisé moyen  : ___
P&L total          : ___ €
Drawdown max       : ___ %
Skips notés        : ___
% trades avec error_made ≠ none : ___% (cible : descend chaque semaine)

Questions à te poser :

Mensuel (30 min, dernier dimanche du mois)

Tableau de bord plus large :

Stats du mois
──────────────
Trades pris : ___
Hit-rate    : ___%
Profit Factor : ___ (cible > 1.5)
Sharpe ratio approx : ___
Drawdown max : ___ %
Capital final / capital initial : ___ %

Questions à te poser :


Mini-template prêt à l'emploi

Pour démarrer en 3 minutes : copie ces 2 lignes dans ton Sheets, c'est parti.

Onglet trades (ligne 1)

id  date_time  pair  tf  direction  setup_type  session  entry_price  stop_price_initial  tp_price_initial  size_units  exit_date_time  exit_price  exit_reason  pnl_pips  pnl_eur  r_multiple  emotion_entry  emotion_exit  error_made  filters_passed  notes

Onglet skipped (ligne 1)

id  date_time  session  candidate_setup  reason_skipped  multi_tf_status  score_seen  what_happened_24h  note

Exemple d'une ligne trade pleine (long Pullback EMA50)

T-001  2026-04-28 18:42  EURUSD  H1  long  pullback_ema50  ny  1.08502  1.08172  1.09162  14700  2026-04-29 03:14  1.09162  tp  +66  +90.18  +2.0  calm  confident  none  5  "Setup A+ propre, multi-TF aligned, hammer EMA50"

Exemple d'une ligne trade perte avec erreur

T-002  2026-04-29 16:15  EURUSD  H1  short  pullback_ema50  london_ny  1.08850  1.09180  1.08190  12500  2026-04-29 17:42  1.09180  sl  -33  -38.36  -1.0  unsure  frustrated  late_entry  4  "Entré 8 pips trop tard, signal validé tardivement, rang non respecté"

Exemple d'une ligne skip (filter_passed)

S-001  2026-04-28 14:22  london_ny  pullback_ema50_short  news_blackout  aligned  -38  loser  "BCE meeting dans 2h - skip prudent"

Comment importer dans Hermes plus tard

Au moment où Hermes démarrera (Phase H4 du KANBAN root), tu pourras importer tes 30+ trades manuels comme baseline :

# Dans hermes/ après le démarrage de l'agent
uv run python -m src.tools.import_journal \
  --csv ~/Documents/journal_trades.csv \
  --table signals_taken

(ce script n'existe pas encore — il sera implémenté Phase H1 si jugé utile.)

L'objectif : Hermes connaît ta baseline manuelle et peut comparer ses propres signaux avec ce que tu aurais pris à la main. C'est exactement le mécanisme qui détecte les biais de l'agent.


Liens