Tester strategií

Máme-li jednou naprogramovaný obchodní systém nebo alespoň jeho základ, jistě bude vhodné jej otestovat na historických datech. Díky tomu zavčasu zjistíme, zda vůbec má smysl jeho další vývoj, ale také odhalíme případné programátorské chyby, které neodhalil kompilátor. Pokud je vše v pořádku, bude dobré také optimalizovat parametry obchodního systému, abychom zjistili nejvhodnější kombinaci parametrů a tím vytěžili maximum z jeho potenciálu. V těchto úkolech vám pomůže poslední díl této série o programování v jazyce MQL, který již nebude přímo o programování, ale logicky k této sérii patří.

Testování

Modul pro testování automatických obchodních systémů, ale také indikátorů na historických datech najdeme v terminálu pod názvem Tester strategií s ikonou tester ikona. Po kliknutí na ní se pod grafy otevře následující okno:

Tester

V největším rozevíracím seznamu vybereme obchodní systém, který chceme testovat. Dále je potřeba zadat testovaný instrument, timeframe testovaného grafu a model neboli přesnost. Pokud nebude pro zadaný datum dostupný příslušný timeframe, tester vezme první vyšší. Čím přesnější model vybereme, tím déle bude test trvat, ale tím spolehlivější výsledky obdržíme. Dále můžeme nastavit datum, od kterého, případně do kterého bude systém podroben testu. Pokud checkbox Použít datum odškrtneme, použije se veškerá dostupná historie. Můžeme si také zvolit konkrétní výši spreadu, pokud nechceme použít aktuální spread instrumentu. Checkbox vizuální zobrazování použijeme v případě, že test chceme vidět přímo v grafu, šoupátkem potom nastavíme rychlost zobrazování. Checkbox Optimalizace rozebereme později, při běžném testu ho nezaškrtáváme.

V pravé části testeru se nachází několik tlačítek. To nejdůležitější, Vlastnosti strategie…,  je hned nahoře. Odkáže nás na okno, kde vybíráme tak důležité parametry testu jako počáteční kapitál, měnu a parametry obchodního systému, což jsou hodnoty externích proměnných, které zadává uživatel. Na ostatní nastavení se podíváme za okamžik. Smysl zbývajících tlačítek by měl být zřejmý.

Jakmile máme vše potřebné nastaveno, test odklepneme tlačítkem Začátek. Jako příklad otestujeme úspěšnost ukázkového obchodního systému MACD Sample, který byste měli nalézt i ve svém Metatraderu. Kód tohoto obchodního systému jsme rozebírali v předminulém díle. Podívejme se, jak se mu dařilo v roce 2015 na německém indexu DAX, a to nejpřesnějším možným způsobem. Počáteční kapitál ponecháme 10 000 USD. Parametr TakeProfit nastavíme na 1000 (100 bodů), TrailingStop na 500, ostatní parametry ponecháme ve výchozím nastavení.

Test parametry

Rychlost testu závisí na zvolené přesnosti a na výpočetním výkonu počítače. V tomto smyslu je škoda, že Metatrader 4 dokáže využívat pouze jedno jádro procesoru počítače. Po dokončení se ozve legrační výchozí zvuk a v modulu přibydou tři nové záložky.

Výsledky –  Zde se objeví výpis všech příkazů tak, jak by je strategie postupně generovala – otevření pozice, modifikace i uzavření s různými podrobnostmi.

Tester výsledky

Graf – V této záložce uvidíme vývoj kapitálu účtu reprezentovaný modrou křivkou (česky pojmenováno jako zůstatek). V případě, že obchodní systém generuje vysoké otevřené zisky/ztráty, může být zřetelná také zelená křivka, která započítává právě otevřený stav účtu (majetek). Náš systém s danými parametry v počátku daného období víceméně stagnoval, potom začal ztrácet.

Tester graf

Přehled je nejdůležitější část vyhodnocení, na které vidíme všechny hlavní parametry testu, které můžeme dále analyzovat.

tester přehled

Optimalizace

