Pe netting, doi roboți și ordinele manuale pot modifica aceeași poziție. Rezultatul ei nu identifică automat contribuția fiecărui EA. Reconstruiește executările și legăturile, apoi declară convenția de alocare. Două convenții pot da rezultate diferite pentru roboți, păstrând totalul contului. Analiza nu înlocuiește istoricul brokerului și nu stabilește tratamentul fiscal românesc.

De ce magic number nu împarte poziția comună?

MT5 netting menține o poziție pe simbol, modificată prin executări ulterioare. Un ordin poate produce mai multe executări, numite deals. Numele diferite ale programelor nu creează portofolii independente în acel cont. Separă instrucțiunea, executarea și poziția rezultată.

DEAL_MAGIC este numărul magic al executării, iar DEAL_REASON descrie sursa sau cauza. Nu sunt aceeași proprietate. Documentația expune și ordinul, identificatorul poziției și timpul. Magic zero singur nu dovedește decizie manuală. Păstrează legăturile și maparea convenită dintre programe și identificatori.

O ieșire manuală poate reduce expunerea construită de A și B. Eticheta executării de ieșire nu decide ce cantitate anterioară vei considera închisă în analiză. Ghidul EA explică selecția pozițiilor; aici reconstruim istoria comună, nu deschidem conturi separate pentru fiecare robot.

Cum legi executarea, ordinul și poziția?

Păstrează numerele ca identificatori, fără operații aritmetice asupra lor. Leagă DEAL_ORDER de ordin și DEAL_POSITION_ID de istoricul poziției. POSITION_IDENTIFIER leagă ciclul; POSITION_TICKET curent se poate schimba prin operațiuni de serviciu ale serverului. În netting, inversarea printr-o singură tranzacție INOUT păstrează identificatorul, deși ticketul se schimbă. Nu presupune că orice inversare începe un identificator nou.

HistorySelectByPosition selectează istoricul folosind identificatorul poziției. Verifică succesul și acoperirea exportului, nu numai ce se vede într-o fereastră. Atenție și la programul de export: după HistoryOrderSelect sau HistoryDealSelect lista selectată se poate reseta la elementul găsit. O parcurgere construită pe lista anterioară trebuie proiectată ținând cont de acest efect. Nu completa rândurile lipsă din comentariul ieșirii.

Include comisionul, fee, finanțarea și rezultatul în moneda contului, separând operațiunile de sold de executările Buy/Sell. La ordine împărțite folosește cantitățile și prețurile efectiv executate, nu volumul solicitat. Bazele MQL5 pentru EA dezvoltă evenimentele și identificatorii; aici datele de intrare sunt un istoric reconciliat.

Cum obții două rezultate EA din același cont?

Model propriu: două cumpărări, două ieșiri manuale

Presupunem contract liniar EUR/USD de 100 000 EUR/lot, cont USD și nicio poziție inițială. Toate prețurile sunt executări fictive: cumpărările la Ask presupus, vânzările la Bid. Patru executări complete au loc în ordinea tabelului; fiecare costă 1 USD comision, fee și swap zero. Nu scădea încă o dată spreadul inclus deja în prețurile executate.

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

Istoric fictiv al ciclului POSITION_IDENTIFIER = 5001
Deal / ordinSursăExecutarePoziție după
7001 / 5001EA ABuy 0,10 la 1.1000Long 0,10
7002 / 5002EA BBuy 0,10 la 1.1020Long 0,20
7003 / 5003Ieșire manualăSell 0,10 la 1.1010Long 0,10
7004 / 5004Ieșire manualăSell 0,10 la 1.1030Fără poziție

Media cumpărărilor după a doua executare este 1.1010. În modelul poziției comune, prima reducere realizează 0 USD din preț, a doua 20 USD. După patru comisioane rămân 20 − 4 = 16 USD. Este reconcilierea unui ciclu complet fictiv, nu performanța observată live.

FIFO analitic alocă ieșirea către cantitatea cea mai veche: 7003 către A, cu 10 000 × (1.1010 − 1.1000) = 10 USD; 7004 către B, cu 10 000 × (1.1030 − 1.1020) = 10 USD. Fiecare EA primește comisionul intrării și al ieșirii alocate. A are 8 USD, B tot 8 USD.

LIFO analitic alocă întâi cantitatea cea mai nouă: B are −10 USD din preț la 7003, A are 30 USD la 7004. După costuri: B −12 USD, A 28 USD; total tot 16 USD. FIFO/LIFO sunt aici convenții ale analizei, nu două metode alternative de contabilizare ale serverului sau reguli fiscale universale. Nu schimba tacit convenția ca să îmbunătățești raportul robotului.

Același total, atribuiri diferite

