Na účtu s nettingem mohou dva roboti a ruční pokyny měnit jednu společnou pozici. Výsledek této pozice sám neurčuje výsledky jednotlivých robotů. Nejdříve rekonstruujte skutečná provedení, jejich vazby a náklady; teprve pak použijte předem vyhlášený způsob analytického rozdělení. Ukážeme celé dvě varianty i otevřenou část cyklu. Nejde o alternativní účetnictví serveru nebo české daňové pravidlo.

Proč magic number nerozdělí společnou pozici?

MT5 netting udržuje na symbolu jednu pozici. Další provedení mohou změnit její objem či směr. Pokyn neboli order je instrukce; deal je záznam skutečného provedení. Jeden order se může rozpadnout na několik dealů. Dva názvy programů proto nevytvoří dvě samostatná portfolia. Pojem EA označuje program, nikoli záruku oddělení jeho expozice od ostatních instrukcí na účtu.

DEAL_MAGIC nese magic number provedení, kdežto DEAL_REASON popisuje jeho zdroj nebo příčinu. Nejde o zaměnitelné sloupce. Samotná nula v magic number neprokazuje ruční rozhodnutí. Uchovejte čas, vazby na order, identifikátor pozice a doložené mapování programů na jejich označení. Ruční prodej může omezit pozici vytvořenou roboty A i B; zdroj výstupní instrukce se tím nestává původcem dřívějšího zisku.

Zdroje instrukcí a analytické vlastníky částí objemu ukládejte zvlášť. Ruční výstup nepřepisujte na pokyn robota jen proto, že mu v doplňkové analýze přiřadíte uzavíranou část. Průvodce roboty vysvětluje základní práci s pozicemi; zde sledujeme historii jediné společné pozice.

Jak propojit deal, order a pozici bez odhadování?

Čísla záznamů ukládejte jako identifikátory, nikoli jako měřené objemy. DEAL_ORDER odkazuje na order, DEAL_POSITION_ID na cyklus pozice. POSITION_IDENTIFIER pomáhá dohledat související historii; aktuální POSITION_TICKET se při servisních operacích serveru může změnit. Pro každé skutečné plnění potřebujete také symbol, směr, objem, cenu a čas.

HistorySelectByPosition vybírá historii orderů a dealů podle identifikátoru pozice. Ověřte úspěch výběru i rozsah exportu; pouhý seznam právě viditelný v okně nemusí obsahovat všechny potřebné záznamy. Originál uložte dříve, než připojíte vlastní interpretaci. Chybějící vstup nelze spolehlivě doplnit z komentáře výstupu.

Zahrňte komise, další poplatky, financování a měnu účtu. Operace salda oddělte od nákupů a prodejů. U částečně provedeného pokynu sečtěte skutečné objemy za jejich skutečné ceny; požadovaný objem je nenahradí. Základy MQL5 rozvíjejí zpracování událostí a identifikátorů. Následující analýza začíná až úplně zadanou historií, ne příkazem k živému obchodování.

Jak vzniknou z jednoho účtu dva výsledky robotů?

Původní model: dva nákupy a dva ruční výstupy

Předpokládejme fiktivní lineární EUR/USD kontrakt: jeden lot je 100 000 EUR, účet je v USD a začíná bez pozice. Všechny uvedené ceny jsou skutečně zadaná plnění v modelu: nákupy za Ask, prodeje za Bid. Čtyři dealy se provedou plně v uvedeném pořadí. Každý stojí 1 USD komise, ostatní poplatky a swap jsou nula. Spread už obsažený v plněních znovu neodečítáme.

Na malé obrazovce posouvejte tabulku vodorovně, abyste přečetli všechny sloupce.

Fiktivní cyklus POSITION_IDENTIFIER = 5001
Deal / orderZdroj instrukceProvedeníPozice potom
7001 / 5001EA ANákup 0,10 za 1,1000Long 0,10 lotu
7002 / 5002EA BNákup 0,10 za 1,1020Long 0,20 lotu
7003 / 5003Ruční výstupProdej 0,10 za 1,1010Long 0,10 lotu
7004 / 5004Ruční výstupProdej 0,10 za 1,1030Bez pozice

Společná nákupní průměrná cena po druhém plnění je 1,1010. První redukce realizuje cenově 0 USD a druhá 20 USD. Uzavřený cyklus dává 20 − 4 = 16 USD čistého. Nejde o pozorovaný brokerský výpis, nýbrž o výsledek zadaných předpokladů.

Analytické FIFO nejdříve uzavírá nejstarší množství. Výstup 7003 přiřadí A: 10 000 × (1,1010−1,1000) = 10 USD. Výstup 7004 přiřadí B: 10 000 × (1,1030−1,1020) = 10 USD. Každému přidělíme jeho vstupní komisi a komisi příslušného výstupu. A tak má 8 USD a B rovněž 8 USD.

Analytické LIFO nejdříve uzavírá nejnovější množství. B dostane z výstupu 7003 cenově −10 USD; A dostane z 7004 cenově +30 USD. Po nákladech jde o B −12 USD a A +28 USD. Součet zůstává 16 USD. FIFO a LIFO zde popisují naše analytické konvence, nikoli dvě volitelné metody serveru MT5 ani univerzální daňovou metodu. Při hodnocení robota je nesmíte potichu střídat.

Stejný účet, jiné rozdělení

Stejný účet, jiné rozdělení

