In questo articolo
Dopo questo articolo saprai…
- Preparare CSV e finestra con timestamp non ambigui.
- Distinguere posizioni vuote, duplicati e conflitti senza inventare prezzi.
- Conservare rapporto e prove prima di accettare i dati per il tester.
I concetti senza lasciare l’articolo
Backtesting Bid e Ask, prezzi di vendita e acquisto Expert Advisor (EA)Una candela assente non dimostra da sola un errore del fornitore. Prima stabilisci quali aperture di barra ti aspetti e secondo quali regole. Il controllo CSV qui sotto segnala posizioni vuote in una griglia temporale, duplicati, prezzi discordanti e righe non valide. Non crea quotazioni per riempire i buchi e non giudica la redditività di un Backtesting.
Definisci la finestra prima di contare
Registra strumento, fornitore, base di prezzo e timeframe. Le serie Bid, Ask e midpoint sono diverse: «EUR/USD» non identifica da solo il contenuto. Verifica che timestamp rappresenti l’apertura della candela. Un’esportazione etichettata con la chiusura appare spostata rispetto a una etichettata con l’apertura, anche se entrambi gli archivi contengono prezzi validi.
L’intestazione richiesta è timestamp,open,high,low,close. Ogni riga successiva deve avere esattamente cinque campi separati da virgole. I prezzi usano il punto decimale e nessun separatore delle migliaia. Campi fra virgolette, colonne aggiuntive e separatori punto e virgola vanno convertiti prima: il controllo li rifiuta, senza indovinare l’intenzione dell’esportazione. Anche in un’interfaccia italiana il formato macchina rimane questo.
Scrivi un istante completo: 2026-10-12T08:00:00Z e 2026-10-12T10:00:00+02:00 identificano lo stesso momento. I secondi sono obbligatori; sono ammesse fino a tre cifre frazionarie dei secondi. Un orario server senza offset resta ambiguo. Aggiungere Z non converte un’ora locale in UTC, ma le attribuisce un significato diverso.
Inserisci separatamente prima e ultima apertura attese, entrambe incluse. Da 08:00 a 08:11, intervallo di un minuto, significa dodici posizioni. La griglia parte dal primo estremo e l’ultimo deve cadervi esattamente. È una griglia di intervalli trascorsi uguali: un mese civile o una giornata locale che cambia durata con l’ora legale non corrispondono sempre a un numero fisso di minuti. I parametri dailyAlignment e alignmentTimezone documentati da OANDA illustrano perché allineamento di calendario e griglia UTC vadano distinti.
Riproduci il controllo locale
Carica il CSV e scegli un intervallo intero da 1 a 1440 minuti, poi entrambi gli estremi. Il contenuto viene analizzato nel browser, senza inviarlo o salvarlo in archiviazione persistente da parte dello strumento. Il limite è 2 MiB, massimo 100.000 righe e 100.000 posizioni attese. Dividi periodi più lunghi in finestre documentate e senza sovrapposizione. Ogni prezzo ammette fino a 15 cifre significative e 48 caratteri: valori più precisi vengono rifiutati, evitando che un arrotondamento nasconda un conflitto.
Controlla la copertura temporale del CSV
Il file è analizzato localmente, senza invio o salvataggio persistente. Formato: timestamp,open,high,low,close. Massimo 2 MiB. Gli istanti richiedono Z o un offset esplicito.
Dodici righe non provano la completezza
I due file dell’esercizio sono sintetici. Usa M1 dal 12 ottobre 2026 alle 08:00 fino alle 08:11 UTC. Il file pulito ha dodici istanti distinti e nessuna posizione vuota. Il diagnostico ha dodici righe, ma soltanto otto posizioni valide sulla griglia. Le anomalie non sono gruppi esclusivi da sommare per ricostruire il numero di righe.
- Quattro posizioni vuote: 08:03; 08:04; 08:10; 08:11.
- Due righe ripetute: ricompaiono gli istanti 08:02 e 08:06.
- Un gruppo in conflitto: due candele valide delle 08:06 hanno valori OHLC diversi.
- Una riga non valida: il massimo delle 08:04 è inferiore all’apertura.
- Una riga fuori griglia alle 08:07:30 e un’inversione temporale: 08:08 compare dopo 08:09.
I vuoti più lunghi comprendono due aperture attese ciascuno. A parità, il rapporto mostra il primo: 08:03–08:04. Non è una misura della durata di un’interruzione del servizio: indica posizioni attese mancanti. Per interpretare le condizioni del periodo servono informazioni esterne al CSV.
Otto posizioni occupate, un’ambiguità ancora aperta
Dodici posizioni M1, otto occupate
Scorri orizzontalmente o ingrandisci il diagramma per leggere i dettagli.
La griglia non stabilisce quale versione del prezzo sia corretta.
- Versione A
- Chiusura 99 EUR – 2 × (99−100)−1 = −3 EUR; istante occupato.
- Versione B
- Chiusura 101 EUR – 2 × (101−100)−1 = +1 EUR; stesso istante occupato.
- Differenza
- 4 EUR – Non scegliere per il profitto: riconcilia la fonte e conserva le versioni.
Cosa indagare invece di riparare automaticamente
La copertura conta istanti validi distinti, non righe. Un duplicato identico non aggiunge copertura; due OHLC validi ma discordanti occupano una sola posizione e generano anche un conflitto. Perciò zero vuoti non equivale a dati utilizzabili. Conserva entrambe le versioni e confrontale con la fonte: lo strumento non sceglie quella più alta, più recente o favorevole alla strategia.
Una riga non valida non occupa la griglia. I prezzi devono essere finiti; il massimo non può essere inferiore ad apertura, chiusura o minimo, e il minimo non può superare gli altri prezzi. Righe esterne alla finestra o fuori griglia non migliorano la copertura. Tutte le anomalie vengono contate, ma per ciascun gruppo vengono mostrati al massimo venti esempi, così un archivio danneggiato non sommerge la pagina.
Confronta un vuoto del fine settimana con il calendario effettivo del prodotto. Per un vuoto durante una sessione dichiarata controlla il log di scaricamento e la fonte originale. Nella documentazione OANDA, complete descrive una candela il cui periodo è terminato: non certifica la completezza dell’intero archivio. Non attribuire al campo una garanzia più ampia.
Riempire ogni intervallo con l’ultimo prezzo crea candele sintetiche e può cambiare indicatori e simulazione degli stop. Ordinare le righe non risolve un conflitto OHLC. Conserva esportazione originale e registro separato di correzioni, con motivo e fonte di ciascuna modifica.
Nuovo controesempio EUR: una strategia didattica ha un acquisto assegnato a 100 EUR e due possibili chiusure della stessa candela, 99 oppure 101 EUR, entrambe valide rispetto a apertura 100, massimo 102 e minimo 98. Con due unità e commissione completa 1 EUR, i risultati sono −3 EUR e +1 EUR. Entrambe le versioni occupano lo stesso istante, quindi la copertura è identica; scegliere la seconda per il risultato migliore aggiunge 4 EUR senza aver ottenuto informazione su quale prezzo sia corretto. Non è un prezzo reale né una regola per operare sul conflitto.
OHLC completi non ricostruiscono tutti i tick
Le barre non descrivono l’intera sequenza di prezzi. MetaQuotes documenta la generazione di tick quando è presente una barra al minuto priva dei relativi tick registrati. Un CSV M1 completo non dimostra quindi che il test abbia usato soltanto osservazioni registrate. Controlla modello scelto, intervallo disponibile e log del tester. Spread storici, commissioni e sequenza degli ordini restano controlli separati.
Confronta anche date richieste e date effettive: la preparazione della cronologia MT5 può spostare l’avvio quando i dati sono insufficienti. Con CopyRates confronta quantità richiesta e quantità restituita, perché il caricamento può proseguire dopo una risposta parziale. Continua con Backtest in MT4 e MT5: pratica, tick, costi e orologi per le impostazioni e Backtest di una strategia: regole, costi e dati verificabili per la validazione metodologica. Questo controllo non esegue un terminale né certifica un fornitore.
Tre passi per accettare o respingere la finestra
- Salva originale, impostazioni e rapporto con strumento, base Bid/Ask/mid, fuso e fonte delle sessioni. La lingua italiana non determina il fuso del server; Europe/Rome non è sinonimo di UTC.
- Indaga il vuoto più lungo e tutti i conflitti. Documenta la sessione chiusa oppure ottieni un’esportazione corretta. Ripeti la stessa finestra e conserva anche il rapporto precedente.
- Esegui poi un breve test visivo della strategia sul periodo accettato: segnali attorno ai vuoti, costi e sequenza delle esecuzioni. Per un motore separato passa a Backtest Python: dati, tempi ed eseguiti riconciliati. Il controllo dati non predice rendimenti futuri.
Verifica ciò che hai imparato
Circa 2 minuti di esercizio.
Mostra risposta e spiegazione
12 attesi −8 occupati = 4 vuoti. Duplicati e righe fuori griglia non aumentano la copertura.
Altre domande
Un minuto vuoto dimostra un errore del fornitore?
No. Il controllo non trova un record valido in una posizione dichiarata, ma non conosce sessioni o regole del prodotto. Verifica calendario, fuso e log prima di distinguere mercato chiuso, esportazione incompleta e dati mancanti. Conserva la fonte del calendario.
Come posso avere zero vuoti e prezzi in conflitto?
Almeno una riga valida occupa la posizione. Due versioni OHLC valide dello stesso istante possono però discordare. La copertura resta completa, mentre il prezzo va riconciliato con la fonte. Ordinare le righe non sceglie la versione corretta.
Posso importare qualunque CSV italiano?
No. Occorrono cinque colonne esatte, virgole fra campi, punto decimale e timestamp completi con offset. Punto e virgola, virgola decimale, virgolette o ora server non zonata richiedono una conversione documentata. Il delimitatore corretto non risolve da solo il fuso ambiguo.
Una griglia completa basta ad accettare il backtest?
No. Non ricostruisce tick, spread, oneri, esecuzioni o cronologia della strategia. Esamina conflitti, fonte e modello, poi il programma e la validazione. Conserva il risultato precedente quando cambi ipotesi.
Perché dodici righe possono lasciare quattro vuoti?
Nel file sintetico solo otto istanti validi distinti appartengono alle dodici posizioni attese. Duplicati, righe non valide e fuori griglia non aggiungono copertura:12−8 = 4. Le categorie di anomalie non sono necessariamente disgiunte.
Posso scegliere l’OHLC che migliora il risultato?
No. Nel modello EUR chiusure 99 e 101 danno −3 e +1 EUR, ma stessa copertura. La differenza di 4 EUR non dice quale fonte sia corretta. Servono riconciliazione e traccia della correzione, non selezione in base al profitto.
Fonti e verifica
- OANDA — Candlestick definitions
Struttura delle candele OANDA: orario iniziale, prezzi bid, ask o mid e indicatore di candela completa.
- OANDA — Pricing Endpoints
Parametri delle candele OANDA, tra cui smoothed, dailyAlignment e fuso di allineamento; gli orari restituiti restano in UTC.
- MetaQuotes — Real and Generated Ticks
Sezione 98–109 letta: prezzi Bid/Ask, spread e generazione per minuti senza tick. Non garantisce prezzi futuri o cronologia completa dal solo nome della modalità.
- MetaQuotes — History preparation
Preparazione della cronologia: sincronizzazione dei dati e possibile spostamento della data effettiva di inizio quando la cronologia è insufficiente.
- MetaQuotes — CopyRates
Valore restituito e note di CopyRates: numero di elementi restituiti oppure errore; il caricamento può proseguire dopo la restituzione di una parte dei dati.
I calcoli usano ipotesi esplicite. Non sostituiscono i dati attuali di mercato o le condizioni dell’intermediario.
