Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Twitter !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
175
Note:
(8)
Publié:
\MQL5\Include\HybridMicrostructure\
AIBridge.mqh (40.86 KB) afficher
ParamUX.mqh (9.82 KB) afficher
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

L'EA « Hybrid Microstructure » est un Expert Advisor avancé de scalping à haute fréquence, spécialement conçu pour la paire XAUUSD (or) sur la période M1. Contrairement aux indicateurs traditionnels qui s'appuient sur des calculs mathématiques OHLC à retard, cet EA fonctionne sur la dynamique de la microstructure au niveau des ticks: il suit la vitesse des ticks, les écarts par rapport au cours moyen pondéré en fonction du volume (VWAP) et les rejets de balayage de liquidité (stop hunts) exécutés par les institutions.

Backtest :


Afin de combler le fossé entre les règles locales déterministes et l'intelligence adaptative, il intègre une couche décisionnelle « AI Bridge » qui prend en charge à la fois un moteur interne de notation pondérée et une API d'IA locale externe compatible avec OpenAI (via Python/FastAPI), agissant ainsi comme un dernier filtre factuel avant l'exécution des ordres.

Principales fonctionnalités :

  • Moteur de microstructure des ticks : contourne les indicateurs retardés en calculant en temps réel les fenêtres de vélocité des ticks et les écarts VWAP du tampon circulaire.
  • Protection contre la capture de liquidité et le rebond : attend que les ordres stop-loss des particuliers soient balayés au-delà des bandes VWAP extrêmes et ne déclenche les entrées qu’après confirmation d’un rebond ou d’un rejet des prix.
  • Pont IA à double moteur : intègre une matrice de notation locale déterministe et un point de terminaison Web IA local optionnel ( /analyze ) pour la validation des décisions multifactorielles.
  • Filtres multi-sessions et de volatilité : limite l’exécution aux sessions de trading actives (Asie, Londres, Moyen-Orient) tout en contournant les périodes de rollover dangereuses.
  • Gestion avancée des risques et du capital : prend en charge le dimensionnement par lot fixe ou par pourcentage de risque (% du solde/capital) avec protection dynamique par ATR/stop-loss fixe, seuil de rentabilité et stop suiveur.


1. Structure du code et flux de travail :

  • OnTick() : boucle centrale exécutant les vérifications de spread, les mises à jour en temps réel du tampon de ticks, les calculs du VWAP et les machines à états de récupération de liquidité.
  • CalculateTickVWAP() : Calcule dynamiquement le cours moyen pondéré en fonction du volume et les bandes d’écart-type à partir d’un tampon circulaire de 500 ticks.
  • AIBridge_Confirm() : la passerelle de décision agissant comme un filtre final en évaluant les tendances sur plusieurs timeframes (H1, M15, M5), la structure M1 et les indicateurs de vélocité.
  • AIBridge_LocalScore() : Calcule un score pondéré déterministe (de 0,0 à 1,0) sur la base des données de marché mesurées.
  • AIBridge_WebCall() : Regroupe les données de marché en temps réel dans une charge utile JSON stricte et communique de manière asynchrone avec un serveur Python/FastAPI local.
  • SecureProfits() : Gère en toute sécurité les modifications automatisées du seuil de rentabilité et du stop suiveur à l’aide de requêtes MT5 TRADE_ACTION_SLTP.


2. Flux de travail d’exécution :

  1. Collecte et filtrage des ticks : valide les ticks entrants par rapport au spread maximal autorisé, aux heures de négociation actives et à la volatilité ATR M1 minimale.
  2. Suivi de la microstructure : construit en continu un tampon circulaire pour évaluer l’accélération de la vitesse des ticks et les écarts des bandes VWAP (+/- écart-type).
  3. Déclenchement et validation par l’IA : lorsqu’un balayage de liquidité dépasse les bandes extérieures, suivi d’un rejet par rebond, le contexte est envoyé à la couche AI Bridge.
  4. Décision et exécution : si le scoring local ou le modèle d’IA externe approuve la transaction (ALLOW=YES avec un niveau de confiance élevé), la fonction ExecuteTrade() calcule la taille du lot en fonction d’une évaluation dynamique du risque et envoie l’ordre en utilisant les modes d’exécution optimaux (IOC / FOK).


Cet EA est conçu pour envoyer des requêtes HTTP POST avec une charge utile JSON au format OpenAI (contenant `messages`, `role: system` et `role: user`) et attend une réponse JSON contenant `decision`, `confidence` et `reason`.

