„Zatvoriť všetko“ v MT5 znamená skupinu operácií, nie záruku okamžite prázdneho účtu. Po odmietnutí, prerušení postupu alebo vypnutí aplikácie môžu zostať pozície. Rozhoduje potvrdené vykonanie a aktuálny objem, nie názov tlačidla. Tento postup vysvetľuje vstavané skupinové operácie MT5; doplnok či vlastný EA sa môže správať inak.

Aký rozsah má vybraný príkaz?

Zachovajte presný názov funkcie: všetky pozície, iba ziskové, stratové, jeden symbol alebo jeden smer. Výber konkrétnej pozície môže zmeniť dostupnú ponuku. Veta „zatvoril som všetko“ bez rozsahu nepreukazuje, čo terminál požiadal zatvoriť. Nezamieňajte zatvorenie s otočením pozície; otočenie môže vytvoriť novú expozíciu opačným smerom.

Dokumentácia MT5 rozdeľuje postup na etapy. Pri hedgingu sa najprv skúša Close By pre opačné pozície a potom bežné zatvorenie zvyšku. Chyba v sekvenčnej etape Close By proces zastaví. V neskoršej asynchrónnej etape odmietnutie jednej požiadavky ponechá príslušnú pozíciu otvorenú, ale nezastaví odosielanie ostatných. FIFO má vlastné sekvenčné zatváranie s prerušením pri chybe. Následok odmietnutia preto vždy priraďte k príslušnej etape.

Skupinové príkazy vyžadujú One Click Trading a niektoré nie sú dostupné pri obmedzení FIFO. Režim účtovania a ACCOUNT_FIFO_CLOSE overte na skutočnom účte, nie podľa vzhľadu terminálu. Ide o vlastnosti účtu, nie všeobecné zákonné pravidlo. Hedgingový režim odlišuje opačné samostatné tickety od spoločnej nettingovej pozície. Close By vyžaduje opačné pozície toho istého symbolu; podobný názov iného kontraktu nestačí.

Ako zosúladiť päť pozícií po jednej operácii?

Pôvodný diagnostický model. Fiktívny hedgingový účet bez FIFO má päť pozícií. EUR/USD povoľuje Close By. Nevyskytujú sa čiastočné plnenia, nové vstupy ani ďalšie zmeny. Príklad ukazuje závislosti, nie rýchlosť servera. Nepočítame hotovostný výsledok a nesčítavame loty rozdielnych kontraktov.

Na malej obrazovke posúvajte tabuľku vodorovne, aby ste prečítali všetky stĺpce.

Počiatočný stav a potvrdené výsledky
TicketNa začiatkuPotvrdenieZostáva
AEUR/USD, nákup 0,10 lotuClose By s B vykonanéNič
BEUR/USD, predaj 0,10 lotuClose By s A vykonanéNič
CGBP/USD, nákup 0,20 lotuCelých 0,20 zatvorenýchNič
DUSD/JPY, predaj 0,10 lotuOdmietnutie; zatvorené 0Predaj 0,10 lotu
EXAU/USD, nákup 0,05 lotuCelých 0,05 zatvorenýchNič

Po potvrdenom páre A–B klesne počet pozícií z piatich na tri. Terminál odošle bežné požiadavky pre C, D a E bez čakania na každé predchádzajúce potvrdenie. C a E sa v modeli zatvoria, D je odmietnutá. Zostáva jedna pozícia D: predaj 0,10 lotu USD/JPY. Tri odoslané požiadavky neznamenajú tri dokončené výstupy.

Päť pozícií, jedna stále otvorená

Päť pozícií, jedna stále otvorenáAutorský model: Close By zatvorí A a B. Zatvorenia C a E sa vykonajú, D je odmietnutá. Z pôvodných piatich zostáva D: predaj 0,10 lotu USD/JPY. Odoslanie nie je vykonanie.A + B: EUR/USDClose By dokončené2 pozície zatvorenéC: GBP/USDRealizácia potvrdená1 pozícia zatvorenáD: USD/JPYPožiadavka odmietnutáPredaj 0,10 zostáva otvorenýE: XAU/USDRealizácia potvrdená1 pozícia zatvorená
Autorský model: Close By zatvorí A a B. Zatvorenia C a E sa vykonajú, D je odmietnutá. Z pôvodných piatich zostáva D: predaj 0,10 lotu USD/JPY. Odoslanie nie je vykonanie.

Na malej obrazovke posúvajte diagram vodorovne alebo ho zväčšite. Vysvetlenie nájdete aj v texte.

Počítajte aktuálne pozície a potvrdený zatvorený objem, nie okná s hláškami. Close By tu odstránilo dva tickety jednou operáciou; ostatné požiadavky mali vlastné výsledky. Diagnostika chýb pomôže rozlíšiť odmietnutie, ale konečný stav určuje zosúladenie účtu. Chýbajúca odpoveď nie je automaticky potvrdené odmietnutie.

Pri každom tickete zachovajte symbol, smer, východiskový objem, identifikátor požiadavky alebo príkazu, odpoveď, realizácie a zvyšok. Polia DEAL_ORDER a DEAL_POSITION_ID prepájajú realizáciu s príkazom a pozíciou. Jeden príkaz môže mať viac realizácií. Jednotlivý fragment preto neoznačujte ako úplné zatvorenie; zapisujte aj časový základ a dôvod neistoty.

Nový EUR príklad: dva fragmenty nie sú celý objem

