Auto-mode & risque

Deux couches de configuration : sizing (combien tu risques par signal) et auto-mode (est-ce que Kairo exécute sans validation humaine ?). Les deux sont par compte broker, jamais globaux.

Modes de sizing

Choisis dans Paramètres → Comptes MT5 → [compte] → Sizing :

  • risk-% (défaut) — Kairo calcule le lot pour risquer X% de la balance sur la distance entry ↔ SL. Recommandé.
  • split-risk-% — même chose mais réparti sur 3 ordres (TP1/2/3) selon une distribution (défaut 50/30/20).
  • fixed-lot — tu poses un lot fixe (ex : 0.10). Simple mais ne s'adapte pas à la vol.

Le calcul est fait côté serveur à partir des specs live du symbole (tick value, volume step) fournies par MetaApi — jamais par l'IA.

Auto-mode

Par défaut, chaque signal validé passe par un clic humain. Tu peux activer l'auto-mode par compte broker :

Paramètres → Comptes MT5 → [compte] → Auto-trade (toggle) — les signaux qui matchent les gates (voir plus bas) sont exécutés automatiquement, sans validation manuelle. Un bandeau rouge s'affiche en tête du dashboard tant qu'un compte est en auto-mode.

Suivis automatiques (BE, TP hit, close)

Une fois le trade ouvert :

  • TP1 hit → auto-BE (option) — quand TP1 est atteint, Kairo déplace le SL de TP2/TP3 au break-even. Toggle tp1AutoBreakEven par compte.
  • Break-even manuel — un message Telegram "BE" sur le signal parent est automatiquement appliqué sur le compte (si auto-mode activé, sinon apparaît dans Actions à valider).
  • Close partial / move SL / close all — même logique.

Gates de sécurité (§20 du cdc)

Un signal validé (manuel ou auto) est refusé ou mis en review si :

  • Symbole inconnu du broker (unknown symbol)
  • Prix incohérents (BUY avec SL > entry, spread > seuil)
  • SL manquant (sauf cas XAUUSD explicite)
  • Marge insuffisante sur le compte
  • Broker déconnecté (MT4 ou MT5)
  • Doublon (même signal dans les 10 dernières minutes, tolérance configurable)
  • Message stale (Telegram sent_at > 5 min)
  • JSON LLM invalide (rare, retry automatique)

Ces gates s'appliquent avant l'envoi à MetaApi — un signal refusé apparaît dans Signaux en attente avec le motif.