În acest articol
După lectură vei putea să…
- Pregătești CSV cu timpi expliciți și fereastră declarată.
- Separi golul, duplicatul, prețul contradictoriu și rândul invalid.
- Demonstrezi de ce acoperirea completă nu determină rezultatul modelului RON.
Explicații ale termenilor în articol
Backtesting: testare pe date istorice Bid și ask — prețuri de vânzare și cumpărare Expert Advisor (EA)O lumânare absentă nu dovedește că furnizorul a greșit sau că piața era închisă. Compară exportul cu fereastra declarată și regulile de construire a lumânărilor. Verificatorul CSV local găsește poziții goale pe o grilă fixă, timpi repetați, prețuri contradictorii și rânduri invalide. Nu inventează cotații. Raportul te ajută să decizi ce trebuie clarificat înaintea unui test istoric al strategiei.
Ce stabilești înainte să numeri lumânările lipsă?
Notează instrumentul, furnizorul, baza prețului și intervalul. Lumânările Bid, Ask și de preț median reprezintă serii diferite; EUR/USD singur nu identifică seria. Compară timpi echivalenți ai deschiderii barelor. Exportul etichetat după închidere pare deplasat față de cel etichetat după deschidere, chiar dacă ambele au prețuri valide.
Verificatorul acceptă antetul timestamp,open,high,low,close. Fiecare rând următor are exact cinci câmpuri separate prin virgulă, cu punct zecimal în preț și fără separator de mii. Ghilimelele, coloanele suplimentare și delimitarea prin punct și virgulă necesită conversie. Formatele neacceptate sunt respinse explicit, fără presupuneri despre sensul exportului.
Folosește timpul complet 2026-10-12T08:00:00Z sau 2026-10-12T10:00:00+02:00: același moment. Secundele sunt obligatorii, iar fracțiunea permite maximum trei cifre. Ora fără decalaj nu identifică fusul serverului. Adăugarea literei Z unei ore locale îi schimbă sensul, fără conversie UTC. Pentru afișarea în București, același moment este 2026-10-12T11:00:00+03:00; acesta nu este automat fusul brokerului. Parametrii OANDA disting ora și fusul alinierii, păstrând timpii returnați în UTC.
Declară separat prima și ultima deschidere așteptată. Limitele sunt incluse: 08:00–08:11, din minut în minut, produce douăsprezece poziții. Grila începe la prima limită, iar ultima trebuie să cadă exact pe ea. Modelul acoperă intervale egale de timp scurs. O lună calendaristică sau o zi locală afectată de schimbarea orei nu este un interval fix de 1.440 de minute.
Cum rulezi verificatorul și reproduci exemplul?
Încarcă CSV-ul pregătit, introdu intervalul întreg între 1 și 1.440 de minute și ambele limite. Analiza se efectuează în browser, fără trimiterea conținutului și fără stocare persistentă. Limita fișierului este 2 MiB, cu maximum 100.000 de rânduri și 100.000 de poziții așteptate. Împarte perioadele mai lungi în ferestre documentate care nu se suprapun.
Prețurile permit maximum 15 cifre semnificative și 48 de caractere pe câmp. Precizia suplimentară este invalidă: rotunjirea nu trebuie să ascundă un conflict.
Verifică acoperirea timpului în CSV
Fișierul se analizează local, fără trimitere sau salvare persistentă. Format: timestamp,open,high,low,close. Maxim 2 MiB. Timpul cere Z sau un decalaj UTC explicit.
Export fictiv: douăsprezece rânduri nu dovedesc completitudinea
Fișierele de practică sunt sintetice, fără cotații de broker sau date de cont. Alege M1 și 08:00–08:11 UTC. Fișierul curat conține douăsprezece momente diferite, fără poziții goale. Cel de diagnostic are douăsprezece rânduri, dar numai opt poziții valide ale grilei.
| Constatare | Sens în acest exemplu |
|---|---|
| 4 poziții goale | Nicio lumânare validă la 08:03, 08:04, 08:10, 08:11. |
| 2 rânduri repetate | 08:02 și 08:06 apar din nou. |
| 1 grup de prețuri contradictorii | Două lumânări valide la 08:06 au OHLC diferite. |
| 1 rând invalid | Maximul de la 08:04 este sub deschidere. |
| 1 rând în afara grilei și 1 inversare temporală | 08:07:30 nu aparține M1; 08:08 apare după 08:09. |
Cele mai lungi goluri au fiecare două deschideri așteptate. Egalitatea returnează primul: 08:03–08:04. Acesta nu este timpul măsurat al unei întreruperi. Cauza intervalului se stabilește folosind informații din afara fișierului.
Acoperire M1 fictivă: opt poziții din douăsprezece
Pe un ecran mic, derulează diagrama orizontal sau mărește-o. Explicația este disponibilă și în text.
Ce investighezi în loc să repari automat?
Acoperirea numără timpi valizi distincți, nu rânduri. Duplicatul identic nu adaugă acoperire. Două OHLC valide, dar diferite la același timp, ocupă o singură poziție și sunt semnalate separat drept conflict. Zero goluri nu înseamnă date utilizabile. Confruntă prețurile cu sursa, păstrând ambele versiuni. Verificatorul nu alege valoarea mai mare, mai recentă sau mai convenabilă.
Rândul invalid nu contribuie la acoperire. Prețurile trebuie să fie finite, maximul să nu fie sub deschidere, închidere ori minim, iar minimul să nu fie peste celelalte. Rândurile din afara ferestrei sau grilei nu îmbunătățesc rezultatul. Sunt numărate toate constatările, dar se afișează numai douăzeci de exemple pe grup.
Compară golul de weekend cu programul produsului. Pentru un gol în sesiune, consultă jurnalul descărcării și sursa originală. Documentația OANDA definește complete prin încheierea perioadei lumânării, fără să certifice completitudinea întregului export.
Nu umple intervalul cu ultimul preț doar pentru un grafic continuu: creezi lumânări sintetice care pot modifica indicatorii și execuția stopurilor. Sortarea nu rezolvă OHLC contradictorii. Păstrează exportul original și registrul separat al corecțiilor, cu motiv și sursă pentru fiecare.
Model RON: grilă completă, rezultat încă nedeterminat
Un eșantion fictiv are trei poziții M1, toate ocupate. La cea din mijloc există două versiuni valide cu aceeași deschidere 1,1000, minim 1,0990 și închidere 1,1005; maximul A este 1,1010, maximul B 1,1020. Regula didactică observă bara încheiată și semnalează o tranzacție viitoare numai dacă maximul depășește 1,1015.
A nu produce semnal, B produce unul. Atribuim separat tranzacției viitoare rezultat brut 30 RON și cost 4 RON, indiferent de timp sau preț: netul ar fi 26 RON cu B, zero tranzacții și zero net cu A. Nu deducem execuția din OHLC și nu afirmăm profit real. Diferența de 26 RON apare exclusiv din selecția sursei contradictorii. Acoperirea rămâne 3/3 în ambele variante; verificarea structurală nu justifică alegerea celei profitabile.
Ambele seturi acoperă 3/3 poziții. Alegerea maximului schimbă semnalul și netul atribuit cu 26 RON; sursa trebuie rezolvată înaintea testului.
Pe un ecran mic poți derula diagrama orizontal sau o poți mări. Valorile și concluzia apar și în textul de mai jos.
- Versiunea A
- High 1,1010 – Fără semnal; zero tranzacții, net zero.
- Versiunea B
- High 1,1020 – Un semnal; net atribuit 30−4=26 RON.
- Acoperire identică
- 3 din 3 – Nu validează alegerea prețului.
Dovedesc lumânările OHLC complete că MT5 a folosit tickuri înregistrate?
Nu: barele nu descriu întreaga succesiune a prețului. MetaQuotes documentează generarea tickurilor când există bară de minut fără tickurile ei. Acoperirea completă a CSV-ului M1 nu dovedește folosirea exclusivă a observațiilor înregistrate. Inspectează jurnalul testerului, perioada disponibilă și modelul ales pentru programul Expert Advisor.
Compară și datele solicitate cu cele efective ale testului. Pregătirea istoricului poate deplasa începutul când datele sunt insuficiente. La exportul prin CopyRates, compară numărul solicitat cu cel returnat: descărcarea poate continua după un rezultat parțial. Ghidul MT4/MT5 tratează configurarea, iar metodologia testării leagă aceste verificări de validare.
Ce faci cu raportul de date?
- Salvează exportul original, setările și raportul. Adaugă instrumentul, baza prețului, fusul și documentul programului sesiunii. O altă persoană trebuie să poată repeta aceeași verificare, fără comparația unor grafice cu ipoteze ascunse.
- Investighează cel mai lung gol și toate grupurile de prețuri contradictorii. Compară sursa și jurnalul descărcării. Documentează sesiunea confirmată închisă sau obține exportul corectat; repetă aceeași fereastră și păstrează raportul anterior.
- Rulează un test vizual scurt pe intervalul acceptat. Inspectează semnalele din jurul golurilor, spreadul și succesiunea execuției. Pentru un motor separat, continuă cu verificările în Python. Raportul nu prezice randamente viitoare.
Verifică ce ai învățat
Exercițiu: aproximativ 2 minute.
Arată răspunsul și explicația
12 poziții așteptate minus 8 ocupate înseamnă 4 goale. Duplicatele și rândurile în afara grilei nu adaugă acoperire.
Alte întrebări
Un minut gol înseamnă automat eroarea furnizorului?
Cum pot exista zero goluri și prețuri OHLC contradictorii?
Verificatorul citește orice export fără conversie?
Grila completă este suficientă pentru acceptarea backtestului?
Surse și verificare
- MetaQuotes — Real and Generated Ticks
Secțiunea Real Ticks: bară de minut fără tickuri și model generat; OHLC nu demonstrează tickurile înregistrate.
- MetaQuotes — Historical Data
Istoricul insuficient poate deplasa începutul efectiv al testului; fără prag universal adăugat.
- MQL5 — CopyRates
Numărul copiat/eroare și continuarea descărcării după rezultat parțial.
- OANDA — Candlestick definitions
Timp de început, Bid/Ask/mid și complete prin încheierea perioadei, fără certificarea exportului.
- OANDA — Pricing alignment
dailyAlignment/alignmentTimezone și timpi returnați UTC; nu generalizăm serverele altor furnizori.
Calculele folosesc ipotezele precizate explicit. Nu înlocuiesc datele actuale ale pieței sau condițiile furnizorului.
