Que fait trader-in-alerts ?
Les alertes de prix surveillent les chiffres pour que l'utilisateur n'ait pas à fixer un graphique. Une alerte est une information, jamais un ordre : lorsqu'une alerte de stop sonne, rien n'est vendu par ce skill. Le stop (vente SL-M) et la cible (vente LIMIT) sont placés chez le courtier comme deux ordres séparés et font le travail ; les alertes informent l'utilisateur de ce qui s'est passé, lui rappellent d'annuler l'ordre restant et indiquent quand il est temps d'être à plat.
${CLAUDE_SKILL_DIR} ci-dessous est le dossier de ce skill (où se trouve ce SKILL.md).
python3 "${CLAUDE_SKILL_DIR}/alerts.py" clock # NSE ouvert ou fermé, pré-ouverture, prochaine ouverture (IST)
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --from-plan # stop, cible, flat-by depuis trader-in/plan.json
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --opening-bell # 09:15 IST
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --pre-open # 09:00 IST pré-ouverture (optionnel)
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol RELIANCE --stop 1193.30
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol RELIANCE --target 1201.10
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --at 15:10 --label "flat by" --before-close --symbol RELIANCE
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol TCS --pct 2
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol ^NSEI --pct 1 # Nifty 50 (surveillance uniquement)
python3 "${CLAUDE_SKILL_DIR}/alerts.py" check # exit 0 = quelque chose a sonné
python3 "${CLAUDE_SKILL_DIR}/alerts.py" quote RELIANCE "M&M" --write # -> trader-in/prices.json
python3 "${CLAUDE_SKILL_DIR}/alerts.py" quote --holdings --write # portefeuille + tickers du plan
python3 "${CLAUDE_SKILL_DIR}/alerts.py" list
python3 "${CLAUDE_SKILL_DIR}/alerts.py" reset reliance-ns-plan-stop
--now "2026-10-27 15:10" fige l'horloge (IST ; un 15:10 nu est aujourd'hui IST, Z ou +05:30 est absolu) ; --offline DIR lit des fichiers de cotations sauvegardés au lieu du réseau. Citez M&M dans le shell ("M&M"), ou & scinde la commande.
Symboles
RELIANCE, RELIANCE.NS et NSE:RELIANCE sont NSE ; RELIANCE.BO et BSE:RELIANCE sont BSE. Un symbole nu est NSE (ou default_exchange de la configuration). Les fichiers contiennent toujours la forme Yahoo (RELIANCE.NS). Un numéro nu à six chiffres est lu comme un code scrip BSE (500325.BO), mais Yahoo ne sert pas les codes BSE numériques (il a répondu "No data found" le 2026-10-27) : utilisez RELIANCE.BO. Les indices ^NSEI (Nifty 50), ^NSEBANK (Bank Nifty) et ^BSESN (Sensex) peuvent être surveillés et cotés en points, jamais échangés.
Ce qu'il lit et écrit
| fichier | quoi |
|---|---|
trader-in/plan.json | le trade provenant de trader-in-exit, pour add --from-plan |
trader-in/config.json | flat_by (défaut 15:10), default_exchange, extra_holidays, special_sessions |
trader-in/alerts.json | les règles (alerts.example.json dans ce dossier) |
trader-in/state/alerts.json | quelles règles ont sonné et quand, pour que chacune ne sonne qu'une fois |
trader-in/prices.json | les dernières cotations en roupies, fusionnées, pour trader-in-budget et trader-in-risk |
trader-in/portfolio.json | les symboles détenus, pour quote --holdings |
Types de règles
| type | sonne quand | sonne à nouveau |
|---|---|---|
above / target | prix au-dessus ou égal à price | après reset, ou automatiquement si "rearm": true et que le prix est redescendu |
below / stop | prix en dessous ou égal à price | idem |
pct_move | a bougé de pct pour cent par rapport à la clôture précédente (ou ref), direction optionnelle haut ou bas ; uniquement sur une cotation d'aujourd'hui | une fois par jour au maximum |
time | l'horloge IST a dépassé at ("15:10") un jour de bourse | une fois par jour de bourse |
opening_bell | NSE est ouvert (09:15 IST, ou l'ouverture d'une session spéciale) | une fois par jour de bourse |
pre_open | la pré-ouverture NSE est en cours (09:00-09:15 IST : saisie des ordres jusqu'à 09:08, puis appariement) | une fois par jour de bourse, uniquement pendant la pré-ouverture |
Une règle avec "date" est surveillée uniquement à cette date IST ; les règles --from-plan portent la date du plan, donc le stop d'hier ne sonne jamais aujourd'hui. Une règle time avec "before_close": true conserve son écart par rapport à la clôture lors d'une session spéciale qui se termine tôt : "flat by" à 15:10 sonne à 14:40 lors d'une session qui ferme à 15:00.
Lorsqu'un stop ou une cible sonne, le message ajoute : "Votre stop et votre cible sont deux ordres séparés chez le courtier, pas un OCO : si le stop a été exécuté, annulez l'ordre cible maintenant" (ou l'inverse). Les courtiers indiens ont supprimé les ordres bracket et n'ont pas d'OCO pour le MIS, donc un ordre SL-M ou LIMIT restant reste actif et peut vendre des actions que vous ne détenez plus.
Cotations
- JSON des graphiques Yahoo :
query2.finance.yahoo.com/v8/finance/chart/RELIANCE.NS(symbole encodé en pourcentage,M%26M.NS), un point de terminaison gratuit non officiel, une requête par ticker, une demi-seconde d'intervalle. Sur un 429, il attend et réessaie une fois ; sur un 429, une 5xx ou une erreur réseau après cela, il essaiequery1. Il s'identifie commeday-trader-skill-in/1.0. Yahoo sert les cotations NSE et BSE en INR avec les fuseaux horairesAsia/Kolkata; le mouvement en pourcentage utilise sa clôture précédente. - Stooq n'est pas utilisé : il ne liste pas de tickers NSE/BSE, et le 2026-10-27 son CSV de cotation a répondu 404 pour tous les tickers et ses autres pages étaient derrière un défi JavaScript.
- Les cotations gratuites sont non officielles, retardées et peuvent être en retard. Elles sont acceptables pour les alertes et la vérification d'une taille, pas pour le timing d'un ordre. Le prix du courtier est celui qui exécute. Chaque prix dans
trader-in/prices.jsonconserve son heure de cotation, et trader-in-risk n'utilise que ceux de moins de 15 minutes. - Si Yahoo est en panne, lisez le prix depuis le courtier (Kite, Upstox) et écrivez-le dans
trader-in/prices.jsoncomme{"as_of": "...Z", "prices": {"RELIANCE.NS": 1196.20}}.
L'horloge NSE
IST est UTC+05:30 toute l'année (pas d'heure d'été) ; l'outil le calcule lui-même et ignore le fuseau horaire de l'ordinateur. Session normale 09:15 à 15:30 IST, pré-ouverture 09:00 à 09:15 (saisie des ordres 09:00-09:08, appariement 09:08-09:15). Les courtiers liquident les positions MIS à partir d'environ 15:20 IST et facturent, donc le flat-by par défaut du plan est 15:10.
- Jours fériés NSE equity 2026 (jours de semaine) : 26 Janvier République, 3 Mars Holi, 26 Mars Ram Navami, 31 Mars Mahavir Jayanti, 3 Avril Vendredi Saint, 14 Avril Ambedkar Jayanti, 1er Mai Maharashtra Day, 28 Mai Bakri Id, 26 Juin Muharram, 14 Septembre Ganesh Chaturthi, 2 Octobre Gandhi Jayanti, 20 Octobre Dussehra, 10 Novembre Diwali Balipratipada, 24 Novembre Guru Nanak Jayanti, 25 Décembre Noël.
- Sessions spéciales (pas des jours normaux) : Dimanche 2026-02-01 Jour du Budget de l'Union, 09:15-15:00 ; Dimanche 2026-11-08 Négociation Muhurat, 14:20-15:30 avec pré-ouverture à partir de 14:05, selon la circulaire NSE NSE/CMTR/76941 du 2026-10-19 (les rapports de presse diffèrent sur la clôture pour les actions avec enchère de clôture : vérifiez la circulaire).
- 2027 n'est pas encore publié : pour toute année sans liste, l'outil prévient une fois ("Les jours fériés NSE pour 2027 ne sont pas intégrés ; ajoutez-les à la configuration extra_holidays") et traite les jours de semaine comme ouverts. Ajoutez les fermetures avec la configuration
"extra_holidays": ["2027-01-26", ...]et les sessions avec"special_sessions": {"YYYY-MM-DD": ["HH:MM", "HH:MM"]}.
Étapes
- Juste après que trader-in-exit a écrit le plan, exécutez
add --from-plan. Confirmez les trois alertes à l'utilisateur : le stop, la cible et l'heure flat-by, en roupies et IST. Dites que le stop et la cible sont des ordres séparés chez le courtier : lorsque l'un est exécuté, l'autre doit être annulé. - Exécutez
checkpendant que le trade est ouvert : toutes les quelques minutes via une tâche programmée Claude ou/loop. Chaque exécution ne récupère que les symboles des règles d'aujourd'hui et fait sonner chaque alerte une fois. Une vérification lit la dernière cotation retardée ; ce n'est pas un flux en direct, et un prix peut passer un niveau entre deux vérifications. - Dites à l'utilisateur ce qui a sonné en une ligne chacun. Une alerte de stop ou de cible signifie que cet ordre a probablement été exécuté : vérifiez les positions et les ordres dans l'application du courtier, annulez l'autre ordre, et enregistrez l'exécution avec /trader-in-broker. "Flat by" signifie fermez tout ce qui est encore ouvert avant le square-off MIS : /trader-in-broker flatten, puis /trader-in-risk, puis le oui de l'utilisateur, puis annulez le stop et la cible restants. N'agissez jamais à leur place.
Exemple : le déroulé
RELIANCE.NS le mardi 2026-10-27 : range d'ouverture 1 189,70-1 197,00, entrée ₹1 197,20 à 12:40 IST, stop ₹1 193,30 (milieu du range), cible ₹1 201,10 (1R), flat by 15:10. add --from-plan écrit reliance-ns-plan-stop, reliance-ns-plan-target et reliance-ns-flat-by pour ce jour. Un check à 15:05 lit le dernier cours réel, ₹1 196,20, entre le stop et la cible :
NSE OUVERT (2026-10-27 15:05 IST, session normale).
Rien n'a été touché. 3 règle(s) surveillée(s) aujourd'hui, RELIANCE.NS ₹1 196,20.
À 15:10 :
ALERTE Flat by : il est 15:10 IST (réglé pour 15:10), le marché ferme à 15:30 IST. Les courtiers liquident les positions MIS à partir d'environ 15:20 IST et facturent. Si RELIANCE.NS est encore ouvert, fermez-le :
/trader-in-broker flatten --symbol RELIANCE.NS construit le ticket de vente, puis /trader-in-risk et votre oui.
Ensuite, annulez tous les ordres stop et cible encore en attente pour celui-ci chez le courtier.
Il sonne une fois. Le lendemain matin, les trois alertes du plan ne sont plus surveillées ; avec add --pre-open et add --opening-bell, elles sonnent à 09:00 et 09:15.
Règles
- Une alerte est un fait concernant un prix ou l'horloge. Dites-le comme un fait.
- Ne présentez jamais une cotation comme en direct. Les cotations gratuites sont retardées et non officielles.
- Confirmez chaque nouvelle règle à l'utilisateur : symbole, type, niveau en ₹, jour.
- Argent en roupies avec le groupement indien (₹1,23,456.78) ; heures en IST.
Ce qu'il ne fait jamais
Il ne passe, n'annule ni ne modifie jamais un ordre, ne prétend jamais qu'une cotation est en direct, et ne prédit jamais où va un prix.
Sécurité
- Éducation et outillage, pas un conseil en investissement. Pour des conseils, parlez à un conseiller en investissement enregistré SEBI. Une PASS est une vérification des règles, pas une recommandation.
- Paper trading par défaut (
"paper": true) : les courtiers indiens n'ont pas de compte papier, donc le papier est un grand livre local simulé (trader-in/state/paper.json). Passer en direct est la décision de l'utilisateur, dans sa propre configuration. - Rien dans ce pack ne passe un ordre sauf trader-in-broker, et seulement lorsque les trois conditions suivantes sont réunies : trader-in-risk a validé cet ordre exact aujourd'hui,
paperest faux, et l'utilisateur a tapé un oui explicite pour cet ordre unique dans le chat. - Actions cash longues uniquement : pas de F&O, options, vente à découvert ou effet de levier MIS, sauf si la configuration le permet et que l'utilisateur confirme.
- Les clés du courtier résident dans des variables d'environnement ou la configuration du bureau Claude, jamais dans le chat.