Două rulări ale aceluiași robot pot da rezultate diferite cu parametri vizibili neschimbați. Verifică și codul, datele, specificația simbolului și execuția înainte să modifici strategia. Un manifest înregistrează aceste condiții. Comparatorul verifică declarațiile introduse, fără acces la mediul real; păstrează rapoartele și jurnalele care susțin fiecare câmp.

Ce arhivezi înaintea următoarei rulări?

Păstrează separat ambele rapoarte, listele execuțiilor, jurnalele și seturile de parametri, inclusiv rezultatul mai slab. Captura curbei nu arată primul fill, numărul execuțiilor parțiale ori începutul real. Ai nevoie de legătura dintre condițiile testului, operațiuni și total.

Testerul MT5 separă testul unic, optimizarea și evaluarea pe perioadă ulterioară. Același nume de fișier poate ascunde compilare sau bibliotecă diferită. Arhivează buildul, programul și dependențele; numele nu identifică octeții.

Compară începutul cerut cu cel efectiv. Pregătirea istoricului poate deplasa startul când lipsesc date anterioare. Luna completă și intervalul scurtat sunt evaluări distincte. Verificatorul acoperirii CSV inspectează exportul, iar manifestul acoperă alte condiții ale rulării.

Cum completezi aceeași schemă?

Folosește exact cele 13 nume de câmp din tabel, fără traducerea cheilor sau câmpuri suplimentare la nivel principal. version este numărul 1, versiunea formatului, fără legătură cu versiunea Expert Advisor. Celelalte valori sunt șiruri; inputs, costs și initialState pot fi și obiecte simple.

Pe un ecran mic, derulează tabelul orizontal pentru a citi toate coloanele.

Chei tehnice păstrate identic pentru comparator
CâmpuriConținut
version, platform, build, codeRevisionFormat, platformă, build, cod și dependențe.
inputs, dataSnapshotParametri și versiunea datelor arhivate.
symbolSpecification, executionModel, costsContract, simularea execuției și toate costurile asumate.
requestedStart, actualStart, endLimite cerute și efective ale evaluării.
initialStateSold, poziții și condiții de inițializare.

În dataSnapshot introdu identificatorul arhivei sau hashul calculat separat. Eticheta „data-v1” rămâne declarație: pagina nu citește fișierul. Nici codeRevision numit hash nu este verificat automat. Nu include parole, coduri de acces ori date personale. Valoarea necunoscută trebuie investigată, fără etichetă inventată care pare autoritară.

Folosește date cu fus explicit și reprezentare consecventă, preferabil UTC. Comparatorul compară textul, fără calendarul brokerului. Două descrieri ale aceluiași moment pot cere normalizare manuală; adăugarea literei Z la ora serverului nu o convertește în UTC.

Ce compară instrumentul?

Cele două exemple JSON păstrează versiunea numerică 1, platforma „MT5 — synthetic example”, build „demo-build-a”, cod „synthetic-code-v1”, period „14”, date „synthetic-export-v1” și specificație „synthetic-EURUSD-spec-v1”. Limitele fictive UTC sunt 2026-10-01T00:00:00Z și 2026-10-12T00:00:00Z, începutul cerut și efectiv identice. Starea inițială declară depositUSD „1000” și positions „none”. Nu sunt cont sau rulare reală.

În costs, cele două exemple au fills „2”, financingUSD „0” și otherUSD „0”. Doar commissionPerFillUSD trece de la „1” la „2”. Sintaxa mașinii rămâne cu punct zecimal și chei nemodificate. Exemplele sunt editabile, fără dovada că mediul respectă aceste declarații.

Compară două registre de backtest

Instrumentul rulează local în browser, fără trimitere de date ori salvare persistentă. Nu importă fișiere, nu rulează MT5 și nu citește contul. Obiecte egale înseamnă declarații egale, fără mediu complet ori condiții de piață identice demonstrate.

Analiza rulează local în browser. Instrumentul nu trimite datele și nu le salvează persistent. Nu introduce parole sau date personale.

Folosește schema documentată cu version: 1. Valorile numerice din specificație se scriu ca șiruri cu punct zecimal. Un câmp gol sau absent înseamnă necunoscut. Fiecare înregistrare are limita de 64 KiB.

Formatul JSON: câmpuri și limite

version: 1. Alte câmpuri acceptate: platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end, initialState.

Valorile câmpurilor de la nivelul principal sunt șiruri. inputs, costs și initialState pot fi și obiecte. Câmpurile goale sau omise înseamnă necunoscut. Cheile duplicate și câmpurile principale nedocumentate sunt respinse. Limite: 8 niveluri și 2 000 de valori; numerele din obiecte au cel mult 15 cifre semnificative, fără întregi mari nesiguri. Datele cer fus explicit. Comparația este literală: descrierile și formatele de dată diferite nu sunt echivalate automat.

Formatul documentat acceptă version: 1. Numerele specificației se notează ca șiruri cu punct zecimal. Câmpul gol sau absent înseamnă necunoscut. Cheile duplicate și câmpurile principale nedocumentate sunt respinse. Fiecare registru are limită 64 KiB; maximum opt niveluri și 2.000 valori, iar numerele imbricate maximum 15 cifre semnificative, fără întregi mari nesiguri. Comparația este literală: nu reconciliază automat formate de dată sau descrieri echivalente. Fără JavaScript, exemplele și explicațiile rămân disponibile.

Ce explică singură schimbarea comisionului?

