Na rachunku nettingowym dwa roboty i ręczne zlecenia mogą zmieniać jedną wspólną pozycję. Wynik tej pozycji nie odpowiada automatycznie wynikowi każdego robota. Najpierw odtwórz wykonania i ich powiązania, a następnie wybierz jawną konwencję analityczną. Poniższy przykład pokazuje, że dwie konwencje dają inne wyniki robotów, choć łączny wynik rachunku pozostaje taki sam. Rozbicie służy analizie; nie zastępuje historii brokera ani rozliczenia podatkowego.
Dlaczego numer magic nie rozdziela wspólnej pozycji?
W MT5 tryb netting utrzymuje jedną pozycję dla symbolu. Jej ilość może zmienić wykonanie kolejnego zlecenia. Jeden order, czyli zlecenie, może też dać kilka deals — transakcji wykonania. To rozróżnienie opisują zasady platformy. Rachunek nettingowy nie tworzy oddzielnego portfela przez to, że programom nadano różne nazwy.
DEAL_MAGIC jest oznaczeniem wykonania, a DEAL_REASON opisuje jego źródło lub przyczynę. Nie są tym samym polem. W dokumentacji właściwości deals znajdziesz również numer zlecenia, identyfikator pozycji i czas. Samo magic = 0 nie jest wystarczającym dowodem ręcznej decyzji. Zachowaj powiązane rekordy i uzgodnioną listę oznaczeń programów.
Ręczne zamknięcie może zmniejszyć ekspozycję zbudowaną wcześniej przez A oraz B. Oznaczenie zamykającego wykonania nie odpowiada na pytanie, czyją wcześniejszą porcję ilości uznasz za zamkniętą. Do tego potrzebna jest zadeklarowana reguła analizy. Podstawowy wybór pozycji przez robota omawia poradnik EA; tutaj badamy historię jednego wspólnego cyklu.
Jak połączyć wykonanie, zlecenie i pozycję bez zgadywania?
Zapisz numery jako identyfikatory, nie jako wartości do obliczeń. Łącz DEAL_ORDER ze zleceniem, a DEAL_POSITION_ID z cyklem pozycji. POSITION_IDENTIFIER jest właściwym łącznikiem historii; bieżący POSITION_TICKET może się zmienić przy operacjach serwisowych. Zachowaj również symbol, kierunek, ilość, cenę i czas każdego rzeczywistego wykonania.
HistorySelectByPosition wybiera historię zleceń i deals według identyfikatora pozycji. Sprawdź powodzenie pobrania oraz zakres eksportu, zanim uznasz listę za pełną. Lista z bieżącego okna terminala nie musi odpowiadać wszystkim rekordom potrzebnym do Twojej analizy. Nie przypisuj brakującego wejścia robotowi na podstawie komentarza przy zamknięciu.
Do rejestru dołącz prowizję, opłatę, finansowanie i wynik w walucie rachunku. Oddziel operacje bilansowe od wykonań kupna i sprzedaży. Jeżeli jedno zlecenie podzielono, analizuj faktyczne części oraz ich ceny; zaplanowana ilość nie zastępuje wykonanej. Obsługę zdarzeń i identyfikatorów rozwija artykuł o MQL5.
Jak ten sam rachunek może dawać dwa różne wyniki robotów?
Własny model: dwie porcje kupna i dwa ręczne wyjścia
Zakładamy fikcyjny liniowy kontrakt EUR/USD: 100 000 EUR na lot, rachunek USD, start bez pozycji. Wszystkie poniższe ceny są cenami wykonania: kupno po przyjętym Ask, sprzedaż po Bid. Cztery deals są pełne i następują w podanej kolejności. Każdy kosztuje 1 USD prowizji; opłaty i swap wynoszą zero. Spreadu zawartego w cenach nie odejmujemy ponownie.
| Deal / order | Źródło | Wykonanie | Pozycja po nim |
|---|---|---|---|
| 7001 / 5001 | Robot A | Kupno 0,10 po 1,1000 | Kupno 0,10 |
| 7002 / 5002 | Robot B | Kupno 0,10 po 1,1020 | Kupno 0,20 |
| 7003 / 5003 | Ręczne wyjście | Sprzedaż 0,10 po 1,1010 | Kupno 0,10 |
| 7004 / 5004 | Ręczne wyjście | Sprzedaż 0,10 po 1,1030 | Brak pozycji |
Średnia cena wspólnego kupna po drugim wykonaniu to 1,1010. W tym modelu pierwsze zmniejszenie realizuje 0 USD wyniku cenowego, a drugie 20 USD. Po czterech prowizjach: 20 − 4 = 16 USD netto. To kontrola całego zamkniętego cyklu. Nie jest wynikiem zaobserwowanym na rzeczywistym rachunku.
W analitycznym FIFO najpierw zamykamy najstarszą porcję. Ręczne wyjście 7003 przypisujemy więc A: 10 000 × (1,1010 − 1,1000) = 10 USD. Wyjście 7004 przypada B: 10 000 × (1,1030 − 1,1020) = 10 USD. Każdemu przypisujemy prowizję jego wejścia i zamknięcia. A dostaje 8 USD, B także 8 USD.
W analitycznym LIFO zamykamy najnowszą porcję jako pierwszą. B otrzymuje −10 USD wyniku ceny z 7003, a A 30 USD z 7004. Po kosztach: B ma −12 USD, A 28 USD. Suma znów wynosi 16 USD. FIFO i LIFO są tutaj własnymi konwencjami analitycznymi, nie twierdzeniem o księgowaniu MT5 ani regułą obowiązkową dla podatków.
Wynik rachunku ten sam, przypisanie inne
Dlaczego wynik analityczny po pierwszym wyjściu różni się od historii?
Po 7003 przyjmujemy bieżący Bid 1,1010. Historia modelowej pozycji netto ma zrealizowane 0 USD oraz niezrealizowane 0 USD. Analityczne FIFO ma zrealizowane 10 USD dla A, ale pozostająca porcja B traci 10 USD. Łącznie: 10 − 10 = 0 USD. Nie porównuj samej sumy analitycznych realizacji z polem realizacji serwera, gdy pozycja nadal trwa.
Po trzech wykonaniach prowizje wynoszą 3 USD. Obie reprezentacje dają więc −3 USD łącznego wyniku przy tej cenie. Po zamknięciu 7004 niezrealizowany wynik znika i całkowite rozbicie daje 16 USD. Różnicę między tymi miarami tłumaczy artykuł o wyniku otwartym i zrealizowanym. Uzyskana zgodność sum nie wybiera za Ciebie lepszej konwencji.
Rzeczywisty cykl może zawierać częściowe wykonania, odwrócenie, korektę lub koszty zaksięgowane osobno. Przy brakującym rekordzie pozostaw nieprzypisaną część i opisz przyczynę. Nie wymyślaj ceny wejścia ani źródła dyspozycji, żeby suma pasowała. Do porównania strategii stosuj tę samą regułę we wszystkich cyklach, a zmianę konwencji oznacz jako zmianę metody analizy.
W arkuszu zachowaj osobne kolumny: źródło instrukcji, identyfikator porcji wejścia, przypisane wyjście, ilość oraz reguła kosztów. Ręczna sprzedaż pozostaje ręczną sprzedażą, choć w analizie zamyka porcję przypisaną A. Nie zmieniaj jej oznaczenia na zlecenie robota. Zapisz również moment wyceny otwartej części, bo wynik niezrealizowany zależy od tej ceny. Dzięki temu druga osoba może odtworzyć obliczenie, zamiast ufać podpisowi „wynik EA”. Jeśli nie da się uzgodnić ilości, zatrzymaj przypisywanie tej części i sprawdź brakujące wykonania. Podział wyniku nie rozdziela pozycji na serwerze ani nie chroni jednej strategii przed zmianą wspólnej ekspozycji przez drugą. To narzędzie oceny przeszłych działań, a nie mechanizm izolowania robotów.
Co zrobić przed oceną wyników dwóch robotów?
- Wybierz zakończony cykl jednego symbolu i zachowaj oryginalny eksport. Połącz wykonania ze zleceniami oraz identyfikatorem pozycji. Sprawdź faktyczne ilości i wszystkie koszty; nie twórz nowej transakcji na rachunku tylko po to, żeby przygotować przykład do analizy.
- Zapisz konwencję przypisania ilości i kosztów przed obliczeniem wyników robotów. Oznacz źródła wykonania niezależnie od analitycznych właścicieli porcji. Przy brakach pozostaw pozycję nieustaloną, zamiast traktować numer magic zamknięcia jako kompletną historię wcześniejszych wejść.
- Uzgodnij całkowity wynik zamkniętego cyklu z historią rachunku. Dla cyklu otwartego zestaw wynik zrealizowany i niezrealizowany przy tej samej cenie. Zachowaj oba zestawienia w dzienniku tradera; rozbicie służy analizie działania, nie potwierdzeniu przyszłej rentowności.
Sprawdź, czy rozumiesz
Jedno krótkie ćwiczenie
Około 2 min · możesz spróbować ponownie
Po 7003 FIFO pokazuje +10 USD zrealizowane, −10 USD niezrealizowane i 3 USD prowizji. Jaki jest łączny wynik?
- +7 USD.
- −3 USD.
- 0 USD.
Sprawdź odpowiedź i wyjaśnienie
−3 USD.
Tak: 10 − 10 − 3 = −3 USD. To zgadza się z cenowym zerem wspólnej pozycji pomniejszonym o trzy prowizje.

