Expert 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

Obyčejné pole: nejstarší kopie prvnístart_pos=1,count=3, bez AS_SERIES, přesně 3 vrácené prvky, fiktivní údaje.MODELOVÝ VÝPOČETIndex 0;shift 3103Index 1;shift 2101Index 2;shift 1102
Obyčejné pole: nejstarší kopie první. start_pos=1,count=3, bez AS_SERIES, přesně 3 vrácené prvky, fiktivní údaje.

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

Existence handle nestačíZdrojový jednoprvkový model: před vyhodnocením se kontrolují čtyři různé vlastnosti.MODELOVÝ VÝPOČETHandle a výpočetPlatné a připravenéCopyBufferPrávě 1 prvekObsah hodnotyPlatná 45 versusEMPTY_VALUE
Existence handle nestačí. Zdrojový jednoprvkový model: před vyhodnocením se kontrolují čtyři různé vlastnosti.

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

  1. 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í.
  2. V dokumentaci najděte OnInit,OnTick a CTrade; nejprve se naučte dohledat význam a příklady.
  3. Sepište vstupy, vstup a výstup, objem i no-trade podmínky. Označte diskreční rozhodnutí a konkretizujte dostupné vstupy.
  4. 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ů.
  5. 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.