V tomto článku
Po přečtení dokážete…
- Najít poslední uzavřený údaj v přesně vymezeném obyčejném poli CopyBuffer.
- Oddělit handle, vypočtená data, vrácený počet a skutečně platnou hodnotu.
- Usmířit pokyny a jedinečné deals bez nulování expozice při odstranění pokynu.
Vysvětlení pojmů přímo v článku
Backtest: historický test pravidel Obchodní plán Demo účet Drawdown: pokles od předchozího vrcholu Stop-loss: aktivace a plnění Rekotace: requoteExpert Advisor v MQL5 je program MetaTraderu 5 řízený událostmi. Může vyhodnocovat pravidla a při povolení odesílat požadavky k obchodování. Běh programu, práva k odeslání, přijetí požadavku a skutečné plnění jsou odlišné stavy. Připojení EA ke grafu samo neprokazuje obchodní výsledek.
Co je Expert Advisor a co obsahuje soubor
MetaEditor kompiluje zdroj MQ5 do spustitelného EX5. Ten lze distribuovat bez zdrojového kódu; znalost MQL5 sama neodhalí neveřejný algoritmus zakoupeného EX5. EA může předávat povolené obchodní požadavky. Indikátor má jiné události a omezení obchodních funkcí, ale tvrzení „pouze kreslí“ je rovněž příliš úzké: může například počítat a upozorňovat.
Pojem EA existuje také v MT4, kde používá vlastní jazyk a rozhraní. Jiný automat může komunikovat jinou cestou. Porovnejte první návrh algoritmu a konkrétní prostředí, místo předpokladu, že každý bot je totožný program.
Index nula nemusí znamenat poslední uzavřenou svíčku
Počet i pořadí kontrolujte samostatně. Aktuální shift 0 se v této ukázce nekopíruje.
- Index 0;shift 3
- 103 – Starší hodnota; projde>102,5.
- Index 1;shift 2
- 101 – Střed kopírovaného období.
- Index 2;shift 1
- 102 – Poslední uzavřená; neprojde>102,5.
Zdrojový model předpokládá úspěšný CopyBuffer se start_pos=1,count=3 do obyčejného pole bez AS_SERIES. Všechny tři prvky se skutečně zkopírovaly bez chyby. Fyzická paměť začíná nejstarším vybraným prvkem: index 0 drží shift 3 hodnotu 103, index 1 shift 2 hodnotu 101 a index 2 shift 1 hodnotu 102. Poslední uzavřená hodnota je zde 102, současný shift 0 se nekopíroval.
Test hodnoty>102,5 projde pro starší 103, ale ne pro poslední 102. Jde o kontrolu výběru dat, nikoli investiční signál. Zaznamenejte počáteční posun, skutečně vrácený počet i způsob indexování cílového pole. Úplný počet neřeší nesprávné pořadí; index 2 nelze přenášet univerzálně na jiná nastavení.
Události OnInit, OnTick a OnDeinit
OnInit inicializuje zdroje; nejde o příslib jediného zavolání za celý život používání programu. Neúspěšnou potřebnou přípravu vraťte jako selhání inicializace. OnTick zpracovává NewTick připojeného symbolu. Je-li taková událost ve frontě či zpracovávána, další se do fronty nepřidá. EA nemusí OnTick vůbec implementovat.
Vypnuté AutoTrading zakazuje nové obchodní požadavky EA, ale nezastaví jeho výpočty ani nerozpůlí běžící handler. OnDeinit řeší ukončení a důvod, také změny vedoucí k nové inicializaci. OnTimer a OnTradeTransaction mohou být pro úlohu podstatné. Tick připojeného grafu nezaručuje čerstvost ostatních symbolů víceměnového programu.
CTrade, požadavek a evidence skutečné expozice
OrderSend s návratem true sám nepotvrzuje dokončené tržní plnění. Kontrolujte návratový kód a propojte pokyny, deals a pozice. OrderCheck je předběžná kontrola, ne záruka pozdějšího provedení. V původním selhávacím testu požadujete buy 0,10 lotu a ztratíte jistotu o odpovědi. Opakování bez usmíření stavu může dát 0,20 lotu, pokud se vyplní oba požadavky. Chybějící místní potvrzení neznamená, že server nic neprovedl.
OnTradeTransaction odlišuje odstranění pokynu ORDER_DELETE od přidání obchodu DEAL_ADD; pořadí příchozích oznámení není zaručeno. Bez počáteční pozice mají potvrzená nákupní plnění D1=0,04 a D2=0,06 lotu součet 0,10 v obou pořadích. Vadný čítač nulovaný při ORDER_DELETE ale po D1,D2,ORDER_DELETE ukáže 0, zatímco po ORDER_DELETE,D1,D2 ukáže 0,10. Stav pokynu není velikost pozice. Skutečná evidence musí řešit také prodeje, obrátky, opravy historie a režim účtu.
CTrade nabízí například Buy,Sell a PositionClose. Ani úspěšná kontrola volání Buy vždy neznamená úspěšnou obchodní operaci: ověřte ResultRetcode a ResultDeal. Rozdíl skutečné a očekávané ceny řeší skluz.
Nový samostatný CZK kontrolní případ: ve fiktivním EUR/CZK kontraktu 100 000EUR/lot existují pouze dva potvrzené jedinečné buy deals: D1=0,04 a D2=0,06 lotu. Opětovné načtení D1 nesmí vytvořit třetí plnění. Součet jedinečných ID dává 10 000EUR, slepé přičtení D1,D1,D2 dává 14 000EUR. Při přiděleném nepříznivém pohybu 0,05CZK/EUR je cenový scénář 500Kč proti chybně vykázaným 700Kč. Rozdíl 200Kč je chyba evidence, nikoli nový brokerův poplatek. Nevymazávejte přitom skutečné opravy dealu; ty potřebují vlastní verzování a usmíření se serverem.
Tester a oddělená evaluace
MT5 může použít generované či poskytovatelem shromážděné reálné ticky podle režimu a dostupnosti. Nejde o jednu univerzální cenovou historii MetaQuotes. Uchovejte původ, čas, specifikaci a náklady. Výběr parametrů na stejné historii, která pak slouží jako „ověření“, může nadhodnotit důkazy, nikoli matematicky zaručit hladkou křivku nebo živou ztrátu.
Uchovejte všechny pokusy a nedotčené evaluační období; metodika backtestu odděluje tyto úlohy. Správně napsaná nerovnost nad nesprávnou svíčkou stále dává chybný signál.
Kdy automat pomáhá a co neprokazuje
Opakovatelné kontroly, noční provoz, rychlé rozhodování nebo 200 obchodů měsíčně mohou být požadavky návrhu; nejsou dokladem ziskové výhody. Popište vstupy, události a podmínky, kdy se neobchoduje. Zvláštní zprávy vyžadují test a dohled, ale automaticky nezakazují každou automatizaci. Marketplace křivka nebo neidentifikovaný průzkum fóra není spolehlivým odhadem živého výsledku.
Vlastní EA, provoz a obnova po výpadku
Malý projekt může ověřit přesný přepis pravidel. Tři až šest měsíců ani rozhodnutí psát místo koupě nezaručují lepší výsledek. Zvolte rozsah podle funkcí a schopností, nikoli marketingového termínu.
Místní AutoTrading neuzavírá pozice. Serverem přijatý běžný stop může zůstat po zavření terminálu aktivní, zatímco čistě EA výstup potřebuje běžící program a spojení. MetaQuotes Virtual Hosting je samostatné migrované prostředí s povoleným automatickým obchodováním; místní tlačítko tuto instanci nezastavuje. Windows VPS je jiná služba. Prověřte infrastrukturu a latenci bez univerzální měsíční ceny.
Po restartu nejdříve obnovte aktuální expozici a nevyřízené požadavky, ne starý lokální signál. Testujte chybějící data, objemový krok, nejistou odpověď a ruční zásah. V nettingu sdílejí strategie stejnou čistou pozici symbolu; Magic Number nevytváří oddělený kapitál či marži.
Handle existuje: je připravená také hodnota
BarsCalculated vrací počet vypočtených dat, nebo−1 při chybě. Potom ověřte skutečný počet CopyBuffer, správný buffer a posun svíčky. Selhání nenahrazujte nulou: RSI0 je hodnota indikátoru, nikoli označení nepřipravené informace.
Čtyři oddělené kontroly připravenosti
Pravidlo vyhodnoťte až po všech kontrolách; prázdnou hodnotu nenahrazujte smyšlenou nulou.
- Handle a výpočet
- Platné a připravené – Chybějící výpočet není nula RSI.
- CopyBuffer
- Právě 1 prvek – Nulový návrat znamená nepřipravenost.
- Obsah hodnoty
- Platná 45 versus EMPTY_VALUE – EMPTY_VALUE je konečné DBL_MAX; zkontrolujte značku.
Model požaduje jeden údaj. A: neplatný handle znamená žádné čtení. B: handle existuje, ale zkopírováno 0 hodnot, tedy čekat. C: zkopírována 1 hodnota EMPTY_VALUE, stále není použitelný signál. D: zkopírována 1 platná hodnota 45, teprve nyní lze vyhodnotit pravidlo. Číslo 45 je smyšlené, nikoli doporučení.
EMPTY_VALUE odpovídá standardně DBL_MAX, tedy konečnému číslu; samotná kontrola konečnosti nestačí. Vlastní indikátor může určit jinou prázdnou značku. Prověřte jeho kontrakt místo odmítání každé nuly. Při jedné EMPTY_VALUE práh nevyhodnocujte; zapište nedostupná data a zopakujte kontrolu při vhodné další události. API vyžaduje zvlášť čas dostupnosti offline informací a grafové pravidlo má jiná omezení vizuálního testu.
Pět kroků prvního projektu
- Z ověřeného webu poskytovatele připravte MT5 a demo. Prozkoumejte vestavěný Moving Average či MACD Sample na EUR/USD H1 v jednom testu a přečtěte report; příklad není investiční doporučení.
- V dokumentaci najděte OnInit,OnTick a CTrade; nejprve se naučte dohledat význam a příklady.
- Sepište vstupy, vstup a výstup, objem i no-trade podmínky. Označte diskreční rozhodnutí a konkretizujte dostupné vstupy.
- Vymezte malý projekt s přejímacími kontrolami dat, událostí, potvrzení a obnovy. Délka závisí na rozsahu, ne pevném počtu týdnů.
- Prověřte provoz na kontrolovaném demu; ilustrativní měsíc nezaručuje připravenost pro live. Tester může emulovat zpoždění, ale neměří všechny budoucí reálné realizace.
Ověřte si, co jste se naučili
Přibližně 2 minut procvičování.
Zobrazit odpověď a vysvětlení
Fyzicky je nejstarší údaj první. Zde proto poslední index 2 nese poslední uzavřený shift 1.
Další otázky
Čím se MQL5 EA liší od Python bota?
MQL5 používá události a funkce MT5. Python může používat API poskytovatele i integraci MetaQuotes s terminálem, nikoli nutně samostatný REST/FIX mimo něj. Porovnejte závislosti, časování, data, odpovědi pokynů a testování; žádný jazyk univerzálně nezaručuje lepší strategii, machine learning či provedení.
Musím programovat, abych EA spustil?
Dokumentovaný EX5 nemusí vyžadovat vlastní psaní, ale vyžaduje kontrolu vstupů, oprávnění, chování a obnovy. Zdroj umožní revizi; znalost jazyka neodhalí neveřejný EX5 algoritmus. Ověřte pravidla, logy a limity na kontrolovaném účtu bez slibu, že několik týdnů učení stačí.
Proč skvělý tester neodpovídá živému výsledku?
Lišit se mohou parametry, data, spread, náklady, zpoždění i plnění. Výběr nejlepší historie může přehnat důkazy, nikoli matematicky zaručit dobrou simulaci a živé selhání. Zachovejte varianty a oddělenou evaluaci se stejnou smlouvou a časem. Ani úspěšné ověření neprokazuje trvalou budoucí výhodu.
Je nutný VPS?
Podle požadované nepřetržitosti, dat a realizace. VPS může pomoci provozu nebo části síťové cesty, jeho název negarantuje latenci, cenu či plnění. I pomalá strategie může vyžadovat dohled. Windows VPS a MetaQuotes Virtual Hosting jsou různé služby; místní AutoTrading neovládá samostatně migrovanou instanci.
Zdroje a ověření
- MetaQuotes — CopyBuffer a fyzické pořadí
Relevantní API již čteno v tomto auditu: posun od současné svíčky a nejstarší prvek na začátku fyzické paměti. Příklad výslovně nemá AS_SERIES a má úplný návrat 3 prvků; žádný kód nebyl spuštěn.
- MetaQuotes — Událost OnTick a AutoTrading
Čerstvě čten relevantní vysvětlující oddíl 60–76, nikoli audit celého příkladu EA. Fronta NewTick a místní zákaz nových požadavků nejsou uzavření pozic či zastavení všech výpočtů.
- MetaQuotes — Pořadí obchodních transakcí
Čerstvě čteny definice událostí 85–110, rozdíl ORDER_DELETE/DEAL_ADD a nezaručená priorita. Dva příklady evidence jsou vlastní hypotetické testy, ne zachycený klientský incident.
- MetaQuotes — Návrat CTrade Buy
Relevantní poznámka o úspěchu metody a následné kontrole ResultRetcode/ResultDeal čerstvě přečtena. Není z ní odvozena jistota plnění nebo bezpečnost opakování bez usmíření.
- MetaQuotes — Počet vypočtených dat
Čerstvě čten relevantní návrat 79–96: počet a−1 při chybě. Existující handle nezaručuje požadovanou svíčku ani úspěšný CopyBuffer.
- MetaQuotes — EMPTY_VALUE a vlastní prázdná značka
Čerstvě čtena tabulka 54–66: EMPTY_VALUE=DBL_MAX a možnost jiné značky vlastního indikátoru. Kontrola konečnosti sama tuto hodnotu neodmítne; neodmítáme všechny nuly.
- MetaTrader 5 — Samostatná migrovaná instance
Relevantní odlišnost Virtual Hosting a místního AutoTrading již skutečně čtena v tomto auditu. Není to audit konkrétního VPS, cenové nabídky ani garantované dostupnosti.
Výpočty používají výslovně uvedené předpoklady. Nenahrazují aktuální tržní údaje ani podmínky poskytovatele.