Bylo by zdlouhavé dělat desítky testů s různými parametry, abychom zjistili, které parametry jsou pro daný systém a instrument nejvhodnější. Metatrader to udělá naštěstí za nás, my mu musíme jen říct, které parametry chceme optimalizovat, jaké budou jejich hraniční hodnoty a jak veliké budou kroky, po kterých se budou parametry měnit. Terminál pak provede sérii testů a zobrazí výsledky, ze kterých vyplyne, jaké výsledky vykazuje ta která kombinace parametrů. Samozřejmě bychom neměli systémy optimalizovat pouze podle zisku, ale spíše podle risk faktorů jako maximální drawdown apod. To je ale součástí jiného povídání o tradingu.

Dejme tomu, že chceme zjistit vhodné nastavení profit targetu a stop lossu pro obchodní systém MACD Sample na DAXu za minulý rok. Nastavení zůstane stejné, jaké jsme použili při běžném testu, tentokrát ale zaškrtneme checkbox Optimalizace. Parametry optimalizace nastavíme ve Vlastnostech strategie. V záložce testování nastavíme optimalizovaný parametr. Ve výchozím nastavení je to Balance, tester tedy bude hledat kombinaci parametrů, která by přinesla nejvyšší zisk. My, protože jsme rizikově averzní, budeme optimalizovat drawdown účtu, nastavíme tedy Maximal Drawdown.

tester otimalizace 1

Na záložce Vložit parametry si tentokrát všimneme dalších sloupců, které nás při prostém testu nezajímaly. Zaškrtneme parametry, které chceme optimalizovat, v našem případě tedy TakeProfit a TrailingStop. Sloupec Hodnota nyní nehraje u optimalizovaných parametrů roli, důležité jsou další tři. V nich je potřeba nastavit nejnižší a nejvyšší testovanou hodnotu a po jak velkých krocích má tester postupovat. Čím menší bude krok, tím více kombinací bude tester provádět a tím déle bude celý proces trvat.

Řekněme, že budeme chtít najít vhodnou kombinaci našich dvou parametrů, přičemž budeme chtít prověřit stoplosy 500,1000,1500 a 2000 a Profit targety od 1000 do 5000 po 500. V případě stoplossu se jedná o 4 hodnoty, u targetu o 9 hodnot. Celkem by tedy tester měl porovnat výsledky 4*9 = 36 kombinací. Tabulka parametrů bude ve správném nastavení vypadat následovně:

tester parametry

Na poslední záložce Optimalizace potom lze nastavit limity některých parametrů účtu.

Jakmile máme vše potřebné nastaveno, klikneme na Začátek.

Optimalizace pochopitelně trvá mnohem déle než samotný test. V našem případě provádí tester 36 testů za sebou a porovnává výsledky. V případě rozsáhlých optimalizací na podrobných datech se může protáhnout i na mnoho hodin.

Po dokončení optimalizace přibydou další dvě záložky – Výsledek optimalizace a Graf optimalizace.

Výsledek optimalizace – Zde vidíme tabulku s informacemi o výsledcích testů jednotlivých kombinací. Jsou seřazeny podle parametru, který jsme chtěli optimalizovat, a to od nejlepšího výsledku po nejhorší.

optimalizace výsledek

Graf optimalizace – zde uvidíme grafický výsledek optimalizace. Ten se může značně lišit podle toho, kolik parametrů optimalizujeme. Z našeho testu obržíme graf, na jehož vodorovné ose vidíme pořadové číslo testu a na svislé maximální drawdown, tedy optimalizovaný parametr. Po najetí kurzorem na modrou kuličku se dozvíme, kterým parametrům daný výsledek odpovídá.

optimalizace graf

Jak s výsledky testů a optimalizací naložit, to už je úkol pro vás a pro jiné články a série. Já věřím, že tato série vám poskytla srozumitelný základ pro tvorbu, testování a vylepšování rozličných obchodních systémů, indikátorů a jiných šikovných prográmků v Metatraderu, které vám pomohou dosáhnout vašeho obchodního potenciálu. Pokud najdete obchodní systém, který bude splňovat risk parametry projektu Získejúčet.cz, neváhejte přijmout naši Výzvu, neboť i šikovné vývojáře automatických systémů rádi prostřednictvím našeho projektu podpoříme.