# Référence — Bourse > ⚠️ OBSOLÈTE depuis le 10/10/2026 : la bourse est passée à l'agent bourse (workspace-bourse/AGENTS.md, scripts/bourse.py). Ne plus lire ce fichier. (Déplacé d’AGENTS.md le 26/09/2026 pour tenir sous le plafond de la fiche. Contenu identique, lu à la demande.) ## 3. Bourse > ⚠️ OBSOLÈTES, ne plus jamais utiliser : `generate_chart.py`, `get_quote.py`, > `clean_bourse_md.py`, `orange-bourse.md`. Toute la bourse passe par N8N. ### 3.1 Principe Tu es l'INTERLOCUTEUR, N8N est l'EXÉCUTANT. Demande humaine → appel du webhook → PNG en retour → tu l'envoies. Aucune donnée n'est stockée à la main : N8N récupère les cours en direct de Yahoo Finance. ### 3.2 Source de vérité : `bourse-config.json` `/home/node/.openclaw/workspace/bourse-config.json` contient la watchlist, les options par défaut, et la liste `close_bilan.images` du bilan de clôture. **Tu PEUX et tu DOIS éditer ce fichier** quand l'humain demande d'ajouter ou de retirer une valeur ou un graphe. C'est le seul endroit où cette liste existe. ### 3.3 Webhook graphe — le seul outil bourse autorisé - URL : `https://n8n.airtria.pro/webhook/bourse-graphe` — **POST uniquement** (un GET renvoie 404). - Workflow N8N id : `4bluZIeN3TnbzIrv` (« Bourse — Graphe multi-tickers (v3) »). - Retour : un PNG prêt à envoyer. ```bash curl -s -X POST "https://n8n.airtria.pro/webhook/bourse-graphe" \ -H "Content-Type: application/json" \ -d '{"tickers":["ORA.PA","TTE.PA"],"range":"5d","interval":"60m","beginAtZero":true}' \ -o /home/node/.openclaw/workspace/charts/bourse.png ``` Body JSON, tous les champs optionnels : - `tickers` : symboles Yahoo (défaut : lus dans `bourse-config.json`) - `range` : `1d`,`5d`,`1mo`,`3mo`,`6mo`,`1y` (défaut `5d`) - `interval` : `15m`,`60m`,`1d` (défaut `60m`) - `beginAtZero` : `true` = axe Y depuis 0 ; `false` = zoom sur les variations - `title` : titre du graphe ⚠️ Il n'existe **aucun paramètre de normalisation/rebase**. Tracer deux titres de prix très différents (ex. NVDA ~250 $ et ORA.PA ~18 €) sur un même graphe donne une courbe écrasée et illisible : faire un graphe par titre. ### 3.4 Prix chiffré rapide, sans graphe ```bash curl -fs "https://query1.finance.yahoo.com/v8/finance/chart/SYMBOLE?interval=1d&range=1d" \ | jq '.chart.result[0].meta | {price: .regularMarketPrice, prev: .chartPreviousClose, currency}' ``` ### 3.5 Mapping demande → action | Demande | Action | |---|---| | « montre-moi Orange » | POST webhook avec `tickers=["ORA.PA"]` | | « ajoute Total / Nvidia » | éditer `bourse-config.json`, puis POST avec la nouvelle liste | | « retire tel graphe du bilan » | éditer `close_bilan.images` dans `bourse-config.json` | | « fais commencer le graphe à 0 » | POST avec `beginAtZero:true` (+ mettre à jour les defaults) | | « zoome sur les variations » | POST avec `beginAtZero:false` | | « le cours d'Orange aujourd'hui » | POST avec `range="1d"`, `interval="15m"` | | « Anthropic » | non cotée en bourse → le dire, ne pas inventer de ticker | ### 3.6 Règles 1. Ne pas réinventer un script Python de graphe : le webhook fait tout. 2. Tickers Yahoo : actions FR = suffixe `.PA` (ORA.PA, TTE.PA) ; US = sans suffixe (NVDA, AAPL). 3. PNG « Aucune donnée » = marché fermé ou ticker invalide → le dire, **ne jamais inventer un cours**. 4. Réponse bourse : **3 lignes maximum** + le PNG en pièce jointe. Format : `ORA.PA : 16,89€ (-0,68%)`. Pas de tableau, pas de description longue. 5. Nouveau comportement de graphe impossible avec le workflow actuel → il peut être modifié via le MCP `n8n-mcp` (`update_workflow`), workflow id `4bluZIeN3TnbzIrv`. Node JS « Fetch + Build QuickChart » = logique fetch + rendu (QuickChart `version:"4"`). ### 3.7 Cron de clôture `orange-cloture`, `40 17 * * 1-5` Europe/Paris. Il lit `close_bilan.images`, appelle le webhook une fois par entrée, valide par `du -b` et envoie sur WhatsApp. Son prompt est stocké dans le job cron, pas ici : pour changer son comportement, c'est `openclaw cron edit`, pas ce fichier. ---