Stejný účet, jiné rozděleníUzavřený cyklus: cenový výsledek 20 USD, komise 4 USD, čistě 16 USD. FIFO A 8 a B 8; LIFO A 28 a B minus 12. Analytické rozdělení nenahrazuje serverovou historii.Stejný účet, jiné rozděleníÚčet: cenově 20 USD − komise 4 USD = čistě 16 USD.FIFO: nejstarší částA: +8 USDB: +8 USD8 + 8 = 16 USDLIFO: nejnovější částA: +28 USDB: −12 USD28 − 12 = 16 USDVlastní model • čtyři plnění • celá pozice uzavřena
Obě analytická rozdělení uzavřeného cyklu souhlasí na 16 USD; liší se výsledky A a B. Původní historie zůstává samostatným podkladem.

Pro přečtení detailů posouvejte diagram vodorovně nebo jej zvětšete.

Proč se po prvním výstupu liší realizovaný výsledek?

Po 7003 předpokládejme aktuální Bid 1,1010. Společná net pozice má cenově 0 USD realizovaných a 0 USD otevřených. Analytické FIFO však realizovalo A +10 USD a zbývající B při stejné ceně vykazuje −10 USD nerealizovaně. Dohromady je to stále nula. Dosavadní tři komise znamenají celkem −3 USD. Srovnání samotného realizovaného sloupce by vynechalo otevřenou ztrátu.

Po 7004 už otevřený výsledek neexistuje a celé rozdělení se uzavře na 16 USD. Realizovaný a otevřený výsledek je nutné rozlišovat i při hodnocení jednotlivých programů. Shodný součet sám nevybere vhodnou analytickou konvenci. U skutečné historie mohou přibýt částečná plnění, obraty, opravy i samostatně účtované náklady. Neznámé přiřazení ponechte neuzavřené a vysvětlete důvod.

Vlastní CZK model: nestejné porce a poměrné komise

V novém fiktivním lineárním EUR/CZK cyklu A nakoupí 1 000 EUR za 25,00 a zaplatí komisi 10 Kč. B nakoupí 2 000 EUR za 25,20 s komisí 20 Kč. Dva ruční prodeje po 1 500 EUR se plně provedou za 25,10 a 25,30; každý má komisi 15 Kč. Další náklady jsou nula. Výstupní komise dělíme podle skutečně přiřazených EUR, tedy 0,01 Kč za EUR, nikoli podle jména odesílatele.

Nákupy stojí cenově 75 400 Kč a prodeje přinesou 75 600 Kč. Hrubých 200 Kč minus celkové komise 60 Kč dává 140 Kč. FIFO při prvním prodeji uzavře 1 000 EUR A se ziskem 100 Kč a 500 EUR B se ztrátou 50 Kč. Druhý prodej přiřadí zbývajících 1 500 EUR B se ziskem 150 Kč. A po svých komisích 20 Kč získá 80 Kč; B po komisích 40 Kč získá 60 Kč.

LIFO přiřadí první prodej 1 500 EUR B se ztrátou 150 Kč. Druhý nejdříve uzavře zbylých 500 EUR B se ziskem 50 Kč a poté 1 000 EUR A se ziskem 300 Kč. B má po komisích −140 Kč a A +280 Kč; součet je opět 140 Kč. Nezměnil se účet, pouze přiřazení výstupních množství.

Po prvním CZK prodeji a při Bid 25,10 ukazuje FIFO +50 Kč realizovaných a −150 Kč otevřených. LIFO ukazuje −150 Kč realizovaných a +50 Kč otevřených. Dosavadní komise jsou v obou případech 10+20+15 = 45 Kč: kombinovaný výsledek je −145 Kč. Prosté +50−45 = +5 Kč by otevřenou ztrátu vynechalo. Případné jiné převody měny, financování či daň zde nejsou zadány.

CZK: stejný součet, odlišné výsledky robotů

CZK: stejný součet, odlišné výsledky robotůCZK analytické FIFO: A 80 + B 60 = 140 KčKaždému jeho vstupní i objemově přidělená výstupní komise.CZK analytické LIFO: A 280 + B (−140) = 140 KčStejné provedené obchody a stejné celkové náklady.Po prvním CZK výstupu: Celkem −145 KčRealizované + otevřené ocenění − dosavadní komise 45 Kč.
CZK: stejný součet, odlišné výsledky robotů. Vlastní hypotetický model.

Pro přečtení detailů posouvejte diagram vodorovně nebo jej zvětšete.

Číselný přepis diagramu: CZK: stejný součet, odlišné výsledky robotů

Čtyři úplná plnění, komise podle přiřazených EUR; model není brokerské ani daňové účetnictví.

Před hodnocením robotů zveřejněte konvenci a zahrňte otevřený výsledek.

CZK analytické FIFO
A 80 + B 60 = 140 Kč — Každému jeho vstupní i objemově přidělená výstupní komise.
CZK analytické LIFO
A 280 + B (−140) = 140 Kč — Stejné provedené obchody a stejné celkové náklady.
Po prvním CZK výstupu
Celkem −145 Kč — Realizované + otevřené ocenění − dosavadní komise 45 Kč.

Co udělat před hodnocením dvou robotů?

  1. Vyberte dokončený cyklus jednoho symbolu a uchovejte původní export. Propojte dealy, ordery a identifikátor pozice; ověřte skutečné množství i všechny náklady. Pro získání příkladu nepotřebujete otevírat živý obchod.
  2. Před výpočtem zveřejněte množstevní i nákladovou konvenci. Zdroj instrukce veďte odděleně od analytického vlastníka porce. Neznámá data nepřevádějte na jistotu podle komentáře nebo magic number výstupu.
  3. U uzavřeného cyklu porovnejte celkový výsledek s historií účtu. U otevřeného zahrňte realizovaný i nerealizovaný výsledek při stejné ceně. Oba pohledy uložte do deníku a případnou změnu konvence označte. Analýza popisuje chování; nepředpovídá budoucí výnos a nemění limity skutečné společné expozice.