SKILL : signal — Sinyal Scalping M3/M5 via Débat 2 IA
1. DÉCLENCHEURS ET MODE
| Déclencheur | Signification |
|---|---|
signal-<pair> (ex. signal-xauusd, signal-eurusd) | Générer un signal d'ordre pending entry sur M3/M5 |
signal-result win / signal-result lose [raison] | L'utilisateur rapporte le résultat du dernier signal → enregistré dans l'historique |
<pair>= symbole MT5 local. Résoudre avec~/.local/share/mt5-venv/bin/python scripts/mt5_query.py symbols <query>. Si introuvable, afficher les candidats les plus proches, ne pas inventer.- Ne pas poser de questions si la paire est évidente. Ne pas se précipiter — 3 à 5 échanges de débat sont normaux, la qualité prime sur la vitesse.
2. RÈGLES DE TRADING STRICTES (vérifiées par le JUGE, pas par l'analyste)
- Type d'ordre : BUY/SELL LIMIT ou STOP uniquement (ordre pending à un niveau technique). L'ordre au marché n'est autorisé que si les deux analystes conviennent que le prix est exactement au niveau et que cela est explicitement écrit.
- SL maximum 3 $ par signal (lot 0.01) — PAS 300 points fixes. Conversion automatique par paire à partir du bloc
riskde la sortiemt5_query.py scalp:sl_max_points = risk.sl_max_points(XAUUSD ≈ 300 points = 3 $ ; autres paires automatiquement différentes). Tout SL d'analyste qui dépasse cela = REJETÉ par le juge, renvoyé pour correction. - TP = RR 1:1,5 ou 1:2 par rapport à la distance du SL. Choisir l'un des deux, préciser le RR utilisé.
- Timeframe d'analyse : M3 + M5 (principaux) + H1 (tendance générale rapide).
- Spread raisonnable : si le spread > ~20 % de la distance du SL proposé, l'analyste doit le signaler (l'ordre limit est plus sûr en cas de spread large).
3. DONNÉES (exclusivement MT5 local — PAS de web/websearch, pour rester rapide)
Commande unique :
~/.local/share/mt5-venv/bin/python ~/.config/opencode/skills/signal/scripts/mt5_query.py scalpe <SYMBOL>
Sortie JSON : bid/ask, spread, risk (usd/point, sl_max_points), variation journalière, M3/M5/H1 (ATR14, EMA20/50, tendance, S/R, plage, dernière bougie + direction du corps).
Fournir cette sortie brute aux DEUX analystes. Interdiction d'inventer des données MT5.
Fuseau horaire : indiquer l'heure en WIB + heure serveur MT5 (UTC+3) entre parenthèses, exemple 21:45 WIB (17:45 serveur). WIB = serveur + 4 heures.
4. APPRENTISSAGE À PARTIR DE L'HISTORIQUE (OBLIGATOIRE AVANT LE DÉBAT)
- Avant le round 1, le juge récupère l'historique :
rclone cat gdrive:Linux-Server/signals/track-record.md(si 404/introuvable = encore vide, continuer sans historique — le signaler). - Résumer les tendances des derniers résultats (ex. « les 5 dernières pertes sont toutes des sell-limit en tendance baissière ») et les TRANSMETTRE aux deux analystes comme contexte d'apprentissage : les schémas gagnants peuvent être répétés, les schémas perdants doivent être évités ou contredits par l'analyste expliquant pourquoi cette fois est différente.
- Le signal est enregistré dans
gdrive:Linux-Server/signals/<YYYYMMDD>-<pair>/signal.mdstatutPENDING(voir §7).
5. DÉBAT (2 analystes + 1 juge, 3 à 5 échanges)
Rôles et modèles (utiliser l'outil subagent, agent general, paramètre model explicite) :
| Rôle | Modèle | Tâche |
|---|---|---|
| Analyste 1 — Technique Entrée | opencode/step-5-preview-free | Structure M3/M5, type d'ordre (limit/stop), entrée, SL, TP, timing |
| Analyste 2 — Gestionnaire de Risques | opencode/nemotron-3.5-lightning-free | Validation SL/TP, R:R, pièges de niveau (stop hunt, spread, session), dimensionnement de position |
| Juge = agent principal, modèle DE LA SESSION EN COURS (dynamique) | — | Neutre : orchestration, envoi des données, vérification des règles strictes (§2), comptage des votes, rédaction de la sortie. INTERDICTION d'analyser/donner un avis sur la direction du marché. Le juge = le modèle IA exécutant cette session — peut être n'importe quel fournisseur ; ne pas supposer qu'il est toujours custom/auto. Lors de la rédaction de la sortie, vérifier votre propre modèle et écrire son nom réel. |
Déroulement :
- Round 1 (indépendant) : envoyer les données MT5 + le résumé de l'historique aux deux analystes. Chacun propose : direction, type d'ordre, entrée, SL (points & $), TP (RR), confiance %, raison.
- Rounds de débat (1-3 rounds) : échange de textes. Possibilité de demander de nouvelles données MT5 (relancer
scalp— le prix bouge). Se concentrer sur les différences d'opinion réelles : niveaux, type d'ordre, validité du SL. - Position finale : chacun énonce sa position finale.
- Vote : si les deux analystes sont d'accord → signal valide. Désaccord = NO TRADE (sortie officielle : pas de signal + brève raison). C'est un résultat valide et normal, ne pas forcer.
Modèles de repli en cas de limite de débit (ordre Tier 1) : opencode/longcat-2.5-preview-free
→ opencode/space-bunny-free → opencode/cat-jam-free ; Tier 2 max 1 analyste :
9roy/9router_combo ; Tier 3 : custom/auto (« babu ») — seulement si le juge n'est PAS custom/auto (un modèle ne peut pas jouer deux rôles). Ne pas utiliser deux analystes du même fournisseur s'il existe une alternative. Retry erreur max 2× ; si les deux analystes échouent complètement = signaler et arrêter.
6. BUDGET
Calcul simple : 1 appel analyste = 3, retry/repli = 1, tool call juge = 1. Objectif total 12-27 (2-3 appels analyste × ~3 rounds + tool).
Écrire en sortie : Budget : X/27 (méthode : poids-signal).
Ne pas dépasser 27 — 3 à 5 échanges de débat suffisent, au-delà arrêter et rédiger la sortie.
7. SORTIE & STOCKAGE (rclone, zéro fichier local)
a) Signal (si valide)
Format de réponse à l'utilisateur (résumé du débat d'abord, résultat tout en bas) :
- Résumer le débat : propositions initiales, points clés du débat (inclure de brèves citations), résultat du vote + modèles IA utilisés par rôle.
- Puis TOUT EN BAS le bloc signal :
🔔 SIGNAL <PAIR> — <BUY/SELL> <LIMIT/STOP>
Entrée : <prix> | SL : <prix> (<X> points = $<Y>, max 3 $)
TP : <prix> (RR 1:<r>) | Confiance : <Z>%
Raison : <1-2 phrases en langage humain — pourquoi ce niveau et cette direction, depuis le débat>
Valable : <note de timing/expiration, ex. annulé si le prix a déjà dépassé le niveau>
- Enregistrer via
rclone rcat gdrive:Linux-Server/signals/<YYYYMMDD>-<PAIR>/signal.mdcontenant : date, paire, signal complet, arguments des deux analystes, vote, modèles, budget, statut :PENDING.
b) Pas de trade (vote différent / données invalides)
Sortie : "🚫 NO TRADE — <brève raison depuis le débat>", enregistrer dans le même dossier avec le statut NO-TRADE.
c) Commande signal-result win|lose [raison]
- Chercher le dernier signal
PENDING:rclone lsf gdrive:Linux-Server/signals/ --dirs-only | sort | tail→ liresignal.mdviarclone cat. S'il n'y a pas de PENDING, demander à l'utilisateur de quel signal il s'agit (autoriser une question en retour dans ce mode). - Mettre à jour
signal.mdsur Drive : statut →WIN/LOSE, ajouter une ligne de résultat + raison de l'utilisateur + date de clôture. - Ajouter à l'historique
gdrive:Linux-Server/signals/track-record.md(créer s'il n'existe pas) une ligne :YYYYMMDD | pair | direction+type | entrée | résultat WIN/LOSE | raison utilisateur. - Répondre brièvement à l'utilisateur : résultat enregistré + statistiques de l'historique en cours
(ex.
XAUUSD : 4W-2L, winrate 67 %— calculer à partir de l'historique).
d) Signal expiré
Si l'utilisateur signale que le signal n'a jamais atteint son entrée (prix passé/inversé), l'enregistrer comme LOSE avec la raison de l'utilisateur (ex. « moment manqué ») — cela reste un apprentissage valide.
8. INTERDICTIONS
- Interdiction d'utiliser websearch/web fetch — données exclusivement MT5 local.
- Interdiction d'inventer des prix/ATR/niveaux.
- Interdiction de donner un signal si le spread est extrême ou le marché fermé (tick_time obsolète) — sortie NO TRADE.
- Interdiction de SL supérieur à 3 $, TP en dehors de RR 1:1,5/1:2, ordre au marché sans accord des deux analystes.
- Interdiction pour le juge d'évaluer la direction du marché.
- Interdiction pour le juge d'analyser/donner un avis — même si le modèle du juge est intelligent, son rôle est purement modérateur. L'analyse reste le travail des analystes.