Backtestování v MT 4 (software pro forex)
Dnešní článek pro vás připravil pravidelný přispěvatel komunitního portálu www.financnik.cz – uživatel Jiří Bachmann. Pokud se také vy chcete podělit se svými zkušenostmi, zašlete návrh svého článku či recenze na info@financnik.cz
Nejprve úvodem: Při mých prvních pokusech s testováním v programu MetaTrader 4 (MT4) jsem narážel na mnoho neznámých a popravdě jsem se nikdy nedostal „do cíle“. Při hledání rad zde na Finančníkovi jsem byl odkazován na studium tohoto diskuzního vlákna a anglicky psaných serverů. To má však několik úskalí. Především i pro zkušenější obchodníky je nalezení odpovědí zpětně ve vláknech složité a časově náročné. Pokud člověk s problematikou začíná, zpravidla ani neví na co se zeptat, resp. kde začít. Odkazy na anglické stránky (i když je to smutné) nejsou pro naprostou většinu lidí použitelné, především z ohledu na časovou a jazykovou bariéru.
Protože primárním cílem Finančníka je pomáhat sobě navzájem, teď když už jsem se k cíli prokousal, rád bych to zdokumentoval a zanechal návod i pro ostatní „badatele“. „Znalci“ se možná pousmějí, jak primitivní formu výkladu jsem zvolil, „neznalci“ ji snad ocení.
Úvodem...
V naprosto všech návodech pro začínající obchodníky je jednoduchá (pravdivá) poučka. Začněte na demo platformách, okukujte, zkoušejte, krachujte, založte znova, testujte. Má to samozřejmě logiku, je velký předpoklad, že když se vám něco bude dařit „nanečisto“, půjde vám to i s opravdovými penězi. Naopak – pokud se vám nebude dlouhodobě dařit na Demo platformách, asi „zahučíte“ i naostro.
Protože způsobů obchodování je velké množství, začnete po překonání prvních zkušeností s tradingem toužit po možnosti testovat vaše obchodní strategie dlouhodobě. Jako začátečníka vás určitě napadne otevřít si graf, vrátit se do minulosti a ručně grafy procházet a testovat. Takovýto ruční backtesting je jednoznačně velmi smysluplný, ale velmi časově náročný. Řada obchodníků proto uvítá existenci programů, které proces bakctestingou pomohou zautomatizovat, a tak podstatně zefektivnit. Osobně mě zajímá forex a z nabízených programů mi vyhovuje nejlépe bezplatný program MetaTrader 4. Chcete-li si také vyzkoušet automatický backtesting forexových trhů s touto bezplatnou platformou, zde je stručný návod jak konkrétně na to:
Jak tedy začít
Po počátečních pokusech a zmínkách ve foru, že ne všechny verze MT4 si rozumějí s historickými daty jsem si nainstaloval verzi z http://http://www.fxdd.com/meta_trader.html
Jako historická data jsem použil tato : http://www.alpari-idc.ru/ru/dc/databank
Následující kroky dělejte přesně jak je popsáno!
I zdánlivé drobnosti jsou důležité!
„Neznalci neexperimentujte“ a skutečně postupujte přesně dle návodu.
1. Spusťte program MT4.
2. Zavřete všechny grafy.
3. Smažte všechna data z adresáře, kde je MT4 – viz obr.
4. Stáhněte si data, např. z citovaného http://www.alpari-idc.ru/ru/dc/databank
Zde si pojďme postup ukázat na páru GBP/USD
a potom minutová data (tedy M1)
nyní data stáhněte, uložte a rozbalte na určené místo
5. Otevřete MT a nastavte Tools – Options – Charts – Max bars in history – 99999999999999
6. Naimportujte stažená data.
Zvolte Tools - History center a v našem případě GBP/USD 1M naimportujte již uložená data z Alpari (viz postup v předcházejícím bodě)
Zkontrolujte si, že máte data naimportována správně:
7. Otevřete MT4 File – Open Offline (v našem případě takto)
(všimněte si čísla 673516, je i na předcházejícím obrázku - to jen pro kontrolu, že se „nám nic neztratilo“ )
8. Tady zkušenější radí skript Period Converter, já bych si ho dovolil (prozatím!) vynechat. Článek píši pro začínající obchodníky a myslím, že stačí, když rozchodí testing na minutových hodnotách.(návod na Period Converter je na konci tohoto dokumentu)
9. A máme graf v programu (všimněte si stavu Offline!)
10. Nyní začneme už testovat. Vybral jsem si pro své „pokusy“ tento Expert Advisor - UniversalMACrossEA.mq4, který si můžete stáhnout na této adrese: http://www.financnik.cz/download/UniversalMACrossEA.mq4
11. Vypněte MT a zkopírujte si výše uvedený soubor do adresáře - experts –
Všimněte si zároveň, že v adresáři „experts“ je i soubor se stejným názvem, ale s příponou ex4 (tedy: UniversalMACrossEA.ex4). Tento soubor se „vytvoří sám“. Jedná se o kompilovaný soubor, vytvořený jako strojový zápis původního ExpertAdvisoru. Soubor vznikne automaticky při zapnutí MT4.
(jde to i jinak, ale o tom až jindy).
12. Otevřeme Strategy Tester (CTRL+R) a nastavíme takto:
- v první roletce zvolíme EA UniversalMACrossEA
- ve druhé roletce zvolíme GBPUSD
- Period M1 (máme minutová data)
- volbu „Model“ bych opět pro začátečníky nechal jak je
- Use date – aby test netrval dlouho, navolte si pro minutová data jeden den (třeba podle vzoru)
- zaškrtněte Recalculate (přepočítání dat)
- nezaškrtávejte Optimalization
13. Nastavení Expert Advisoru.
14. Protože jsme začátečníci, zkusíme vše nejprve s jednoduchým testem. Budeme testovat překřížení dvou MA. Dosaďte si do vyznačených řádků hodnoty pro MA (20 a 70)
15. A konečně – START –
16. Pokud jste vše provedli podle tohoto návodu, měl by proběhnout test.
(U mě to trvá asi 3 sekundy a tlačítko Start se na chvíli změní ve Stop)
17. Na jednotlivých záložkách byste měli mít výsledky testu.
18. Pokud se chcete podívat do grafu, zvolte Open chart a do grafu se vám vykreslí značky v místech nákupu a prodeje.
19. Pokud nyní chcete najít optimální nastavení, použijte volbu Optimalization.
20. Již v bodě 14. jsme nastavovali hodnoty pro Rychlý a pomalý MA.
V této tabulce jsou i hodnoty Start, Step a Stop.
Pokud nyní použijeme funkci Optimalizace a zaškrtneme si políčka (dle obrázku), program použije dvě hodnoty MA. Pomalý MA v rozsahu 10-30 (po 5)
Rychlý MA v rozsahu 60-100 (po 5) a přepočítá všechny jejich kombinace.
Můžete zaškrtnout i více voleb, geometrickou řadou ale naroste doba výpočtu.
21. Pokud si nyní necháme zobrazit výsledky a seřadíme je podle Profitu
budeme mít v prvním řádku nejlepší možné nastavení v intervalech, které jsme zadali MA1 v rozmezí 10-30 + MA2 v rozmezí 60-100.
Pokud si překlikneme ne vedlejší záložku, dostaneme následující graf:
Nejtmavší políčko ukazuje nejlepší výsledek – u nás konkrétně MA20+MA70.
Pokud nyní provedeme dvojklik na hodnotě 1759.98 (v našem případě nejlepší hodnota) – dosadí se nám hodnoty použité k této simulaci přímo do EA.
To můžeme zkontrolovat po kliknutí na Expert properties:
kde uvidíte, že hodnoty v rámečku souhlasí s hodnotami v Expert properties.
Nyní klikneme na START a necháme propočítat s dosazenými hodnotami zadané období znovu.
Pokud hledáme optimální nastavení systému, měli bychom věnovat pozornost i sloupcům označeným na obrázku
Drawdown je údaj o tom, jaký nejhorší propad nastal s daným nastavení za dobu testu. V našem příkladu konkrétně za doby testu nastal okamžik, kdy ztráta jednoho z obchodů byla ve výši 170 USD, tedy 1,53% z našeho účtu. Protože moudrý obchodník hlídá risk, má nastavenu hranici rizika na jednotlivé obchody – např. neriskuje víc než 2% svého účtu. Souvisí to se Money Managementem, to by byla ale zase samostatná kapitola. Na Finančníku o tom pojednávají samostatné články i diskuzní vlákna.
Nyní už i začátečníci mají hračku, kde mohou měnit, testovat a zkoumat. Mým cílem bylo „rozpohybovat“ funkci backtestování i těm, kterým to z nějakého důvodu nešlo, jako v počátcích mě. Nedělám si ambice na poučování, pokud je v textu něco nepřesně uvedeno, vysvětleno, nejedná se o úmysl ani nedbalost.
Funkce backtestování má svá omezení a není samospásná. Pro zájemce doporučuji přečíst si vlákno: http://www.financnik.cz/forum/read.php?13,8667,page=1 (finančník – forex – Metatrader4) Je tam tolik rad a „rozumů“, že je všechny do toho dokumentu nelze vložit. Jsem si jistý, že vše na co ještě chcete zeptat tam již zodpovězeno bylo. Sám jsem vlákno četl několikrát.
Dokument je napsán na úrovni mých znalostí a zkušeností s backtestování v 06.06.2006.
Držím palce.
Jiří Bachmann – jiri@bachmann.cz
Nyní ještě k funkci Period Converter.
Pokud chceme testovat např. hodinové grafy, nemáme k dispozici hodinová historická data - máme pouze 1 minutová, nebo denní (viz úvod). MT4 nám umožňuje si data nechat dopočítat skriptem Period Converter.
Otevřeme si okno Navigátor a najdeme Skript period_converter.
Myší označíme period_converter a přatáhneme jej nad graf (offline!)
Původní hodnotu „3“ změníme na „5“ a stiskneme OK.
V okně „Terminal“ je důležité zkontrolovat, že konverze proběhla, o čemž vypovídá označený zápis (writen).
Tím jsme si „vyrobili“ z minutových dat 5 minutová data.
Stejným způsobem si musíme vyrobit 10, 30, a 60 minutová data.
Potom teprve můžeme testovat hodinové grafy a software sám použije nižší datové řady, které jsme dopočítali konverzí.
Finančník.cz