Pour créer une API IA locale (serveur local) capable de répondre à ces requêtes MT5 en quelques millisecondes, le langage de programmation idéal est Python, en utilisant le framework FastAPI. FastAPI est léger, ultra-rapide et parfaitement adapté au traitement des données à haute fréquence provenant de MT5.

Vous trouverez ci-dessous le code complet du serveur Python. Vous pourrez ultérieurement intégrer un véritable modèle d’apprentissage automatique (tel que TensorFlow, Scikit-Learn ou même Ollama pour un LLM local) à ce moteur.


1. Configuration de l’environnement Python

Assurez-vous que Python est installé sur votre ordinateur. Ouvrez le Terminal ou l’Invite de commandes et installez ces deux bibliothèques indispensables :

pip install fastapi uvicorn

2. Code de l’API Python (local_ai_bridge.py)

Créez un fichier nommé local_ai_bridge.py sur votre ordinateur et copiez-y le code suivant : (Python)

from fastapi import FastAPI, Request
from pydantic import BaseModel
from typing import List, Optional
import json
import uvicorn

app = FastAPI(title="MT5 AI Microstructure Bridge")

# --- MODÈLES DE DONNÉES (Compatibles avec le format de données MQL5) ---
class Message(BaseModel):
    role: str
    content: str

class AIRequest(BaseModel):
    model: str
    temperature: float
    response_format: Optional[dict] = None
    messages: List[Message]

# --- POINT DE FINALITÉ PRINCIPAL (/analyze) ---
@app.post("/analyze")
async def analyze_market(payload: AIRequest):
    """
    This endpoint receives tick and microstructure data from MT5,
    analyzes the data, and returns a BUY/SELL/WAIT decision.
    """
    
    # 1. Extraire les données JSON du message « user » envoyé par MT5
    user_content = "{}"
    for msg in payload.messages:
        if msg.role == "user":
            user_content = msg.content
            break
            
    try:
        facts = json.loads(user_content)
    except json.JSONDecodeError:
        return {"decision": "WAIT", "confidence": 0.0, "reason": "Invalid JSON format"}

    # 2. Recueillir des données sur le marché
    order_type = facts.get("order_type", "WAIT")
    high_velocity = facts.get("high_velocity", False)
    snapback_pips = facts.get("snapback_pips", 0.0)
    min_snapback = facts.get("min_snapback_pips", 2.0)
    deviation_z = facts.get("deviation_z", 0.0)
    
    mtf = facts.get("mtf", {})
    m1_structure = facts.get("m1_structure", {})

    # 3. IA / ALGORITHME DE PRISE DE DÉCISION (Peut être remplacé ultérieurement par un modèle d'apprentissage automatique)
    # Voici un exemple simple de logique de décision
    
    confidence = 0.0
    decision = "WAIT"
    reason = ""

    # Évaluer la logique lorsque l'EA demande une confirmation de VENTE
    if order_type == "SELL":
        score = 0
        
        # Vérifier le rebond et la vitesse
        if snapback_pips >= min_snapback and high_velocity:
            score += 0.4

        # Vérifier la présence d'un écart extrême (situation de surachat)
        if deviation_z > 2.0:
            score += 0.3

        # Vérifier la cohérence de l'indicateur MTF (au moins l'H1 ou le M15 doit être baissier)
        if mtf.get("h1_down") or mtf.get("m15_down"):
            score += 0.2

        # Vérification du rejet de la figure M1 (mèche supérieure longue)
        if m1_structure.get("upper_wick_ratio", 0.0) >= 0.2:
            score += 0.1

        confidence = score
        if confidence >= 0.70:
            decision = "SELL"
            reason = "High velocity drop, MTF align, Z-Score high"
        else:
            reason = f"Score only {confidence:.2 f}, lacking momentum"

    # Évaluer la logique lorsque l'EA demande une confirmation d'ACHAT
    elif order_type == "BUY":
        score = 0
        
        # Vérifier le rebond et la vitesse
        if snapback_pips >= min_snapback and high_velocity:
            score += 0.4

        # Vérifier l'écart extrême (la variable « deviation_z » est déjà corrigée en fonction de la direction dans MQL5)
        if deviation_z > 2.0:
            score += 0.3

        # Vérifier l'alignement MTF (au moins H1 ou M15 doit être haussier)
        if mtf.get("h1_up") or mtf.get("m15_up"):
            score += 0.2

        # Vérification du rejet de la figure M1 (mèche inférieure longue)
        if m1_structure.get("lower_wick_ratio", 0.0) >= 0.2:
            score += 0.1

        confidence = score
        if confidence >= 0.70:
            decision = "BUY"
            reason = "High velocity bounce, MTF align, Z-Score high"
        else:
            reason = f"Score only {confidence:.2 f}, lacking momentum"

    # 4. Renvoyer la réponse JSON à MT5
    return {
        "decision": decision,
        "confidence": round(confidence, 2),
        "reason": reason[:60]  # Limiter la description à 60 caractères maximum pour MT5
    }

