V tomto článku
Po prečítaní dokážete…
- Oddeliť nedostupnú funkciu API od chyby sieťovej odpovede.
- Vybrať verziu známu pri rozhodnutí a rozlíšiť null od nuly.
- V novom EUR modeli vysvetliť rozdiel medzi publikáciou, prijatím a realizáciou.
Vysvetlenie pojmov priamo v článku
Backtest: skúška pravidiel na historických údajoch Expert Advisor (EA) Ekonomický kalendárEA môže na deme sťahovať údaje API a v testeri dostať úplne iné podmienky. Nemusí to byť výpadok servera. Najprv overte dostupnosť funkcie, až potom archív. Dnešnú hodnotu nepodsúvajte minulým rozhodnutiam. Náš model prehráva explicitné verzie, odlišuje revíziu od nedostupnosti a nepripája sa k externému API.
Prečo fungujúci WebRequest nestačí na backtest?
MQL5 dokumentácia uvádza, že WebRequest sa nedá vykonať v Strategy Tester. Povolenie adresy v zozname URL toto obmedzenie nezmení. Rozlišujte nepodporovanú funkciu prostredia, sieťový problém, chybu oprávnenia a skutočnú odpoveď pri bežnej prevádzke EA. Chybový stav neznamená, že hospodárska veličina má hodnotu nula.
Ak pravidlo potrebuje externý údaj, neúspešnú požiadavku nenahrádzajte nulou: tá môže byť platnou hodnotou. Samotné nahradenie HTTP súborom nestačí, ak obsahuje revízie vtedy neznáme. Pred pripojením signálu určte pozorovanie, verziu, hodnotu a čas dostupnosti. Základy EA oddeľujú dáta, rozhodnutia a realizáciu. Iný adaptér nesmie potichu zmeniť význam vstupu alebo postup pri chýbaní.
Ako oddeliť online a offline adaptér?
Online časť spracuje odpoveď poskytovateľa. Testovacia časť vyberie zachovaný záznam dostupný pri rozhodnutí. Obe vrátia rovnaký typ výsledku: platnú hodnotu, výslovnú nedostupnosť alebo chybu. Je to návrh organizácie kódu, nie úplný robot ani záruka kompatibility s každým API.
Surové odpovede uchovávajte oddelene od pripravených záznamov. Zaznamenajte zdroj, verziu schémy, čas získania a dôkaz dostupnosti. Obdobie, ku ktorému sa údaj vzťahuje, nie je čas jeho zistenia. Ak poznáte iba dátum verzie, nevymýšľajte hodinu zverejnenia. Denný archív sám nepreukazuje dostupnosť vnútri dňa.
FRED real-time periods rozlišujú dnešné poznanie minulosti od informácií známych v minulom období. Ide o príklad verziovania, nie univerzálne forexové API. Dátum vintage automaticky nedáva presný UTC okamih publikácie; pri intradennom vstupe overte chronológiu konkrétneho poskytovateľa.
FileOpen v MQL5 používa vyhradený súborový priestor, pri teste priečinok agenta. Relatívna cesta nemusí smerovať do bežného terminálového priečinka. Skontrolujte otvorenie aj úplnosť čítania; zlyhanie vráti INVALID_HANDLE. Neprítomnosť súboru nie je kompletná prázdna história. Zdieľaný priečinok cez FILE_COMMON potrebuje vlastný návrh súbehu.
Ktorú verziu smie použiť skoršie rozhodnutie?
Vlastná história troch odpovedí
Vymyslené pozorovanie GDP-model patrí modelu 1. októbra 2026; nejde o skutočné HDP alebo odpovede endpointu. Všetky časy sú UTC. availableAt určuje prístup modelu k záznamu, nie realizáciu pokynu.
Na malej obrazovke posúvajte tabuľku vodorovne, aby ste prečítali všetky stĺpce.
| availableAt | revision | value |
|---|---|---|
| 2026-10-01T12:00:00Z | initial | "1.0" |
| 2026-10-01T13:00:00Z | revised | "1.4" |
| 2026-10-01T14:00:00Z | unavailable | null |
O 12:30 je posledná oprávnená hodnota 1.0. O 13:30 je to 1.4. O 14:30 vyhrá najnovší dostupný záznam s null: výsledok je nedostupný. Náš model sa nevráti k starému 1.4 ani chýbanie nezmení na nulu. Technické reťazce a desatinné bodky sú zámerne presné.
Verzia dostupná vtedy, nie dnes
Na malej obrazovke posúvajte diagram vodorovne alebo ho zväčšite. Vysvetlenie nájdete aj v texte.
Pravidlo vyžadujúce hodnotu nad 1,2 o 12:30 neplatí. Dosadenie neskoršieho 1.4 rozhodnutie obráti aj pri rovnakých cenách. Ide o dostupnosť informácie, nie výhodnosť stratégie. Nástroj iba vyberá záznam, nepočíta signál ani výnos.
Ak má stratégia pri chýbaní ponechať poslednú známu hodnotu, je to osobitná politika. Vopred určte prípustný vek a dôvod náhrady. Explicitné null v našom variante ju nerobí. Nepridávajte ju po zistení krajšieho výsledku s tvrdením, že test zostal nezmenený.
Nový EUR model: zverejnenie ešte nie je prijatie vaším programom
Oddelený hypotetický príklad latency-model dňa 2. októbra 2026 má hodnotu "1.4". Poskytovateľský čas publikácie je 12:00:00Z, no pridelený log potvrdzuje prijatie programom až 12:00:07Z. Toto nie je zmeraná rýchlosť API. Pravidlo kontrolujeme o 12:00:05Z a 12:00:08Z; musí poznať platnú hodnotu nad 1,2. O piatej sekunde ju ešte nemá, o ôsmej už áno. Pri modeli poznania konkrétneho programu preto použite dôkaz prijatia, nie automaticky skorší čas vydavateľa.
Čas prístupu zvoľte pre skúmané poznanie a podložte záznamom. Správny lokálny výber nevie opraviť nesprávne deklarovaný čas; nič tu nie je meraním rýchlosti API.
Na malej obrazovke možno diagram posúvať vodorovne alebo zväčšiť. Hodnoty a záver nájdete aj nižšie v texte.
- Rozhodnutie 12:00:05Z
- Hodnota pre program ešte chýba – Neodosielať modelový vstup; skorší publikačný čas nedokazuje prijatie.
- Príjem 12:00:07Z; rozhodnutie 12:00:08Z
- Hodnota 1.4 spĺňa >1,2 – Podmienka je známa až po príjme. Presný okamih príjmu je dostupný vrátane hranice.
- Vymyslený skorý vstup
- −11 EUR; konečných 4 989 EUR – Ask 1,1000 by použil vedomosť, ktorú program vtedy nemal.
- Povolený neskorší vstup v modeli
- −20 EUR; konečných 4 980 EUR – Ask 1,1010; rozdiel 9 EUR oproti skorému protipríkladu nie je zmena indikátora.
Len na vyčíslenie následku pridelíme účet 5 000 EUR, jeden long 10 000 EUR a úplnú vstupnú Ask cenu o piatej sekunde 1,1000, o ôsmej 1,1010. Neskorší úplný výstup má Bid 1,0990. Cenový P/L konvertujeme pevne 0,90 EUR/USD; jediný poplatok je 2 EUR za celý obchod.
Neoprávnený skorý vstup, ktorý si vymyslel vedomosť o piatej sekunde, by mal −10 USD × 0,90 − 2 = −11 EUR a modelový zostatok 4 989 EUR. Pri povolenom rozhodnutí o ôsmej sekunde má neskorší vstup −20 USD × 0,90 − 2 = −20 EUR, konečných 4 980 EUR. Rozdiel 9 EUR nevyrobila zmena hodnoty indikátora, ale skorší neprípustný vstup pri inej cene. O piatej sekunde správne pravidlo ešte neposiela pokyn.
Predpokladáme presné úplné plnenia, dostatočnú maržu, žiadnu skoršiu likvidáciu, iné pozície, toky, financovanie, ďalšie náklady alebo konverzný spread. Spread je už v realizačných cenách. Porovnávame dve alternatívy, nesčítavame ich na jednom účte. Sedemsekundové prijatie ani uvedené ceny nie sú merania; ide o protipríklad k zámene publikačného a dostupného času. Pôvodný nástroj nemá osobitné pole času prijatia: vhodné availableAt musíte zdokumentovať pri príprave vstupu. Samotné správne prehratie mu pôvod dát nedokáže.
Čo skontrolujete v lokálnom prehrávači?
Vložte JSON objekt s číselnou version: 1 a poľom events. Každá udalosť má presne availableAt, observation, value, revision. availableAt je YYYY-MM-DDTHH:mm:ssZ bez zlomkov sekundy alebo iných posunov. observation a revision sú reťazce; value je číselný text s desatinnou bodkou alebo null, bez prevodu na Number. Povolených je 1–200 udalostí a 64 KiB; observation a value do 128 znakov, revision do 64. JSON má navyše limit osem úrovní a 2 000 hodnôt.
Prehrať informácie dostupné v okamihu rozhodnutia
Náš výučbový príklad beží lokálne vo vašom prehliadači: nepripája sa k účtu ani API, neposiela zadané údaje ani ich trvalo neukladá. Nezadávajte heslá ani osobné údaje.
decisionAt vložte osobitne v rovnakom UTC formáte. Vyberie sa najnovšia verzia konkrétneho pozorovania s availableAt najviac rovným rozhodnutiu. Pred prvou udalosťou hodnota chýba; presná hranica dostupnosti je zahrnutá. Dva záznamy rovnakého observation a availableAt sú nejednoznačné a zastavia analýzu. Nerozhoduje poradie vloženia ani číselná predstava o označení revision.
Príklad beží iba na vložených lokálnych udalostiach bez sťahovania publikácií alebo API prihlasovania. Platný JSON nie je dôkaz pravého archívu. Vymyslené dátumy alebo spätné priradenie revízií pôvodnému času reprodukujú nesprávne predpoklady aj pri bezchybnom výbere. Pri skutočnej štúdii zachovajte doklady pôvodu.
Testovací agent má vlastný priestor súborov a prostredie. Paralelné behy nech čítajú pevnú snímku; neprepisujte ju čerstvou odpoveďou počas skúmania. Do manifestu behu uložte skutočný zachovaný súbor, nie iba endpoint. Backtest v Pythone vysvetľuje časové spájanie a Ekonomický kalendár revízie. Prehratie dát neprehráva automaticky realizáciu: Bid/Ask, náklady, objem a serverové stavy sú iné vrstvy.
Čo overiť pred posúdením výsledkov EA?
- Spíšte dátový kontrakt a oddeľte online a offline adaptér. Uchovajte surové odpovede, definície a dôkazy dostupnosti. Chýbajúcu históriu verzií pomenujte ako obmedzenie; dnešný endpoint nie je minulý archív.
- Prejdite model pred prvým údajom, medzi vydaním a revíziou a po explicitnom chýbaní. Overte presnú hranicu a konfliktné časy. Publikačný dátum nezamieňajte s príjmom konkrétnym programom.
- Overte načítanie správneho súboru a rozpoznanie chýbania. Verziu dát uchovajte s reportom. Najprv vysvetlite rozdiely vo vybraných vstupoch bez obchodovania, potom overte signál, realizáciu a náklady. Správne dáta nezaručia budúcu ziskovosť.
Overte si, čo ste sa naučili
Cvičenie: približne 3 minúty.
Zobraziť odpoveď a vysvetlenie
Záznam o 12:00 je oprávnený. Neskoršia revízia nemení poznanie skoršieho rozhodnutia.
Ďalšie otázky
Umožní povolenie URL WebRequest v testeri?
Nie. Nezmení obmedzenie MetaQuotes: WebRequest nemožno vykonať v Strategy Tester. Povolené URL patria k vhodnému použitiu mimo tohto testu. Určte prostredie a chybu. Historický adaptér má prehrávať zachované verzie s podloženou dostupnosťou, nie aktuálnu odpoveď endpointu. Fungujúci demo prenos nepotvrdzuje správny offline test alebo zhodné podmienky.
Stačí dnešná tabuľka historických údajov?
Nie vždy. Obdobie pozorovania a čas dostupnosti verzie sú odlišné. Dnešná tabuľka môže obsahovať revízie neznáme skoršiemu rozhodnutiu. Overte pôvod, metodiku archívu a presnosť času. Pri samotnom vintage dátume nevymýšľajte UTC hodinu. Prehrávač nedokáže odhaliť, že ste neskoršej revízii nesprávne pridelili skorší čas.
Znamená null nulu alebo poslednú hodnotu?
V našom modeli znamená explicitnú nedostupnosť. Po udalosti o 14:00 zostáva o 14:30 nedostupný vstup aj napriek staršiemu 1.4. Žiadna nula ani automatický návrat. Ponechanie starej hodnoty potrebuje osobitnú politiku s vekom a dôvodom chýbania definovanú pred výsledkami. Nástroj nevyberá najlepší postup pre každé API alebo stratégiu.
Potvrdí správne prehratie celý backtest?
Potvrdí len výber verzie podľa dodaných časov a záznamov. Osobitne overte pôvod dát, parsovanie, signál a chýbajúce vstupy. Realizačné ceny, náklady, objemy a stav pozície sú ďalšie vrstvy. Uchovajte verziu dát a report aj log vybraných vstupov. Správny výber vysvetlí časť rozdielov, nepreukáže reálnu realizáciu všetkých obchodov alebo budúcu výhodu.
Zdroje a overenie
- MetaQuotes: WebRequest
Funkciu nemožno vykonať v Strategy Tester; povolenie URL neruší obmedzenie. Chyba volania nie je číselná hodnota ekonomického pozorovania.
- MetaQuotes: FileOpen
Súborový priestor terminálu a testovacieho agenta, FILE_COMMON a INVALID_HANDLE pri zlyhaní. Žiadne skutočné MQL otvorenie súboru sa tu netvrdí.
- Federal Reserve Bank of St. Louis: Real-Time Periods
Dnešné a minulému času známe verzie, dátumové real-time intervaly. Nie presný intradenný čas publikácie každého údaja alebo univerzálne FX API.
- MetaQuotes: prostredie testovacích agentov
Oddelené agentové prostredia a súbory; spoločný priečinok vyžaduje návrh. Nevyvodzuje sa univerzálna unikátnosť hashov alebo realizmus každého režimu.
Výpočty používajú výslovne uvedené predpoklady. Nenahrádzajú aktuálne trhové údaje ani podmienky poskytovateľa.