Model fictiv: contract liniar, cont USD, o tranzacție închisă și două filluri. Rezultatul prețurilor este 10 USD, cu prețuri, cantitate și interval identice. Finanțarea și alte costuri sunt zero. A declară comision 1 USD per fill, B 2 USD. Nu este tarif al unui broker.

A:10−2×1=8 USD. B:10−2×2=6 USD. Costul explică diferența 2 USD, fără dovada unor semnale mai slabe, date greșite ori slippage. Comparatorul ar trebui să marcheze costs; interpretarea cere raportul și celelalte ipoteze.

O tranzacție, două ipoteze de cost

O tranzacție, două ipoteze de costRezultat fictiv de preț 10 USD. Două filluri costă în total 2 USD în A și 4 USD în B. Rezultate nete 8 și 6 USD.O tranzacție, două ipoteze de costTest ARezultat de preț: +10 USD1 USD per fill2 × 1 = 2 USD costNet: +8 USDO schimbare declaratăCâmp: costsAceleași prețuri și cantitateDiferență netă: 2 USDModel fictiv, fără tarif realTest BRezultat de preț: +10 USD2 USD per fill2 × 2 = 4 USD costNet: +6 USDIpoteze: 1 tranzacție, 2 filluri, alte costuri = 0.
În model, numai comisionul diferit explică rezultatele 8 și 6 USD. Comparatorul nu verifică dacă declarațiile corespund mediului real.

Pe un ecran mic, derulează diagrama orizontal sau mărește-o. Explicația este disponibilă și în text.

Model RON: aceeași poziție poate avea alt număr de filluri

Tarif complet fictiv per execuție: maximul dintre 1 RON și 4 RON × volumul executat în loturi, aplicat fiecărui fill, fără alte costuri. Aceeași poziție 0,30 loturi și același rezultat al prețurilor 10 USD, convertit la curs sintetic fix 4,50 RON/USD =45 RON.

A intră printr-un fill de 0,30 și iese printr-unul de 0,30: fiecare costă max(1;4×0,30)=1,20 RON. Total 2,40, net 42,60 RON. B intră prin filluri 0,10 și 0,20, apoi iese cu 0,30. Costuri 1,00+1,00+1,20=3,20 RON; net 41,80 RON. Prețurile medii și volumul pot fi identice, dar pragul minim per fill schimbă taxa cu 0,80 RON.

Nu generaliza la brokeri. La tarif pur proporțional de 4 RON/lot per fill, fără minim, ambele ar costa 2,40 RON. Păstrează volumul fiecărei execuții și unitatea tarifului: „per lot”, „per fill” și „per tranzacție închisă” sunt ipoteze diferite. Pentru această comparație de cost nu deducem un spread nou peste fillurile alese.

Același lot total, alt minim per fillTarif fictiv max(1 RON; 4 RON × loturi) per fill. Poziție 0,30 loturi, rezultat de preț 45 RON, fără alte costuri.CALCUL IPOTETICA: intrare 0,30 / ieșire 0,30Cost 2,40 → net 42,60RONB: intrare 0,10+0,20 / ieșire0,30Cost 3,20 → net 41,80RONFără minimAmbele costă 2,40 RON
Același lot total, alt minim per fill. Tarif fictiv max(1 RON; 4 RON × loturi) per fill. Poziție 0,30 loturi, rezultat de preț 45 RON, fără alte costuri.

Salvează volumele fillurilor și baza comisionului. Același volum total nu identifică taxa cu minim per execuție.

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.

A: intrare 0,30 / ieșire 0,30
Cost 2,40 → net 42,60 RON – Două filluri de 1,20 RON.
B: intrare 0,10+0,20 / ieșire 0,30
Cost 3,20 → net 41,80 RON – Minime 1 + 1 plus 1,20 RON.
Fără minim
Ambele costă 2,40 RON – Tarif pur proporțional; alt model.

Ce verifici dacă declarațiile coincid?

Găsește prima execuție diferită: ora semnalului, simbol, latură, cantitate și motivul intrării ori ieșirii. Soldul final poate ascunde o diferență de la primul indicator. Păstrează și deciziile fără ordin. Modifică o singură condiție într-o reluare controlată, cu raportul anterior păstrat.

Mediul agentului separă variabilele globale și fișierele de terminal. Verifică dependențele și inițializarea; dacă programul folosește aleatoriu, păstrează modul inițializării generatorului. Nu șterge prima dată cacheul și nu atribui automat orice diferență acestuia. Arhiva necesară reproducerii trebuie păstrată.

Registrul poate omite dependențe ori descrie greșit datele. Declarațiile egale încep investigația mai detaliată, fără certificare. Registrul versiunilor și dovezilor dezvoltă validarea; Setările MT4/MT5 completează partea de platformă. Nu alege automat rezultatul superior și nu numi cel inferior eroare de platformă.

Ce păstrezi după comparație?

  1. Arhivează separat rapoartele A și B și completează cele 13 câmpuri. Leagă identificatorii de fișierele corecte; documentează necunoscutul fără versiuni inventate.
  2. Alege o diferență și verifică efectul într-un exemplu scurt. Pentru comision reconciliază fillurile și debitările, pentru start găsește primul semnal disponibil. Păstrează și testele care infirmă explicația inițială.
  3. Dacă declarațiile coincid, localizează primul eveniment divergent. Completează arhiva, apoi revino la evaluarea strategiei. Comparația nu prezice profit și nu certifică rezultatul istoric; nu este recomandare de investiție.