4.0 KiB
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.
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 dansbourse-config.json)range:1d,5d,1mo,3mo,6mo,1y(défaut5d)interval:15m,60m,1d(défaut60m)beginAtZero:true= axe Y depuis 0 ;false= zoom sur les variationstitle: 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
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
- Ne pas réinventer un script Python de graphe : le webhook fait tout.
- Tickers Yahoo : actions FR = suffixe
.PA(ORA.PA, TTE.PA) ; US = sans suffixe (NVDA, AAPL). - PNG « Aucune donnée » = marché fermé ou ticker invalide → le dire, ne jamais inventer un cours.
- 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. - Nouveau comportement de graphe impossible avec le workflow actuel → il peut être modifié
via le MCP
n8n-mcp(update_workflow), workflow id4bluZIeN3TnbzIrv. Node JS « Fetch + Build QuickChart » = logique fetch + rendu (QuickChartversion:"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.