Unisciti alla nostra fan page
- Visualizzazioni:
- 40
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
L'EA Hybrid Microstructure è un Expert Advisor avanzato per lo scalping ad alta frequenza, progettato specificatamente per la coppia XAUUSD (oro) sul timeframe M1. A differenza degli indicatori tradizionali che si basano su calcoli matematici OHLC in ritardo, questo EA opera sulle dinamiche della microstruttura a livello di tick, monitorando la velocità dei tick, le deviazioni del prezzo medio ponderato per il volume (VWAP) e i rifiuti di liquidità (stop hunt) eseguiti dalle istituzioni.
Backtest:
Per colmare il divario tra le regole locali deterministiche e l’intelligenza adattiva, è dotato di un livello decisionale “AI Bridge” che supporta sia un motore interno di punteggio ponderato sia un’API locale di intelligenza artificiale esterna compatibile con OpenAI (tramite Python/FastAPI), che funge da gatekeeper finale basato sui fatti prima dell’esecuzione dell’ordine.
Caratteristiche principali:
- Motore di microstruttura dei tick: aggira gli indicatori in ritardo calcolando finestre di velocità dei tick in tempo reale e deviazioni del VWAP nel buffer circolare.
- Liquidity Grab & Snapback Guard: attende che gli stop-loss al dettaglio vengano spazzati oltre le bande VWAP estreme e attiva gli ingressi solo in seguito a un confermato snapback/rifiuto del prezzo.
- Ponte AI a doppio motore: integra una matrice di scoring locale deterministica e un endpoint web AI locale opzionale ( /analyze ) per la convalida delle decisioni multifattoriale.
- Filtri multisessione e di volatilità: limita l’esecuzione alle sessioni di trading attive (Asia, Londra, Medio Oriente), evitando i pericolosi periodi di rollover.
- Gestione avanzata del rischio e del capitale: supporta il dimensionamento con lotto fisso o percentuale di rischio (% del saldo/capitale) con protezione dinamica tramite ATR/stop-loss fisso, break-even e trailing stop.
1. Struttura del codice e flusso di lavoro:
- OnTick(): il ciclo principale che esegue i controlli dello spread, gli aggiornamenti in tempo reale del buffer dei tick, i calcoli del VWAP e le macchine a stati per l’acquisizione della liquidità.
- CalculateTickVWAP(): Calcola dinamicamente il prezzo medio ponderato per il volume e le bande di deviazione standard da un buffer circolare di 500 tick.
- AIBridge_Confirm(): il gateway decisionale che funge da filtro finale valutando le tendenze su più timeframe (H1, M15, M5), la struttura M1 e le metriche di velocità.
- AIBridge_LocalScore(): calcola un punteggio ponderato deterministico (da 0,0 a 1,0) basato sui dati di mercato rilevati.
- AIBridge_WebCall(): Raggruppa i dati di mercato in tempo reale in un payload JSON rigoroso e comunica in modo asincrono con un server locale Python/FastAPI.
- SecureProfits(): Gestisce in modo sicuro le modifiche automatizzate del Break-Even e del Trailing Stop utilizzando le richieste MT5 TRADE_ACTION_SLTP.
2. Flusso di lavoro di esecuzione:
- Acquisizione e filtraggio dei tick: Verifica i tick in entrata rispetto allo spread massimo consentito, agli orari di negoziazione attivi e alla volatilità ATR M1 minima.
- Monitoraggio della microstruttura: crea continuamente un buffer ad anello per valutare l’accelerazione della velocità dei tick e l’allargamento delle bande VWAP (+/- deviazione standard).
- Attivazione e convalida tramite IA: quando uno sweep di liquidità supera le bande esterne seguito da un rifiuto di snapback, il contesto viene inviato all’AI Bridge Layer.
- Decisione ed esecuzione: se il punteggio locale o il modello di IA esterno approvano l’operazione (ALLOW=YES con elevata confidenza), ExecuteTrade() calcola il dimensionamento dinamico del lotto basato sul rischio e invia l’ordine utilizzando le modalità di esecuzione ottimali (IOC / FOK).
Questo EA è progettato per inviare richieste HTTP POST con un payload JSON in stile OpenAI (contenente `messages`, `role: system` e `role: user`) e si aspetta una risposta JSON contenente `decision`, `confidence` e `reason`.
Per creare un’API di IA locale (server locale) in grado di rispondere a queste richieste MT5 in pochi millisecondi, il linguaggio di programmazione ideale è Python utilizzando il framework FastAPI. FastAPI è leggero, velocissimo e perfettamente adatto all’elaborazione di dati ad alta frequenza provenienti da MT5.
Di seguito è riportato il codice completo del server Python. In seguito potrai integrare in questo motore un vero e proprio modello di Machine Learning (come TensorFlow, Scikit-Learn o persino Ollama per un LLM locale).
1. Configurazione dell’ambiente Python
Assicurati che Python sia installato sul tuo computer. Apri il Terminale o il Prompt dei comandi e installa queste due librerie essenziali:
pip install fastapi uvicorn
2. Codice API Python (local_ai_bridge.py)
Crea un file denominato local_ai_bridge.py sul tuo computer e copia il seguente codice: (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") # --- MODELLI DI DATI (Compatibili con il formato dati MQL5) --- class Message(BaseModel): role: str content: str class AIRequest(BaseModel): model: str temperature: float response_format: Optional[dict] = None messages: List[Message] # --- ENDPOINT PRINCIPALE (/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. Estrarre i dati JSON dal messaggio "user" inviato da 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. Analisi dei dati di mercato 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 / ALGORITMO DECISIONALE (Può essere sostituito in seguito con un modello di apprendimento automatico) # Questo è un semplice esempio di logica decisionale confidence = 0.0 decision = "WAIT" reason = "" # Valutare la logica quando l'EA richiede la conferma di VENDITA if order_type == "SELL": score = 0 # Verifica dello snapback e della velocità if snapback_pips >= min_snapback and high_velocity: score += 0.4 # Verifica la deviazione estrema (condizione di ipercomprato) if deviation_z > 2.0: score += 0.3 # Verifica l'allineamento MTF (almeno H1 o M15 devono essere ribassisti) if mtf.get("h1_down") or mtf.get("m15_down"): score += 0.2 # Verifica del rifiuto dell'M1 (coda superiore lunga) 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" # Valutare la logica quando l'EA richiede la conferma di ACQUISTO elif order_type == "BUY": score = 0 # Verifica dello snapback e della velocità if snapback_pips >= min_snapback and high_velocity: score += 0.4 # Verifica della deviazione estrema (la variabile `deviation_z` è già corretta in base alla direzione in MQL5) if deviation_z > 2.0: score += 0.3 # Verifica l'allineamento MTF (almeno H1 o M15 devono essere rialzisti) if mtf.get("h1_up") or mtf.get("m15_up"): score += 0.2 # Verifica del rifiuto dell'M1 (coda inferiore lunga) 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. Invia la risposta JSON a MT5 return { "decision": decision, "confidence": round(confidence, 2), "reason": reason[:60] # Limitare la motivazione a un massimo di 60 caratteri per MT5 } if __name__ == "__main__": # Avvia il server locale sulla porta 8787, in corrispondenza del parametro InpAIEndpoint in 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. Come eseguire il server e connettersi a MT5
- Apri il Terminale e accedi alla cartella in cui è salvato il file Python.
- Esegui il comando:
- Il server si avvierà e resterà in ascolto all'indirizzo [http://127.0.0.1:8787](http://127.0.0.1:8787).
- Sulla piattaforma MetaTrader 5, assicurati di aver aggiunto l’URL [http://127.0.0.1](http://127.0.0.1) all’elenco degli URL WebRequest consentiti:
- Vai su Strumenti -> Opzioni -> Expert Advisor.
- Selezionare "Consenti WebRequest per gli URL elencati".
- Aggiungi l’URL [http://127.0.0.1](http://127.0.0.1) all’elenco.
- Esegui il tuo EA. L'EA invierà ora dati in tempo reale all’API Python; Python li analizzerà in base ai parametri definiti nella funzione Python e invierà i comandi BUY/SELL/WAIT a MT5.
Questa architettura Python è altamente scalabile. Se, in futuro, desideri archiviare questa cronologia dei movimenti di prezzo in un database (come dati di addestramento per l’apprendimento automatico) o collegarla a un modello di previsione (come XGBoost o Random Forest), ti basterà modificare la sezione contrassegnata dal commento n. 3 — INTELLIGENZA ARTIFICIALE / ALGORITMO DECISIONALE—nel codice sopra riportato.
Se l’operazione va a buon fine, Print Expert apparirà come segue:
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.
Utilizzando MetaTrader 5 (che in genere funziona su Windows), ecco i 3 modi più semplici per creare il file local_ai_bridge.py:
Metodo 1: Utilizzo di Blocco note (il più veloce e senza bisogno di installare applicazioni aggiuntive)
Questo è il metodo più veloce sul sistema operativo Windows:
- Apri l’applicazione Blocco note integrata in Windows.
- Copiare l’intero codice Python FastAPI che ho fornito in precedenza (sopra). [2. Codice API Python (local_ai_bridge.py)]
- Incolla il codice in un documento vuoto di Blocco note.
- Fare clic sul menu File > Salva con nome...
- Selezionare la cartella in cui si desidera salvare questo file (ad esempio, creare una nuova cartella denominata AI_MT5 in Documenti o sul Desktop).
- MOLTO IMPORTANTE: nella sezione "Salva come tipo", modifica l'impostazione da "Documenti di testo (*.txt)" a "Tutti i file (*.*)".
- Nel campo Nome file, digitare esattamente: local_ai_bridge.py
- Fai clic su Salva. Fatto!
Suggerimenti aggiuntivi dopo la creazione del file:
Per eseguirlo, assicurati di aprire il Prompt dei comandi (CMD) nella cartella in cui si trova il file `local_ai_bridge.py`, quindi digita il comando per eseguirlo:
python local_ai_bridge.py
Se l’operazione va a buon fine, nella finestra del CMD verrà visualizzato un messaggio che indica che il server Uvicorn/FastAPI è in esecuzione.
//-------------------------
Affinché Python possa eseguire il file `local_ai_bridge.py`, il Terminale deve trovarsi nella stessa cartella di quel file. Ecco i tre modi più semplici per farlo su Windows (scegli quello che preferisci):
Metodo 1: Trucco della "barra degli indirizzi" di Esplora file (il più semplice e veloce)
Questo è uno dei trucchi preferiti dai programmatori perché è molto pratico:
- Apri Esplora file (la schermata in cui di solito visualizzi file e cartelle).
- Vai alla cartella in cui hai salvato in precedenza il file local_ai_bridge.py.
- Fai clic con il tasto sinistro del mouse una volta sulla barra degli indirizzi in alto (il campo lungo che mostra il percorso della cartella, ad esempio C:\Users\YourName\Documents\AI_MT5).
- Il testo dell’indirizzo verrà evidenziato in blu. Cancella il testo, quindi digita: cmd
- Premere il tasto Invio sulla tastiera.
- Si aprirà immediatamente una schermata nera (Prompt dei comandi), posizionata esattamente all’interno di quella cartella.
Passaggi di esecuzione (se il terminale è già aperto nella cartella corretta)
Una volta aperta la finestra nera o blu nella cartella corretta, è sufficiente impartire un comando a Python per avviare il robot AI.
- Digita questo comando:
-
python local_ai_bridge.py
- Premi Invio.
Se l'installazione delle librerie (fastapi e uvicorn) è andata a buon fine, vedrai apparire il testo "AI Bridge Server is running on http://127.0.0.1:8787" oppure un messaggio che indica "Uvicorn running on..."
Come segue:
AI Bridge Server è in esecuzione su http://127.0.0.1:8787
INFO: Avviato il processo del server [4168]
INFO: In attesa dell'avvio dell'applicazione.
INFO: Avvio dell’applicazione completato.
INFO: Uvicorn in esecuzione su http://127.0.0.1:8787 (Premere CTRL+C per uscire)
Il testo indica che:
- Inizializzazione riuscita: l’EA ha rilevato correttamente il simbolo XAUUSD con un moltiplicatore di pip pari a 10,0 (rilevando correttamente un broker a 3 cifre/5 cifre).
- AI Bridge attivo: il modulo AIBridge v1.1 è stato caricato con successo in modalità HYBRID, connesso all’endpoint locale [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze) e ha rilevato che non è richiesta l’autorizzazione tramite chiave (anonimo), il che è adatto al nostro server Python locale.
- Multi-timeframe e struttura “Locked”: gli indicatori di tendenza supportati (H1, M15, M5) e la struttura “M1 Closed Candle” sono pronti per monitorare il mercato.
Cosa significa questa indicazione?
Ciò significa che l’EA e il nostro server Python locale sono ora in esecuzione in parallelo e pronti a interagire. L’EA non è più “cieco”: possiede un “cervello locale” che filtra ogni segnale di Liquidity Sweep e Velocity sul timeframe M1 dell’oro prima di decidere se eseguire un ordine o attendere (WAIT).
A questo punto, basta monitorare i movimenti del grafico o eseguire test prospettici su un conto demo o live. Quando le condizioni di sweep e i requisiti di velocità dei tick saranno soddisfatti, vedrai apparire in tempo reale nel registro i log delle decisioni, come ad esempio `[AI] SELL HYBRID ... ALLOW=YES` o `NO`.
Visualizzazione nel Strategy Tester:

Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/76331
Wolfe Wave Dashboard
Indicatore professionale MQL5 (finestra separata) che analizza automaticamente più simboli e intervalli di tempo, individua i pattern Wolfe Wave validi più recenti (rialzisti/ribassisti), li visualizza in un pannello di controllo interattivo e consente di aprire il grafico con un solo clic, con la rappresentazione completa del pattern.
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 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
Un oscillatore a trasformata di Fisher costruito partendo dai primi principi statistici: il prezzo viene normalizzato in un intervallo limitato, quindi viene applicata una trasformata logaritmica per produrre segnali di inversione netti e ben definiti, anziché le inversioni graduali tipiche degli oscillatori convenzionali. Lo stato ricorsivo interno viene gestito tramite appositi buffer di calcolo per garantire un comportamento affidabile e corretto nei backtest. Tratto dalla serie di articoli «Creazione di indicatori personalizzati per principianti».


