Auftrag beendet
Spezifikation
Cerco uno sviluppatore MQL5 esperto per sviluppare da zero un Expert Advisor completamente nuovo per XAUUSD su MT5.
Non desidero un semplice Expert Advisor basato su indicatori fissi. Desidero un sistema di trading dinamico e adattivo , in grado di adattare il comportamento alle diverse condizioni di mercato di XAUUSD.
Lo sviluppatore può utilizzare tecniche appropriate quali trend Following, momentum, scalping, price action, analisi della volatilità, EMA, ATR, rilevamento dell'edge, breakout, pullback e altre tecniche quantitative, ma non può sostituire o modificare arbitrariamente le regole approvate della strategia .
L'obiettivo è costruire un motore che analizza il regime di mercato e seleziona il comportamento più appropriato, privilegiando robustezza, qualità delle opportunità e protezione del capitale.
1. ATTIVITÀ DI TRADING
L'EA deve cercare continuamente opportunità valide, senza imporre un numero minimo o massimo artificiale di operazioni giornaliere.
La frequenza delle operazioni deve essere una conseguenza delle condizioni di mercato e dei setup validi.
Non deve essere utilizzato alcun meccanismo per generare artificialmente un numero prefissato di operazioni.
2. REGIME DI MERCATO
L'EA deve identificare almeno:
- trend rialzista;
- tendenza ribassista;
- mercato laterale/range;
- volatilità instabile o estrema;
- condizioni non sufficientemente chiare.
Il rilevamento può utilizzare struttura del prezzo, ATR/volatilità, momentum, EMA e analisi multi-timeframe.
In condizioni poco chiare l'EA deve preferire non entrare .
3. LOGICA DI INGRESSO
ACQUISTA RITIRO
Il setup deve riprodurre:
- impulso rialzista significativo tra swing low e swing high confermati;
- riferimento iniziale: impulso di almeno circa 1,5 ATR ;
- pullback indicativamente tra il 30% e il 65% dell'impulso;
- mancata rottura significativa dell'ultimo superiore basso;
- ritorno verso una zona significativa, ad esempio precedente breakout/resistenza trasformata in supporto, media dinamica, livello strutturale o zona ATR/volatilità;
- nessun ingresso durante il semplice pullback;
- necessaria conferma rialzista;
- candela di conferma con chiusura rialzista, chiusura nella parte superiore della candela e corpo sufficientemente significativo;
- rottura del massimo della candela precedente o del piccolo massimo strutturale del pullback;
- slancio positivo;
- RSI, se utilizzato, deve essere un elemento secondario e non l'unico segnale;
- evitare l'ingresso se il prezzo è eccessivamente esteso, con riferimento iniziale di circa 0,75 ATR dalla zona di ripartenza.
ACQUISTA BREAKOUT
Richiesta:
- massimo/resistenza strutturale significativa confermata;
- precedente consolidamento/compressione o struttura di massimi ravvicinati;
- breakout con buffer iniziale circa 0,10–0,20 ATR ;
- chiusura sopra la resistenza + buffer;
- corpo della candela sufficientemente significativo;
- chiusura nella parte alta della candela;
- slancio positivo;
- filtro contro false rotture;
- possibilità di ingresso diretto oppure dopo breakout + retest;
- se il breakout è eccessivamente esteso, attendere il pullback invece di inseguire il prezzo.
SELL PULLBACK
Condizioni analoghe in direzione opposta:
- prezzo sotto la media dinamica principale;
- fast average sotto slow average, se utilizzate;
- pendenza ribassista;
- struttura LL + LH;
- impulso significativo di almeno circa 1,5 ATR;
- pullback circa 30–65%;
- ultimo lower high significativo non deve essere violato da una chiusura significativa;
- ritorno verso una zona strutturale significativa;
- conferma ribassista;
- chiusura nella parte inferiore della candela;
- corpo significativo;
- break del minimo della candela precedente o del minimo strutturale del pullback;
- momentum ribassista;
- evitare eccessiva estensione, riferimento iniziale circa 0,75 ATR.
SELL BREAKOUT
Richiede:
- supporto/low strutturale significativo;
- consolidamento o pressione ribassista precedente;
- breakout con buffer circa 0,10–0,20 ATR;
- chiusura sotto supporto – buffer;
- corpo significativo;
- chiusura nella parte bassa;
- momentum ribassista;
- filtro contro false rotture;
- possibilità di ingresso diretto oppure breakout + retest;
- evitare ingressi eccessivamente estesi.
I valori indicati sono riferimenti iniziali configurabili, da formalizzare numericamente nella specifica finale e verificare nei test.
4. BLOCCHI DI INGRESSO
Un nuovo ingresso deve essere bloccato quando:
- la struttura è troppo laterale o non chiara;
- esiste un forte conflitto multi-timeframe;
- la volatilità è troppo bassa;
- la volatilità è anormalmente estrema;
- lo spread è eccessivo rispetto all'ATR/alle condizioni normali;
- la candela di ingresso è anomala;
- il prezzo è eccessivamente esteso;
- supporto/resistenza vicino lascia spazio insufficiente;
- il rapporto rischio/rendimento effettivo è insufficiente;
- il margine disponibile è insufficiente;
- l'esposizione è già troppo elevata;
- è stato raggiunto il floor protetto del Daily Profit Ratchet;
- è attiva la protezione DD di emergenza;
- è attiva la protezione venerdì/weekend;
- la stessa configurazione è già in gestione senza una nuova struttura genuina;
- una configurazione precedentemente invalidata non ha prodotto una nuova struttura;
- le condizioni di esecuzione/liquidità sono anormali;
- si verificano ripetuti slippage o rifiuti degli ordini.
I filtri devono essere meccanici e verificabili, non basati su valutazioni soggettive.
5. MULTI-TIMEFRAME
L'EA deve utilizzare un contesto multi-timeframe.
Un forte conflitto con il timeframe superiore deve bloccare l'ingresso.
Un conflitto moderato può eventualmente ridurre il rischio, se previsto dalla logica.
Devono essere utilizzati dati confermati e non barre future/repaint.
6. STOP LOSS REALE
Ogni posizione deve avere uno Stop Loss reale lato broker.
Lo SL deve essere calcolato dinamicamente utilizzando struttura + ATR/volatilità, nel rispetto delle condizioni del broker.
Lo SL deve sopravvivere a:
- chiusura dell'EA;
- riavvio di MT5;
- riavvio VPS;
- perdita della connessione.
Non deve mai essere aperta una posizione senza poter inserire immediatamente uno SL broker-side valido.
Se lo SL calcolato è più vicino del minimo consentito dal broker (STOPS_LEVEL) oppure non può essere inserito immediatamente:
L'INGRESSO DEVE ESSERE SALTATO.
Non è consentito aprire prima la posizione e aggiungere lo SL successivamente.
La stessa regola vale per tutte le gambe del Pyramiding.
Il trailing deve rispettare STOPS_LEVEL e FREEZE_LEVEL e qualsiasi modifica rifiutata dal broker deve essere registrata nel log.
7. BREAK-EVEN E GESTIONE DELLA POSIZIONE
Il Break-Even non deve essere attivato immediatamente.
Riferimento iniziale: attivazione intorno a +1R, con spostamento dello SL almeno a pareggio considerando costi e un piccolo buffer.
Il valore deve essere configurabile.
Quando il trade mantiene un edge forte e crescente, non deve essere chiuso semplicemente perché ha raggiunto un piccolo profitto.
Un vincitore può rimanere aperto anche per ore se struttura e momentum continuano a essere favorevoli.
8. PYRAMIDING
Account obbligatorio: HEDGING.
Ogni gamba deve essere una posizione indipendente con:
- ticket separato;
- prezzo di ingresso separato;
- volume separato;
- SL broker-side separato.
Massimo 3 gambe complessive.
Le aggiunte sono consentite esclusivamente quando:
- la posizione precedente è in profitto;
- il Break-Even è già attivo;
- il movimento rimane confermato e favorevole;
- la distanza minima dalla precedente aggiunta è circa 0,5 ATR;
- il Global Risk Gate consente l'aggiunta;
- il margine e l'esposizione rimangono entro i limiti.
Allocazione indicativa del rischio:
- prima gamba: 100%
- seconda gamba: 50%
- terza gamba: 25%
sempre subordinata al Global Risk Gate, all'esposizione massima e al controllo del margine.
Non è consentito aggiungere posizioni a una posizione perdente.
9. GRID / MARTINGALE / PROGRESSIONE
Grid, martingala e sistemi di recupero delle perdite non fanno parte della strategia autorizzata di default.
Non devono essere utilizzati per compensare automaticamente perdite o mediare una posizione perdente.
L'unico meccanismo di aggiunta autorizzato è il Pyramiding sopra descritto, cioè aggiunte esclusivamente durante un movimento favorevole e sotto rigorosi limiti di rischio.
Qualsiasi ulteriore meccanismo di progressione diverso da quello definito nella presente specifica richiede approvazione preventiva.
10. EDGE E DETERIORAMENTO
L'uscita non deve dipendere da un singolo indicatore.
Il deterioramento dell'edge deve essere valutato tramite un motore multi-fattore con moduli configurabili, pesi configurabili e soglia configurabile.
I moduli devono includere almeno:
- variazione/pendenza del momentum;
- espansione o contrazione ATR rispetto alla sua media;
- tempo trascorso dall'ultimo nuovo estremo favorevole;
- escursione avversa rispetto al massimo profitto/MFE;
- distanza da un riferimento dinamico.
Il punteggio deve essere calcolabile in modo deterministico e verificabile.
Come configurazione iniziale, i pesi devono essere uniformi e non ottimizzati.
Il sistema deve distinguere tra:
- normale deterioramento dell'edge;
- trailing/profit protection;
- invalidazione strutturale;
- Stop Loss.
La sola contrazione dell'ATR NON deve chiudere una posizione ancora fortemente vincente.
Le uscite normali devono essere basate su deterioramento confermato del momentum/edge e/o invalidazione strutturale, mantenendo la possibilità di lasciare correre i vincitori.
11. DAILY PROFIT RATCHET
Non voglio un semplice target di profitto giornaliero che blocchi il trading.
Il sistema deve utilizzare un Daily Profit Ratchet dinamico.
Deve gestire e persistere almeno:
- DayStartEquity
- DailyPeakEquity
- ProtectedProfit
- ActiveRatchetLevel
Quando il profitto giornaliero cresce, una quota crescente del profitto viene protetta attraverso un floor dinamico.
Il floor deve essere monotonicamente crescente durante la giornata e deve essere resettato al nuovo giorno server.
Il raggiungimento o l'aggiornamento del floor protetto NON deve chiudere automaticamente le posizioni già aperte e NON deve fermare l'EA.
Quando il floor protetto viene raggiunto:
- bloccare nuovi ingressi;
- bloccare nuove aggiunte di Pyramiding;
- continuare a gestire normalmente le posizioni già aperte secondo le regole di gestione del rischio, trailing, Break-Even, deterioramento e invalidazione previste dalla specifica.
Se successivamente l'equity scende fino al floor protetto, devono essere applicate le relative misure di protezione previste, inclusa la chiusura delle posizioni dell'EA e il blocco delle nuove entrate per il resto della giornata, se previsto dalla configurazione di protezione.
Il Daily Profit Ratchet non deve comportarsi come un semplice obiettivo giornaliero: se il profitto protetto viene raggiunto, l'EA deve poter continuare a operare durante la giornata quando esistono nuovi setup validi, senza assumere che il raggiungimento del profitto costituisca automaticamente una condizione di stop.
I livelli e le percentuali devono essere configurabili e definiti numericamente nella specifica finale.
12. GLOBAL RISK GATE
Solo il Risk Engine/Global Risk Gate può autorizzare una nuova posizione o una nuova gamba.
Deve controllare almeno:
- rischio totale;
- esposizione totale;
- numero di posizioni;
- numero di gambe;
- margine disponibile;
- margin level;
- rischio massimo configurato;
- protezione Daily Profit;
- emergency DD;
- condizioni di mercato;
- condizioni di esecuzione.
Deve essere presente un limite configurabile del margin level sotto il quale l'EA smette di aggiungere nuove gambe.
Questo controllo non deve chiudere automaticamente le posizioni già aperte.
13. PROTEZIONE DRAWDOWN E PROTEZIONE DEL CAPITALE
Deve essere presente una protezione DD a livello di equity.
Riferimento iniziale: circa 10%, configurabile.
Quando viene raggiunta la soglia di emergenza:
- bloccare nuovi ingressi;
- bloccare nuove aggiunte;
- applicare le normali protezioni previste alla gestione delle posizioni.
La protezione del capitale ha la massima priorità. L'EA non deve mai utilizzare meccanismi che possano esporre il conto a rischio incontrollato o illimitato.
In presenza di condizioni anomale, errori di esecuzione, problemi di margine, spread anomalo, mancata applicazione dello Stop Loss o qualsiasi altra condizione che possa creare un rischio non controllabile, l'EA deve operare in modalità sicura e non aprire nuove posizioni.
Non sono ammessi meccanismi che possano provocare un accumulo incontrollato di posizioni, rischio o perdite.
L'EA deve essere progettato per fallire in modo sicuro e non in modo pericoloso.
L'obiettivo è evitare che un errore della strategia, del codice, dell'esecuzione o della gestione del rischio possa portare alla distruzione del conto.
14. VENERDÌ / WEEKEND
Devono essere configurabili:
- giorni di trading;
- orari di trading;
- blocco nuovi ingressi prima della chiusura settimanale;
- gestione delle posizioni esistenti;
- eventuale protezione weekend.
Il trading 24/5 deve essere testato, ma non deve essere imposto se i test dimostrano che sessioni specifiche sono più robuste.
15. VOLATILITÀ E SPREAD
Come riferimenti iniziali:
- ATR < circa 50% della baseline → nessun trade;
- ATR > circa 200% della baseline → nessun trade o forte riduzione del rischio;
- spread circa ≤ 10% dell'ATR → riferimento per l'accettabilità.
Tutti i valori devono essere configurabili e verificati durante i test.
16. DUPLICATI E SETUP INVALIDATI
Lo stesso setup non deve generare ripetutamente la stessa operazione.
Una configurazione invalidata non può essere riattivata semplicemente perché il prezzo torna nella zona precedente.
È necessaria una nuova struttura genuina, con una nuova sequenza di conferma.
17. PERSISTENZA / RESTART
Dopo riavvio di:
- EA;
- MT5;
- VPS;
l'EA deve ricostruire correttamente lo stato.
Le posizioni reali presenti sul broker/terminale rappresentano la fonte di verità per le posizioni aperte.
Lo stato del Daily Profit Ratchet deve invece essere salvato e ripristinato correttamente.
Non deve essere possibile perdere la protezione accumulata durante la giornata a causa di un semplice restart.
18. LOGGING
Il sistema deve registrare in modo leggibile:
- setup rilevato;
- motivo di accettazione/rifiuto;
- valori dei filtri;
- Edge Score;
- Deterioration Score;
- valore di ogni modulo;
- contributo dei pesi;
- soglia;
- rischio;
- esposizione;
- margine;
- SL;
- decisioni di Pyramiding;
- Daily Peak;
- Protected Profit;
- Active Ratchet;
- blocchi Risk Gate;
- DD;
- invalidazioni;
- trailing;
- uscite;
- errori broker;
- rifiuti degli ordini;
- problemi di slippage;
- recupero dopo restart.
Ogni decisione importante deve essere spiegabile attraverso il log, non lasciata a discrezione soggettiva.
19. TEST E ROBUSTEZZA
Il progetto deve includere test storici realistici su più anni.
Dove disponibili:
- tick reali;
- spread reale/variabile;
- commissione;
- swap;
- slippage;
- condizioni di esecuzione realistiche.
Devono essere attivi:
- backtest storico;
- separazione sviluppo/validazione;
- dati fuori campione (OOS);
- Walk Forward quando applicabile;
- test di robustezza;
- test su diversi regimi di mercato;
- sensibilità dei parametri;
- verifica della stabilità della regione dei parametri e non solo del singolo risultato migliore;
- test di stress.
L'EA non deve essere ottimizzato semplicemente per ottenere il miglior backtest storico.
Profit Factor elevato, redditività elevata e drawdown inferiore al 10% sono obiettivi di test, NON risultati garantiti e NON criteri artificiali di accettazione.
20. CAPITALE INIZIALE
Il capitale di riferimento è 100 €.
Se il capitale non è realisticamente sufficiente a causa di:
- lotto minimo;
- leva;
- margine;
- distanza minima dello SL;
- rischio per posizione;
- Pyramiding;
lo sviluppatore deve determinarne e documentarne il capitale minimo realistico.
L'EA deve comunque essere scalabile a conti di dimensioni maggiori.
21. CONSEGNA
La consegna completa deve comprendere:
- codice sorgente completo .mq5;
- file compilato .ex5;
- tutti i moduli concordati;
- tutti i parametri/input;
- file SET;
- struttura del progetto;
- documentazione/manuale;
- report dei test;
- risultati OOS;
- controlli di robustezza concordati.
L'EA deve compilare correttamente senza errori o problemi critici.
22. CRITERIO DI ACCETTAZIONE E CORREZIONI
Il prezzo concordato comprende, SENZA NESSUN COSTO AGGIUNTIVO, tutte le correzioni necessarie per rendere l'EA pienamente conforme alla presente specifica approvata e congelata.
Se durante il test o dopo la consegna viene rilevato che una funzione:
- non è implementata;
- non è implementata correttamente;
- contiene un errore di programmazione;
- applica una logica diversa da quella approvata;
- non rispetta una regola della specifica;
- non rispetta i limiti di rischio;
- non rispetta la gestione delle posizioni;
- non rispetta la logica di ingresso/uscita;
- non rispetta la persistenza o il comportamento previsto;
lo sviluppatore dovrà correggerla SENZA NESSUN COSTO AGGIUNTIVO fino alla piena conformità con la specifica approvata.
Queste correzioni fanno parte del lavoro originale e non costituiscono nuovi requisiti.
Solo una richiesta del cliente che introduca una nuova funzione, una nuova regola o una modifica della strategia non presente nella specifica congelata e approvata potrà essere considerata un nuovo requisito/add-on e avere eventualmente un costo separato.