Pokud automat funguje jen ve vizuálním testu MT5, zjistěte, zda rozhoduje podle údajů, nebo podle něčeho nakresleného. Objekt grafu nemá bez výslovného návrhu zastupovat signální hodnotu. Před změnou strategie porovnejte režimy, verze, data a první rozdíl v záznamu. Níže běží vlastní model, nikoli MT5; neodesílá obchod a chybějící údaj nepovažuje za nulovou cenu.

Co se ve vizuálním režimu skutečně liší

Dokumentace MQL5 uvádí, že mimo vizuální testování se grafické objekty nevykreslují a dotazy na vlastnosti vytvořeného objektu dostávají nulové hodnoty. Omezení se nevztahuje na vizuální režim. Jde o dokumentované chování, nikoli náš experiment s vaším automatem nebo důkaz jediné příčiny každé neshody.

Čte-li EA cenu čáry či stav tlačítka, evidujte tento krok odděleně od cenových dat nebo indikátoru. Ověřte, zda hodnota v daném prostředí vůbec existuje. Stav nedostupnosti může zastavit diagnózu před výpočtem, místo aby technickou nulu přijal jako cenu. Viditelný graf nepotvrzuje připravenost všech vstupů. Expert Advisor může mít závislost i na rozhraní, které obchodník při ručním sledování přehlédne.

Oddělte číselný signál a objekt grafu

Vlastní neobchodní simulace deklaruje kladný signál 1.1050 a práh 1.1040. Podmínka je signál větší než práh. Porovnáváme explicitní číslo s nedostupným čtením objektu. Nejde o kotace MT5, záznamy realizace ani pozorované chování konkrétního EA; stavy jsme zvolili pro vysvětlení toku údajů.

Nedostupný vstup není nulová cena

Číslo je dostupné, objekt může chybětVlastní neobchodní model s prahem 1.1040. Nedostupnost explicitně označujeme null, nikoli návratovým typem funkce platformy.MODELOVÝ VÝPOČETČíselná cesta1.1050 > 1.1040Nedostupný objektnull → nehodnotitChybná náhrada nulou0 > 1.1040 → nepravda
Číslo je dostupné, objekt může chybět. Vlastní neobchodní model s prahem 1.1040. Nedostupnost explicitně označujeme null, nikoli návratovým typem funkce platformy.

Kontrolujte číslo i dostupnost odděleně. Pravda v modelu není příkaz ani důkaz připravenosti skutečného EA.

Číselná cesta
1.1050 > 1.1040 – Pravda v deklarovaném modelu.
Nedostupný objekt
null → nehodnotit – Žádná vstupní hodnota.
Chybná náhrada nulou
0 > 1.1040 → nepravda – Absence se ztratila jako běžný výsledek.

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

Stejný práh, tři cesty vstupu
CestaVstupVýsledek modelu
Explicitní číslo1.10501.1050 > 1.1040: pravda.
Nedostupný objektnullPodmínku nehodnotíme.
Chybná náhrada00 > 1.1040: zdánlivě běžná nepravda.

Poslední řádek je úmyslně chybná varianta, nikoli oprava. Při opačné podmínce signál pod prahem by vložená nula dokonce vypadala jako splnění pravidla. Null reprezentuje nedostupnost v našem modelu; netvrdíme, že funkce MT5 pro objekt vrací null. Stav dostupnosti a samotné číslo odpovídají na dvě různé otázky.

Číselná data nesmějí záviset na kreslení

Náš studijní příklad běží místně v prohlížeči: nepřipojuje se k účtu ani API, neodesílá vstupy a trvale je neukládá. Nezadávejte hesla ani osobní údaje.

Jde o simulaci našeho pravidla, nikoli o test EA v MT5. Použijte kladná čísla v rozsahu 10⁻⁸–10⁸ s nejvýše 15 číslicemi; lidský vstup přijímá čárku nebo jednoznačnou tečku. Schéma JSON používá tečku. Chybějící objektová data jsou v modelu null; samostatná chybná varianta je nahrazuje nulou. Nástroj neurčuje příčinu selhání vašeho EA.

Místní nástroj přijímá dva kladné konečné vstupy v rozsahu 10⁻⁸–10⁸ a nejvýše 15 číslic. Porovná explicitní hodnotu, zatímco nedostupná cesta zůstane bez výsledku podmínky. Vizualizovaná cesta má podle deklarovaného modelu číslo, nevizuální objekt je nedostupný. Ukázka se nepřipojuje k účtu nebo API, neodesílá vstupy a neukládá je trvale. Nevkládejte přihlašovací údaje. Nečte skutečný graf, nespouští tester a nevytváří investiční signál.

