In questo articolo
Dopo questo articolo saprai…
- Conservare condizioni, report e prima esecuzione divergente.
- Distinguere identità dichiarata e identità verificata dei file.
- Riconciliare tariffa per fill e numero effettivo degli addebiti.
I concetti senza lasciare l’articolo
Backtesting Commissione di trading Expert Advisor (EA)Due esecuzioni dello stesso robot possono dare risultati diversi con parametri visibili identici. Prima di cambiare strategia verifica anche codice, dati, specifiche del simbolo e modello esecutivo. Il manifesto del run registra queste condizioni: il comparatore confronta dichiarazioni, non esamina l’intero ambiente reale. Conserva report e log che sostengono ogni voce.
Prima di riprovare, conserva entrambe le prove
Archivia separatamente report, elenco delle esecuzioni, diari e parametri di A e B, compreso il risultato meno favorevole. Lo screenshot della curva non dimostra primo prezzo eseguito, numero di fill parziali o inizio effettivo. Devi poter risalire dalle condizioni alle operazioni e poi al risultato.
Un test singolo, una ricerca d’ottimizzazione e una valutazione su un periodo successivo sono operazioni diverse. «Stesso robot» può significare stesso nome ma compilazione o dipendenze diverse: conserva build del terminale, programma e librerie rilevanti. Il nome del file non identifica il contenuto.
Confronta data richiesta e inizio effettivo. La documentazione MetaQuotes descrive uno spostamento possibile quando manca storico preparatorio sufficiente. Un mese completo e uno accorciato sono valutazioni diverse. Backtest: controllare lacune, duplicati e conflitti CSV controlla la copertura dell’export CSV; qui consideriamo un insieme più ampio di condizioni.
Preparare due manifesti nello stesso formato
Incolla due oggetti JSON con esattamente i tredici nomi di campo documentati, senza tradurli o aggiungere altri campi principali. version è il numero 1 e identifica il formato, non la versione dell’Expert Advisor (EA). Gli altri valori sono stringhe; inputs, costs e initialState possono invece essere oggetti semplici che descrivono le impostazioni.
| Nomi invariati | Contenuto |
|---|---|
| version, platform, build, codeRevision | Formato, piattaforma, build e identificazione di codice e dipendenze. |
| inputs, dataSnapshot | Parametri e versione dei dati conservata. |
| symbolSpecification, executionModel, costs | Contratto, simulazione e tutti i costi assunti. |
| requestedStart, actualStart, end | Confini richiesti ed effettivi del periodo. |
| initialState | Saldo, posizioni e condizioni rilevanti d’inizializzazione. |
Per dataSnapshot inserisci identificatore d’archivio o checksum calcolato separatamente. «data-v1» resta una dichiarazione: la pagina non apre il file e scrivere «hash» non verifica un digest. Bastano etichette tecniche; escludi password, codici d’accesso e dati personali. Un valore sconosciuto resta da stabilire, senza un identificatore inventato per riempire il modulo.
Scrivi il fuso nelle date, preferibilmente con una rappresentazione UTC coerente. Il comparatore confronta testo, non calendario del provider. Due descrizioni dello stesso istante possono richiedere standardizzazione manuale. Aggiungere Z a un’ora del server non la converte in UTC; anche Europe/Rome richiede data e offset effettivi. La lingua italiana del modulo non cambia contratto, valuta o fuso del test.
Che cosa controlla il comparatore?
Modifica le due registrazioni d’esempio e confronta campi differenti o mancanti. Il calcolo resta nel browser, senza invio, importazione di file o conservazione persistente. Non avvia MT5, non legge conti e non verifica che le descrizioni corrispondano ai run effettivi. Oggetti uguali significano voci uguali, non ambiente completo o condizioni di mercato identiche.
Confronta due registrazioni di backtest
Limiti del formato. Ogni record massimo 64 KiB; profondità massima 8 livelli e 2.000 valori. I numeri annidati arrivano a 15 cifre significative, senza interi grandi non sicuri. Chiavi duplicate o campi principali non documentati sono rifiutati. I campi vuoti o omessi sono sconosciuti; il confronto resta letterale. Nei dati macchina usa punto decimale e nomi originali: la virgola italiana nella prosa non modifica lo schema JSON. Gli esempi sintetici mantengono etichette tecniche inglesi per conservare le dichiarazioni originarie, non descrivono dati di broker.
Stessa operazione USD, commissione diversa
Modello originario fittizio: contratto lineare, conto USD, una operazione chiusa con due fill, risultato sui prezzi 10 USD. Prezzi, quantità e periodo coincidono; finanziamento e altri oneri zero. A dichiara commissione 1 USD per fill, B 2 USD: sono ipotesi didattiche, non tariffario reale.
A produce 10−2 × 1 = 8 USD, B 10−2 × 2 = 6 USD. La differenza di 2 USD deriva dal solo costo nel modello, non dimostra segnale peggiore, dati errati o slippage. Il campo costs deve risultare cambiato, ma interpretarlo richiede ancora report e verifica delle altre ipotesi.
Una operazione, due ipotesi di costo
Prezzi uguali, commissioni diverse
Scorri orizzontalmente o ingrandisci il diagramma per leggere i dettagli.
Controesempio EUR distinto. Conto EUR, stessa quantità complessiva, risultato sui prezzi 12 EUR e tariffa fittizia minima 1 EUR per fill senza altri oneri. A ha due fill: netto 10 EUR. B ha tre fill per esecuzione parziale e successivo completamento: netto 9 EUR, pur lasciando identico il numero «1» della tariffa. Confronta numero e importo degli addebiti, non soltanto il prezzo unitario del servizio. La differenza di 1 EUR non dimostra cambiamento della logica del segnale. Per preservare la stessa quantità considera per esempio A: ingresso 10 unità, uscita 10; B: ingressi 4+6, uscita 10, con risultato sui prezzi assegnato uguale.
Due confronti: prezzo unitario e numero di addebiti.
- Run A
- 10 EUR netti – Due fill: ingresso 10, uscita 10; costo 2.
- Run B
- 9 EUR netti – Tre fill: ingressi 4+6, uscita 10; costo 3.
- Differenza
- 1 EUR – Non prova un segnale diverso; verifica i report.
Se le dichiarazioni sembrano ancora uguali
Cerca la prima esecuzione diversa: ora del segnale, simbolo, lato, quantità e motivo d’ingresso o uscita. Il saldo finale può nascondere una divergenza già alla prima lettura dell’indicatore. Conserva anche le decisioni senza trade. Nel nuovo run controllato cambia una sola condizione e conserva il precedente: modificare tutto insieme rende difficile attribuire l’effetto.
Verifica dipendenze dei file e inizializzazione del programma. L’agente del tester ha un ambiente distinto dal terminale, incluse variabili globali e operazioni sui file. Se il codice usa numeri casuali conserva come è inizializzato il generatore. Non attribuire ogni differenza alla cache e non eliminare l’unico archivio che permette di riprodurla. Stessi nomi nel manifesto possono omettere una dipendenza o descrivere male i dati.
Non scegliere automaticamente il risultato migliore né chiamare guasto della piattaforma quello peggiore. Validare una strategia: regole, backtest, demo e registro delle prove approfondisce registro e validazione; Backtest in MT4 e MT5: pratica, tick, costi e orologi tratta le impostazioni. Prima riconcilia condizioni, poi torna a valutare economicamente la strategia con costi, drawdown e osservazioni separate dallo sviluppo.
Tre passi dopo il confronto
- Conserva A e B e compila i tredici campi collegando etichette ad archivi corretti di codice, dati e impostazioni. Registra ciò che manca senza inventare versioni.
- Isola una differenza in un piccolo caso controllato: commissione richiede fill e addebiti; data iniziale richiede primo segnale disponibile. Conserva anche prove che smentiscono l’ipotesi iniziale.
- Se le voci coincidono cerca il primo evento divergente nel diario e amplia l’archivio con l’informazione necessaria. Il comparatore non prevede rendimenti né certifica il risultato storico.
Verifica ciò che hai imparato
Circa 2 minuti di esercizio.
Mostra risposta e spiegazione
A: 10−2 = 8; B: 10−4 = 6. La differenza è 2 USD nel modello.
Altre domande
Manifesti uguali certificano riproducibilità?
No. Il confronto riguarda descrizioni: identico dataSnapshot non prova file identici. Conserva report, eseguibili, impostazioni e copie, calcolando hash separatamente. Campi sconosciuti restano irrisolti; un ambiente o una dipendenza omessi possono ancora differire.
Cancello prima la cache o ricompilo?
Prima conserva entrambe le prove. Cambiare eseguibile, impostazioni o storico senza archivio ostacola la riproduzione. Confronta manifesti e primo fill divergente, poi una sola modifica documentata; una ricompilazione conserva versione precedente e build.
Perché actualStart può differire da requestedStart?
Il tester prepara anche storico precedente; la documentazione descrive lo spostamento quando non basta. Registra entrambi dopo aver letto report e diario del run, senza copiarli per convenienza. Curve simili non sostituiscono il controllo delle date.
Scelgo il run con più profitto?
Non prima della riconciliazione. Nel modello USD il maggiore netto deriva soltanto da commissione inferiore. Dati, periodo o fill possono cambiare altri confronti; riproduci la causa e usa condizioni appropriate alla domanda, senza chiamare il passato garanzia futura.
Tariffa uguale garantisce commissione totale uguale?
No. Nel modello EUR 1 per fill, due fill costano 2 e tre costano 3. A parità di quantità e risultato sui prezzi 12, i netti sono 10 e 9. Conserva esecuzioni parziali e addebiti, non soltanto tariffa dichiarata.
Fonti e verifica
- MetaQuotes — Strategy Testing
Impostazioni e sezioni commissioni 248–296 lette: tariffa, direzione, momento e numero/volume delle esecuzioni possono cambiare gli oneri. Esempi USD/EUR inventati, non listini.
- MetaQuotes — preparazione dello storico
Sezioni 98–120 lette: storico preparatorio e possibile spostamento della data iniziale. Nessuna ipotesi che le due date coincidano sempre.
- MetaQuotes — Testing Features
Sezioni 127–135,210–242 lette: ambiente agente, variabili, parametri/file e archivi distinti. Preservare prove prima di modificare ambiente; nessun guasto attribuito automaticamente alla cache.
I calcoli usano ipotesi esplicite. Non sostituiscono i dati attuali di mercato o le condizioni dell’intermediario.
