In questo articolo
Dopo questo articolo saprai…
- Separare limite documentato MT5 e semantica del modello locale.
- Controllare input mancante, falso e uguaglianza alla soglia.
- Registrare modalità e prima divergenza senza ordini reali.
I concetti senza lasciare l’articolo
Expert Advisor (EA) BacktestingSe un Expert Advisor (EA) funziona soltanto nel tester visuale MT5, controlla se la decisione dipende da un dato o da qualcosa disegnato sul grafico. Un oggetto grafico non dovrebbe sostituire un valore esplicito del segnale. Prima di cambiare strategia confronta modalità, versioni, dati e prima differenza nei log. Il modello di questa pagina non esegue MT5 né ordini: separa numero, input non disponibile e risultato del confronto.
Che cosa cambia nella modalità visuale?
La documentazione MQL5 indica che fuori dal test visuale gli oggetti grafici non vengono disegnati e le richieste delle proprietà degli oggetti creati restituiscono valori zero. Il limite non si applica alla modalità visuale. È comportamento documentato della piattaforma, non un esperimento eseguito sul tuo EA e non prova della causa di ogni divergenza.
Se il programma legge prezzo di una linea o stato di un pulsante, registra quel passaggio separatamente da prezzi e indicatori. Prima di calcolare verifica se il valore esiste nella modalità usata. Riconoscere input indisponibile evita di accettare uno zero tecnico come prezzo. Vedere un grafico non dimostra che ogni altro dato della strategia sia pronto; allo stesso modo, non vedere disegni non prova che il modulo numerico non abbia funzionato.
Numero esplicito e oggetto sono percorsi diversi
Simulazione didattica senza trading: segnale numerico positivo 1,1050, soglia 1,1040, condizione «segnale maggiore della soglia». Sono valori assegnati, non quotazioni MT5 o log di esecuzione. Il percorso numerico soddisfa il confronto; nel percorso oggetto indisponibile il modello conserva null e non valuta. Null è la nostra rappresentazione dell’assenza, non un’affermazione sul valore restituito da una funzione MT5.
Input mancante non significa prezzo zero
Valore, assenza e ripiego errato
Scorri orizzontalmente o ingrandisci il diagramma per leggere i dettagli.
La variante errata inserisce 0 e restituisce falso per 0> 1,1040, nascondendo l’assenza come un esito ordinario. Con condizione opposta «minore della soglia», quello zero potrebbe persino soddisfarla. Non risolvere il problema inserendo un fallback arbitrario o il prezzo dell’ultimo grafico. Decidi e verifica esplicitamente la politica del dato non disponibile.
Controesempio EUR distinto. Regola fittizia «input< 100». Il dato numerico corretto 101 non abilita ingresso; l’oggetto mancante resta sconosciuto. Sostituirlo con 0 abilita invece un ordine nel modello: tre unità long di contratto da 1 EUR per punto e unità, fill assegnato 100 e uscita 99, più 2 EUR di costi separati, danno −5 EUR. Il caso dimostra perché un ripiego tecnico può cambiare una decisione anche quando il dato reale avrebbe escluso l’ordine. Non stima la perdita del tuo EA o l’utilità della strategia.
La perdita assegnata illustra una dipendenza, non il risultato dell’EA reale.
- Dato corretto
- 101<100: falso – Nessun ingresso della singola idea.
- Assenza riconosciuta
- null: non valutabile – Nessun numero inventato.
- Ripiego zero
- 0<100: vero, poi −5 EUR – −3 di prezzo −2 di costi nel percorso assegnato.
Separa il dato dall’oggetto del grafico
Il modello didattico funziona nel browser: non si collega a conti o API, non trasmette gli input né li conserva in modo persistente. Non inserire password o dati personali.
Il controllo locale permette di modificare due numeri positivi finiti, con punto decimale: da 10⁻⁸ a 10⁸, fino a 15 cifre, senza notazione esponenziale. Nel modello la modalità visuale assegna all’oggetto il segnale; quella normale lo dichiara non disponibile. La pagina non legge grafici, non esegue test della piattaforma, non invia input e non genera segnali d’investimento. Se inserisci due valori uguali, il confronto stretto «maggiore» è falso nel percorso numerico; l’oggetto assente resta sconosciuto indipendentemente dal risultato numerico.
Registrare modalità e build senza negoziare
Le costanti MQL_TESTER, MQL_VISUAL_MODE e MQL_OPTIMIZATION identificano l’ambiente del programma; TERMINAL_BUILD descrive la build effettiva. Registra letture reali senza dedurre modalità dall’aspetto di una finestra. Queste informazioni non dimostrano identità di parametri o snapshot dei dati.
Il piccolo EA diagnostico autonomo seguente usa OnInit per il log e lascia OnTick vuoto. Non invia o modifica ordini, non calcola segnali e non gestisce posizioni. Codice e stringhe sono mantenuti invariati: salva un file MQ5 separato, compila in MetaEditor e conserva risultato e log effettivi. Questa pagina non dichiara compilazione nativa del programma.
#property strict
int OnInit()
{
PrintFormat("tester=%d visual=%d optimization=%d build=%d symbol=%s period=%d",
(int)MQLInfoInteger(MQL_TESTER),
(int)MQLInfoInteger(MQL_VISUAL_MODE),
(int)MQLInfoInteger(MQL_OPTIMIZATION),
(int)TerminalInfoInteger(TERMINAL_BUILD),
_Symbol, (int)_Period);
return INIT_SUCCEEDED;
}
void OnTick() {}
Non aggiungere un secondo OnInit a un EA esistente e non sostituire la sua inizializzazione con questo esempio. Integrare log richiede preservare il flusso originale. La documentazione del tester indica un’eccezione per PrintFormat dentro OnInit durante ottimizzazione: mancanza di stampe in altre fasi non dimostra che tali fasi non siano mai state eseguite.
La prima differenza conta più del profitto finale
Prepara una coppia di registrazioni: modalità visuale/non visuale, build e codice, input, simbolo e timeframe, modello tick, inizio richiesto ed effettivo, snapshot dei dati, costi e stato iniziale. Conserva preset e identificatori di versione. Se le dichiarazioni differiscono, non attribuire tutto alla finestra grafica. Stesso backtest, risultato diverso: confrontare condizioni e prove aiuta a confrontarle, senza verificare da solo che i file dichiarati siano autentici.
Individua il primo punto con input differente: successo del recupero, timestamp, indicatore pronto, segnale, condizione o decisione. «Profitto 120 anziché 80» non identifica il passaggio. Conserva log originali e tabella minima affiancata senza inventare valori non registrati. Usa identificatore dell’osservazione e posizione temporale o di sequenza: prezzi simili non provano stesso evento. Registrare tutto senza chiavi può rendere più difficile il confronto, non risolverlo automaticamente.
Un segnale verificabile anche senza disegni
Il calcolo dovrebbe restituire valore esplicito e stato della disponibilità; il livello grafico può poi mostrarli. Disattivare il disegno non dovrebbe cambiare intenzionalmente la fonte del segnale. Prova separatamente il modulo su input controllati, inclusi assenza e uguaglianza alla soglia. Rimuovere questa dipendenza non garantisce identità dell’intero backtest: dati, versioni, costi e altre parti del codice restano rilevanti.
Se non disponi del codice, fornisci all’autore la coppia di configurazioni e il primo punto documentato di divergenza, con campi ancora incerti. Non sostituire diagnosi con una sequenza di ordini reali di prova. Backtest in MT4 e MT5: pratica, tick, costi e orologi sviluppa preparazione generale e differenze fra ambienti. Il modulo numerico corretto non dimostra redditività futura.
Tre passi riproducibili
- Completa un registro della coppia di modalità: codice, build, input, dati e intervallo. Indica campi non confermati. Lo stesso file EA non stabilisce identità di tutto il resto.
- Nel controllo usa 1.1050 e 1.1040 con punto, poi valori uguali. Distingui condizione numerica falsa e oggetto null non valutato. Non serve un conto e non si collocano ordini.
- In configurazione demo separata o tester raccogli log diagnostici senza trading e confronta sequenza. Determina se differiscono input, disponibilità o confronto; non usare soltanto incremento del profitto come verifica della correzione.
Verifica ciò che hai imparato
Circa 3 minuti di esercizio.
Mostra risposta e spiegazione
È la semantica del modello, non l’affermazione che una funzione MT5 restituisca null.
Altre domande
Null significa che le funzioni oggetto MT5 restituiscono null?
No: la documentazione descrive valori zero fuori dal test visuale. Null è la rappresentazione esplicita dell’input mancante nel nostro modello. Per l’EA reale verifica funzione, successo, modalità e dato atteso; questa pagina non riproduce ogni comportamento MQL5.
Un risultato vero apre un trade?
No: confrontiamo due numeri dichiarati senza collegamento al terminale o conto. Vero non prova altri criteri, permessi o fill. Il controllo distingue falso e non valutabile, non certifica efficacia né genera un segnale d’investimento.
Eliminare oggetti grafici garantisce test uguali?
No: risolve al massimo una possibile dipendenza. Conserva versioni, input, dati, tick, costi e stato iniziale e trova la prima differenza. Cambiare più componenti o scegliere il report più redditizio non identifica una causa.
Il logger è una strategia pronta?
No: esempio autonomo con OnInit di log e OnTick vuoto. Non apre, modifica o gestisce ordini. Compila il tuo file e conserva log veri. Non aggiungere un secondo OnInit o sostituire quello esistente senza comprenderne il flusso.
Perché il caso EUR con zero perde 5?
È un percorso assegnato: lo zero al posto dell’assenza soddisfa erroneamente input<100, poi tre unità long da 100 a 99 producono −3 EUR e costi 2 danno −5. Non è un risultato osservato sul tuo EA.
Fonti e verifica
- MQL5 — Testing Trading Strategies
Sezioni 101–106 e 311–315 lette: proprietà oggetti fuori visuale e eccezione visuale; PrintFormat in OnInit durante ottimizzazione. Documentazione, non esperimento nativo.
- MQL5 — proprietà del programma
Sezioni 49–70 lette: flag tester, ottimizzazione e modalità visuale.
- MQL5 — proprietà terminale
Sezioni 49–56 lette: TERMINAL_BUILD indica build client, non identità dell’intero dataset.
- MQL5 — OnInit
Sezioni 57–86 lette: firma int e INIT_SUCCEEDED; esempio autonomo mantenuto, senza sostituire inizializzazione di programmi esistenti.
- MQL5 — PrintFormat
Sezioni 75–108 lette: formato e corrispondenza di tipi/argomenti; la pagina del tester specifica l’eccezione OnInit. Nessuna compilazione dichiarata.
I calcoli usano ipotesi esplicite. Non sostituiscono i dati attuali di mercato o le condizioni dell’intermediario.