Nový samostatný CZK příklad: sledujme fiktivní číselný vstup EUR/CZK 25.12 proti prahu 25.10. Dostupné číslo podmínku větší splní a rozdíl činí 0.02 Kč na EUR, tedy 200 Kč pro referenčních 10 000 EUR. To je měřítko rozdílu vstupů, nikoli výnos nebo dosažitelná obchodní cena. Čára bez platného čtení takovou hodnotu nemá; nesmí vytvářet hypotetických nula korun.

Změňte jen signál na 25.10. Přísná podmínka větší je nyní nepravdivá, ale stav dostupnosti čísla se nezměnil. Nedostupný objekt zůstane nevyhodnocený v obou případech. Tak rozlišíte nepravdu od neschopnosti rozhodnout; porovnání konečného peněžního výsledku tento rozdíl zakrývá.

Jak zaznamenat režim bez obchodování

Příznaky MQL_TESTER, MQL_VISUAL_MODE a MQL_OPTIMIZATION popisují prostředí programu; TERMINAL_BUILD identifikuje sestavení terminálu. Uchovejte skutečné hodnoty, ne odhad z vzhledu okna. Samy ještě nepotvrzují shodná data a parametry. Následující samostatná diagnostická ukázka má záznam v OnInit a prázdný OnTick. Neposílá ani nemění pokyny.

#property strict
int OnInit()
{
   PrintFormat("tester=%d visual=%d optimization=%d build=%d symbol=%s period=%d",
      (int)MQLInfoInteger(MQL_TESTER),
      (int)MQLInfoInteger(MQL_VISUAL_MODE),
      (int)MQLInfoInteger(MQL_OPTIMIZATION),
      (int)TerminalInfoInteger(TERMINAL_BUILD),
      _Symbol, (int)_Period);
   return INIT_SUCCEEDED;
}
void OnTick() {}

Doslovný zdrojový kód zde nebyl kompilován ani spuštěn. Uložte jej jako samostatný MQ5 soubor, zkompilujte v MetaEditoru a porovnejte vlastní skutečné logy. Nevkládejte druhý OnInit do existujícího programu a nenahrazujte jeho inicializaci bez zachování toku. Dokumentace testeru popisuje výjimku pro PrintFormat uvnitř OnInit při optimalizaci; nepřítomnost výpisu z jiné fáze sama nedokazuje, že fáze neproběhla.

Hledejte první odlišný vstup, nikoli vyšší zisk

Založte párový záznam: režim, verze terminálu a kódu, parametry, symbol, timeframe, model generování ticků, požadovaný a skutečný začátek, kopie dat, náklady a počáteční stav. Uchovejte nastavení i identifikátory verzí. Porovnání dvou běhů pomůže najít odlišná prohlášení; stejný soubor EA nezaručuje všechny ostatní podmínky.

Najděte nejstarší krok s rozdílem: úspěch načtení, čas vstupu, připravenost indikátoru, signál, podmínku či rozhodnutí. Poznámka zisk 120 místo 80 neurčuje příčinu. Uchovejte původní logy a vedle nich malou porovnávací tabulku. Zpětně nevymýšlejte hodnoty, které program neukládal. Vhodné ID pozorování a pořadí událostí umožní porovnávat stejné kroky, ne podobně vypadající ceny.

Jak upravit návrh signálu

Výpočet má vracet explicitní hodnotu se stavem dostupnosti; grafická vrstva ji může zobrazovat. Vypnutí kreslení pak nemusí úmyslně měnit zdroj signálu. Zkontrolujte stejný modul na známých vstupech včetně nedostupnosti a rovnosti prahu. Odstranění této závislosti neřeší automaticky data, verze, náklady a všechny další části programu.

Bez zdrojového kódu pošlete autorovi párový záznam a první doloženou neshodu. Nenahrazujte diagnózu živými pokusnými obchody. Příprava testování MT4 a MT5 pokrývá zbytek prostředí. Přesný model příčiny vyžaduje skutečné důkazy, nikoli pouze zlepšení výnosové křivky.

Tři konkrétní kontroly

  1. Uchovejte párové nastavení, verze, rozsah a data jednoho vizuálního a nevizuálního běhu; neověřená pole přiznejte.
  2. V místním modelu vyzkoušejte 1.1050 proti 1.1040 i rovné hodnoty. Nedostupný objekt má zůstat null bez ohledu na výsledek číselné větve.
  3. V oddělené diagnostice shromážděte neobchodní záznamy a přiřaďte jim ID. Pojmenujte první změněný vstup nebo podmínku, než přepíšete strategii.