Același total, atribuiri diferiteModel fictiv complet închis: 20 USD din preț minus 4 USD comisioane, net 16 USD. FIFO alocă A 8/B 8; LIFO A 28/B −12. Convențiile analitice nu înlocuiesc istoricul serverului.Același total, atribuiri diferiteCont comun: 20 USD din preț − 4 USD comisioane = 16 USD.FIFO: cantitatea vecheA: +8 USDB: +8 USD8 + 8 = 16 USDLIFO: cantitatea nouăA: +28 USDB: −12 USD28 − 12 = 16 USDModel propriu • patru executări • poziție închisă complet
Același total, atribuiri diferite. Ciclu complet USD: 20 din preț − 4 costuri = 16 net; A/B diferă între convenții.

Ambele convenții dau 16 USD total, dar alt rezultat EA. Nu sunt două metode ale serverului.

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.

De ce rezultatul realizat diferă după prima ieșire?

După 7003 presupunem Bid curent 1.1010. Poziția comună are 0 USD realizați și 0 USD nerealizați din preț. FIFO analitic arată 10 USD realizați la A, dar cantitatea B rămasă are −10 USD nerealizați. Împreună sunt zero. Compararea numai a rezultatului realizat analitic cu cel realizat al serverului este incorectă cât timp poziția rămâne deschisă.

După trei executări sunt 3 USD comisioane; ambele reprezentări au rezultat combinat −3 USD la acel preț. După 7004 nu mai există evaluare nerealizată, iar alocarea totală este 16 USD. P/L flotant și realizat explică măsurile. Potrivirea sumelor nu selectează automat convenția potrivită scopului tău.

Model RON: conversia poate cere o reconciliere separată

Extensie ipotetică distinctă, pentru un registru RON: păstrăm cele patru executări și comisioanele de 1 USD, dar alegem conversii RON/USD de 4,40; 4,50; 4,60; 4,70, în aceeași ordine. Registrul comun convertește rezultatul din preț realizat la fiecare ieșire: 0 USD la prima și 20 USD la ultima. Convertește fiecare comision la cursul evenimentului său. Nu sunt cursuri curente sau metoda afirmată a unui broker; nu reconvertim automat soldul contului USD inițial.

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

Registrul comun RON definit pentru exemplu
ExecutareP/L realizat USDConversie RON/USDContribuție netă RON
700104,40−4,40
700204,50−4,50
700304,60−4,60
7004204,70+89,30

Totalul este 94 RON din preț minus 18,20 RON comisioane = 75,80 RON. Conversia întregului rezultat USD la ultimul curs ar da 16 × 4,70 = 75,20 RON, altă convenție, nu aceeași evidență. Diferența de 0,60 RON nu dovedește o taxă ascunsă.

Dacă în plus convertești profiturile FIFO de 10 și 10 USD la cursurile celor două ieșiri, obții 93 RON din preț, nu 94. După costurile alocate, A are 37 RON și B 37,80: subtotal 74,80 RON. Lipsește din reconcilierea cu registrul comun 1 RON. Pentru LIFO, A are 131,90 RON și B −55,10: subtotal 76,80 RON, cu ajustare de −1 RON față de registrul comun.

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

Subtotalul atribuit nu este automat evidența comună în RON
Convenție analiticăA netB netSubtotalReconciliere distinctăTotal comun
FIFO3737,8074,80+175,80
LIFO131,90−55,1076,80−175,80

Ajustarea descrie diferența dintre momentele realizării și conversiei în cele două convenții; nu este comision nou, profit suplimentar sau eroare dovedită a brokerului. Las-o într-o coloană de reconciliere până când declari cum o aloci. Suma finală potrivită nu justifică atribuirea ei arbitrară robotului favorit. Exemplul arată de ce regula de conversie și alocarea costurilor trebuie declarate împreună cu FIFO/LIFO.

Istoricul real poate avea executări parțiale, inversări, corecții și taxe separate. Dacă lipsește o intrare, lasă atribuirea afectată nerezolvată. Nu inventa prețul ori sursa pentru a forța suma. Limitele fiecărui robot și controlul contului se aplică expunerii comune efective, indiferent de convenția raportului.

Ce pregătești înainte să evaluezi roboții?

  1. Selectează un ciclu complet al unui simbol și păstrează exportul original. Leagă executările de ordine și identificatorul poziției, reconciliază volumele și costurile. Nu crea un exemplu printr-o tranzacție live.
  2. Declară alocarea cantităților, costurilor și conversiei înainte de calcul. Sursa instrucțiunii și proprietarul analitic sunt coloane diferite. Marchează datele lipsă.
  3. Compară totalul ciclului închis cu evidența comună. Pentru ciclul deschis adună realizat și nerealizat la același preț și monedă. Păstrează ambele perspective în jurnal; alocarea nu stabilește profitabilitatea viitoare.