Samostatný hypotetický model má jeden nákup 0,20 lotu lineárneho kontraktu. Predpokladáme 10 jednotiek na lot, vstup 90 EUR za jednotku a rovnakú výstupnú aj oceňovaciu cenu 100 EUR. Ide o vymyslený kontrakt, nie špecifikáciu brokera. Bez nákladov a zmeny ceny je otvorený výsledok 20 EUR.

História potvrdí výstup U1 s objemom 0,05 lotu a U2 s 0,08 lotu. Potvrdený súčet je 0,13 lotu, zostáva 0,07 lotu. Realizovaný výsledok je 5+8=13 EUR a otvorený 7 EUR. Spolu je to stále 20 EUR. Ďalší zápis tej istej realizácie U1 nie je ďalším plnením. Zhodný identifikátor skontrolujte proti histórii namiesto zdvojenia objemu.

Jedinečné realizácie a skutočný zvyšokSamostatný hypotetický kontrakt s 10 jednotkami na lot, vstupom 90 EUR a výstupom 100 EUR, bez nákladov. Dva potvrdené výstupy z 0,20 lotu.MODELOVÝ VÝPOČETRealizácia U10,05 lotu · +5 EURRealizácia U20,08 lotu · +8 EURPotvrdené spolu0,13 lotu · +13 EURrealizovanýchStále otvorené0,07 lotu · +7 EURotvorených
Jedinečné realizácie a skutočný zvyšok. Samostatný hypotetický kontrakt s 10 jednotkami na lot, vstupom 90 EUR a výstupom 100 EUR, bez nákladov. Dva potvrdené výstupy z 0,20 lotu.

13+7=20 EUR. Opakovaný záznam U1 nevytvára nový výstup. Rozhoduje jedinečná realizácia a aktuálny zvyšok, nie počet oznámení.

Na malej obrazovke možno diagram posúvať vodorovne alebo zväčšiť. Hodnoty a záver nájdete aj nižšie v texte.

Realizácia U1
0,05 lotu · +5 EUR
Realizácia U2
0,08 lotu · +8 EUR
Potvrdené spolu
0,13 lotu · +13 EUR realizovaných
Stále otvorené
0,07 lotu · +7 EUR otvorených

Ak by ste U1 započítali dvakrát, tabuľka by mylne vykázala 0,18 lotu zatvorených a 0,02 zostávajúcich. Rozdiel 0,05 lotu je chyba evidencie, nie dôkaz ďalšej realizácie. Najprv zosúlaďte jednoznačné identifikátory a aktuálny zvyšok. Príklad nepredpisuje formát správ konkrétneho EA ani netvrdí, že reálny server poslal duplicitu; ukazuje, ako sa vyhnúť dvojitému spracovaniu rovnakého záznamu.

Čo zmení chyba alebo vypnutie aplikácie?

Zvážte inú vetvu pôvodného modelu: Close By A–B skončí chybou ešte pred vykonaním a vieme, že nevznikla žiadna výstupná realizácia. Proces sa zastaví pred bežnými požiadavkami pre C–E. Zostáva všetkých päť pozícií. To je iný výsledok než odmietnutie D po úspešnom páre. Pri skutočnej nejasnej odpovedi však nemožno predpokladať nulové vykonanie bez overenia.

Vypnutie aplikácie ukončí zostávajúci skupinový proces, ale nevráti späť potvrdené realizácie. Ak A–B už zmizli a požiadavky C–E ešte neodišli, zostávajú tri pozície. Pri už odoslaných požiadavkách zistite výsledok na serveri. Reštart nepotvrdzuje prázdny účet a nemá automaticky spustiť novú dávku podľa zapamätaných objemov.

Overte aj nové vstupy EA, inej aplikácie či inej osoby počas operácie. Nový ticket nemusí byť stará pozícia s chybným zatvorením. Porovnajte čas, históriu a pôvodcu. V MQL5 návrat true z OrderSend nepreukazuje vykonanie obchodu; treba vyhodnotiť výsledkové polia a udalosti. Táto poznámka o automatizácii nie je dôvod na skúšobný živý obchod.

Stačí prázdny zoznam pozícií?

Skontrolujte samostatne čakajúce príkazy. MT5 má odlišné operácie na ich odstránenie; zatvorenie pozícií nepotvrdzuje zrušenie každého čakajúceho vstupu. Fiktívny nákupný príkaz P môže pretrvať aj po zatvorení všetkých piatich ticketov a neskôr vytvoriť novú pozíciu. Typy príkazov odlišujú žiadosť o zrušenie od potvrdeného výsledku.

Po synchronizácii načítajte pozície bez filtra skrývajúceho symbol či smer a porovnajte výstupné realizácie s históriou. Prázdny stav označte účtom, rozsahom a časom pozorovania. Jedna snímka nepreukazuje, že EA už nikdy nevytvorí expozíciu. Pri zostávajúcich pozíciách overte prijatý stop loss a súčasné riziko; diagnostika pôvodnej dávky ich ochranu nenahrádza.

Čo si overiť pri ďalšom cvičení?

  1. Zachovajte rozsah. Na deme alebo v modeli zapíšte režim účtu, celý názov funkcie, tickety a objemy pred operáciou. Odmietnutia netestujte na živom účte.
  2. Priraďte potvrdené výsledky. Oddeľte Close By, bežné zatvorenia, fragmenty a nejasné odpovede. Tlačidlo, ktoré zmizlo, nie je dôkaz výstupu.
  3. Skontrolujte oba zoznamy. Po synchronizácii overte pozície aj čakajúce príkazy. Zapíšte zvyšok a čas pozorovania; príkazy odoslané na začiatku nesmú nahradiť konečný stav.