if __name__ == "__main__":
    # Démarrer le serveur local sur le port 8787, conformément au paramètre InpAIEndpoint dans MQL5
    print("AI Bridge Server is running on http://127.0.0.1:8787")
    uvicorn.run(app, host="127.0.0.1", port=8787)

3. Comment lancer le serveur et se connecter à MT5

  1. Ouvrez le Terminal et accédez au dossier dans lequel se trouve le fichier Python.
  2. Exécutez la commande :
  3. Le serveur va démarrer et écouter sur [http://127.0.0.1:8787](http://127.0.0.1:8787).
  4. Sur la plateforme MetaTrader 5, assurez-vous d'avoir ajouté l'URL [http://127.0.0.1](http://127.0.0.1) à la liste des URL WebRequest autorisées :
    1. Allez dans Outils -> Options -> Conseillers experts.
    2. Cochez la case « Autoriser les requêtes Web pour les URL répertoriées ».
    3. Ajoutez l'URL [http://127.0.0.1](http://127.0.0.1) à la liste.
  5. Lancez votre EA. Celui-ci enverra désormais des données en temps réel à l’API Python ; Python les analysera en fonction des paramètres définis dans la fonction Python et renverra des commandes ACHETER/VENDRE/ATTENDRE à MT5.

Cette architecture Python est hautement évolutive. Si, à l’avenir, vous souhaitez stocker cet historique des mouvements de prix dans une base de données (pour des données d’entraînement en apprentissage automatique) ou le connecter à un modèle de prédiction (tel que XGBoost ou Random Forest), il vous suffira de modifier la section marquée par le commentaire n° 3 — INTELLIGENCE ARTIFICIELLE / ALGORITHME DE DÉCISION—dans le code ci-dessus.

En cas de réussite, Print Expert s’affichera comme suit :



Creating a Python file (.py) is actually very simple. Essentially, a Python file is just a standard text file (like a .txt file) with its extension changed to .py.

Avec MetaTrader 5 (qui fonctionne généralement sous Windows), voici les 3 méthodes les plus simples pour créer le fichier local_ai_bridge.py :

Méthode 1 : à l’aide du Bloc-notes (méthode la plus rapide et ne nécessitant aucune application supplémentaire)

Il s’agit de la méthode la plus rapide sous Windows :

  1. Ouvrez l’application Bloc-notes intégrée à Windows.
  2. Copiez l'intégralité du code Python FastAPI que j'ai fourni plus haut (ci-dessus). [2. Code API Python (local_ai_bridge.py)]
  3. Collez le code dans un document vierge du Bloc-notes.
  4. Cliquez sur le menu Fichier > Enregistrer sous…
  5. Sélectionnez le dossier dans lequel vous souhaitez enregistrer ce fichier (par exemple, créez un nouveau dossier nommé AI_MT5 dans « Documents » ou sur le Bureau).
  6. TRÈS IMPORTANT : dans la section « Enregistrer sous le type », remplacez le paramètre « Documents texte (*.txt) » par « Tous les fichiers (*.*) ».
  7. Dans le champ « Nom de fichier », saisissez exactement : local_ai_bridge.py
  8. Cliquez sur Enregistrer. C'est terminé !

Conseils supplémentaires après la création du fichier :

Pour l’exécuter, assurez-vous d’ouvrir l’invite de commande (CMD) dans le dossier où se trouve le fichier `local_ai_bridge.py`, puis saisissez la commande suivante pour l’exécuter :

python local_ai_bridge.py

Si l'opération réussit, votre fenêtre CMD affichera un message indiquant que le serveur Uvicorn/FastAPI est en cours d'exécution.

//-------------------------


Pour que Python puisse exécuter le fichier `local_ai_bridge.py`, le terminal doit se trouver dans le même dossier que ce fichier. Voici les trois méthodes les plus simples pour y parvenir sous Windows (choisissez celle qui vous convient le mieux) :

Méthode 1 : Astuce de la « barre d'adresse » de l'Explorateur de fichiers (la plus simple et la plus rapide)

C’est une astuce très appréciée des programmeurs car elle est très pratique :

  1. Ouvrez l’Explorateur de fichiers (l’écran où vous consultez habituellement vos fichiers et dossiers).
  2. Accédez au dossier dans lequel vous avez enregistré le fichier `local_ai_bridge.py` précédemment.
  3. Cliquez une fois avec le bouton gauche de la souris sur la barre d’adresse en haut (le long champ indiquant l’emplacement du dossier, par exemple C:\Users\VotreNom\Documents\AI_MT5).
  4. Le texte de l'adresse sera surligné en bleu. Supprimez le texte, puis tapez : cmd
  5. Appuyez sur la touche Entrée du clavier.
  6. Un écran noir (l'invite de commande) s'ouvrira immédiatement, situé exactement dans ce dossier.

Étapes d'exécution (si l'invite de commande est déjà ouverte dans le bon dossier)

Une fois que la fenêtre noire ou bleue s'ouvre dans le dossier correct, il vous suffit de donner une commande à Python pour lancer le robot IA.

  1. Tapez cette commande :
    1. python local_ai_bridge.py
  2. Appuyez sur Entrée.

Si l'installation des bibliothèques (fastapi et uvicorn) s'est déroulée correctement, vous verrez s'afficher le message « AI Bridge Server is running on http://127.0.0.1:8787 » ou un message indiquant « Uvicorn running on... »


Comme suit :

Le serveur AI Bridge est en cours d'exécution sur http://127.0.0.1:8787

INFO : Processus serveur démarré [4168]

INFO : En attente du démarrage de l'application.

INFO : Démarrage de l’application terminé.

INFO : Uvicorn s'exécute sur http://127.0.0.1:8787 (Appuyez sur CTRL+C pour quitter)

Ce texte indique que :

  1. Initialisation réussie : l’EA a détecté avec succès le symbole XAUUSD avec un multiplicateur de pip de 10,0 (détection correcte d’un courtier à 3 chiffres/5 chiffres).
  2. AI Bridge actif : le module AIBridge v1.1 s’est chargé avec succès en mode HYBRID, connecté au point de terminaison local [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze), et a détecté qu’aucune autorisation par clé n’est requise (anonyme), ce qui convient à notre serveur Python local.
  3. Multi-périodes et structure verrouillée : les indicateurs de tendance (H1, M15, M5) et la structure des bougies fermées M1 sont prêts à surveiller le marché.

Que signifie cette indication ?

Cela signifie que l’EA et notre serveur Python local fonctionnent désormais en parallèle et sont prêts à interagir. L’EA n’est plus « aveugle » : il dispose d’un « cerveau local » qui filtre chaque signal de « Liquidity Sweep » et de « Velocity » sur la période M1 de l’or avant de décider d’exécuter un ordre ou de s’abstenir (WAIT).

Il ne vous reste plus qu’à surveiller les mouvements du graphique ou à effectuer des tests prospectifs sur un compte démo ou réel. Lorsque les conditions de « sweep » et les exigences de vitesse de tick sont remplies, vous verrez apparaître en temps réel dans le journal des journaux de décision, tels que `[AI] SELL HYBRID ... ALLOW=YES` ou `NO`.


Visualisation dans le testeur de stratégie :



Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/76331

Wolfe Wave Dashboard Wolfe Wave Dashboard

Indicateur MQL5 professionnel (fenêtre séparée) qui analyse automatiquement plusieurs symboles et périodes, détecte les figures de Wolfe Wave valides les plus récentes (haussières/baissières), les affiche dans un tableau de bord interactif et permet d'ouvrir un graphique en un clic avec le tracé complet de la figure.

Heiken Ashi ATR Blend Heiken Ashi ATR Blend

Heiken Ashi ATR Blend combines smoothed Heiken Ashi candles, ATR-based volatility filtering, and fast/slow EMA trend confirmation to identify potential trend-change signals.

Position sizing from risk, using the broker's own tick value and volume step Position sizing from risk, using the broker's own tick value and volume step

Position size from a risk amount, computed from the symbol's real tick value, tick size and volume step rather than an assumed pip value. It always rounds volume down, and when your risk is smaller than the minimum lot it says so and reports what that lot actually costs. No terminal state, so the sizing logic is testable offline - a 41-assertion test script is included.

Fisher Transform Indicator Fisher Transform Indicator

Un oscillateur à transformée de Fisher élaboré à partir des principes statistiques fondamentaux : il normalise le cours dans une fourchette délimitée, puis applique une transformée logarithmique afin de générer des signaux de retournement nets et bien définis, contrairement aux inversions progressives caractéristiques des oscillateurs classiques. L'état récursif interne est géré à l'aide de tampons de calcul adaptés, garantissant un comportement fiable et correct lors des backtests. Extrait de la série d'articles « Créer des indicateurs personnalisés pour les débutants ».