A Forex robotokat érintve kikerülhetetlen egy témakör. Vagyis ha már dolgoztál robotokkal, akkor biztosan találkoztál a visszatesztelés fogalmával. Érthető módon nem mindegy, hogy hogyan teljesített (volna) az adott expert advisor a múltban. Habár a múltbéli adatok alapján nincsen garancia a jövőre nézve, a teszteredményekből már többé-kevésbé következtetni lehet arra, hogy a jövőben hogyan fog viselkedni a robot.
A robotok automatizáltan végzik a dolgukat élő internetkapcsolat esetén. Ha az adott kritériumoknak megfelelően mozog az árfolyam és/vagy jelez(nek) az indikátor(ok), akkor a robot cselekedni fog. A robot folyamatos működéséhez érdemes például egy VPS szerveren futtatni a MetaTrader 4 programot, benne a robotunkkal. Ez megbízhatóbb közeget biztosít az otthoni futtatással szemben.
Igen ám, de mielőtt a robot éles számlán való futtatásába belekezdenénk, tudnunk kellene, hogy mire számíthatunk. Hogyan teszteljük tehát a robotot, mit érdemes szem előtt tartani? Tanulságos sorok következnek.
A visszatesztelés
Visszatesztelésnek (vagy angolmagyar nyelven backtesztelésnek) hívjuk azt a folyamatot, amikor az adott forex robot működését múltbéli adatokon szemléltetjük és vizsgáljuk. Mindenki ismeri a mondást, hogy „A múltbéli teljesítmény nem garancia a jövőbeli eredményekre.” Rendben, de azért nem ártana legalább halvány fogalmat kapni a dolgok állásáról.
Gyakorlati visszateszteléssel foglalkozó útmutatómban az MT4 „sima” historikus adatai alapján történő teszteléstől mindenkit óva intek, mivel a MetaQuotes szerveréről letöltött adatok minősége kívánni valót hagy maga után, a „Minden tick” módszert meg azért nem célszerű még csak megpróbálni sem, mert ezen nagyon nyers adatok valójában nem is tartalmazzák a tickeket, csak az M1-es gyertyaadatokat – azokat is úgy, ahogy.
Mi akkor a megoldás? Hogyan tudnánk mégis pontosabban visszatesztelni?
A pontosabb visszatesztelés
Az MT4 gyenge minőségű és sokszor elérhetetlen múltbéli adataihoz képest a jó minőségű tick adatok beszerzésére több lehetőséged is van, például a Tick Data Suite vagy a Tickstory szoftverek is a segítségedre lehetnek ehhez.
A Tickstory szoftverrel kicsit macerás bánni, de mindenképp sokkal pontosabb eredmény kapunk. Korlátozás elsősorban a profi funkciók, és az egyhuzamban tesztelhető időszakok hosszában van. Sajnos azonban nem lehet benne a változó spreadeket modellezni, és a jutalékot sem tudjuk kényelmesen beállítani, de nem tudja kezelni például a piaci csúszást sem. Körülményes, hogy az adott MT4-et mindig a Tickstoryval kell indítani, hogy a stratégiai teszter tényleg tick adatokkal dolgozhasson.
A Tick Data Suite átfogó megoldást nyújt mind az adatok beszerzéséhez (a Dukascopy cégén felül több adatforrásból), mind pedig azok kényelmes használatához, és értékes plusz funkciókat ad a visszateszteléshez annak érdekében, hogy elkerülhesd a kellemetlenségeket, amelyeket a múltbéli időszakokban egyébként jó eredménnyel muzsikáló robotod valós idejű futtatása során tapasztalhatsz.
Milyen meglepetés érhet? Hogyan tudsz még közelebb kerülni a legpontosabb visszatesztelési módhoz, hogy még teljesebb képet kaphass arról, hogy milyen teljesítményt várhatsz el a robotodtól?
A ma létező talán legpontosabb és legtöbb funkciót biztosító MT4-es visszatesztelés
A Tick Data Suite véleményem szerint ez a ma létező legjobb program a forex robotok visszatesztjére. Ebben az útmutatóban részletezem, hogyan lehet letölteni. Rendelkezik 14 napos próbaverzióval is, így vásárlás előtt ki tudod próbálni a funkcióit.
Ezzel a szoftverrel már nagyon kényelmes dolgozni. Tényleg.
Egy tanulságos teszt
A MetaTrader 4 alapvető viselkedése a visszateszten belül a következő: amennyiben a teszten belül nem érkezik olyan ár, amely egy korábban kihelyezett megbízás árszintjét (vagy stoploss, takeprofit szintjét) teljesíti, akkor is úgy tesz, mintha lett volna azon a szinten jegyzett ár. Ez fals eredményeket okoz, hiszen akár egy napon belüli, akár péntekről hétfőre kialakuló gap (rés) közepén is képes pozíciót nyitni, aktiválni vagy kiléptetni.
Ha a valóságban futunk bele ilyen helyzetbe, akkor a brókercég nem a gapen belüli, hanem a gap utáni legközelebbi lehetséges árat fogja nekünk biztosítani. Ebből kifolyólag sokszor előfordulhat akár az is, hogy szűk SL/TP esetén akár a teljesülés pillanatában bekövetkezik maga a kilépés is, így eredményünk azonnali veszteség lesz.
A Tick Data Suite ezzel szemben képes arra, hogy ezt a hibás viselkedést megszüntesse. Képes modellezni az élő kereskedést, ami tehát azt jelenti, hogy csak ott fog tudni kötni a robotunk, ahol tényleg volt tick (ár), tehát ahol tényleg megvalósulhatott a kereskedést.
Ez a pontosság főleg, de nem csak a skalpoló robotoknál fontos, mert ezen állhat vagy bukhat a teszt hitelessége. Nézzük is meg ezt bővebben!
Az MT4-ben, ha a Stratégia teszterben a TDS beállítások (Tick Data Settings) gombra, majd azon belül a Haladó (Advanced) fülre kattintást követően megtalálod az Éles végrehajtás szimulációja (Simulate live execution) szekciót, amely több jelölőnégyzetet tartalmaz.
Kíváncsi vagy ehhez hasonló, hasznos bejegyzéseimre?
Ha érdekelnek az ehhez hasonló témákkal foglalkozó bejegyzések, akkor add meg keresztneved és e-mail címed, hogy elküldhessem Neked!
A négy jelölőnégyzet bekapcsolásával azt érhetjük el, hogy a stop lossunk, a take profitunk, valamint a stop és a limit megbízásaink csak azokon az árfolyamokon aktiválódhassanak, ahol tényleg járt az árfolyam.
Képzeljük el a következőt: van egy skalpoló robotunk, ami M1-en bizonyos algoritmusok alapján a nagyobb elmozdulásokat kereskedi le. A nagyobb elmozdulások M1-en pedig ugye hírek idején alakulnak ki. A hírek idején kialakuló nagy csapkodások során azonban csak szemre mozog folytatólagosan az árfolyam.
Ez azt jelenti, hogy kisebb szakadások (gap-ek) keletkeznek akár a másodperc tört része alatt. Tehát mondjuk a robot a megbízásunkat 1.10000-re teszi, de később ez a megbízás a teljesülésnél, mivel ott nem volt az általunk kihelyezett áron árjegyzés, már csak 1.10040-nél tud teljesülni. Ez 40 pont, azaz 4 pip! Vegyük észre, hogy ez hosszú távon óriási különbség!
Hogy mekkora tud lenni az ilyen fajta eltérés okozni, álljon itt két kép. Ezekhez nagyon nem is érdemes mit hozzáfűzni. Ugyanaz a robot, ugyanaz az idősík, minden beállítás megegyezik. Csak egy dologban különbözik a két lefuttatott backteszt: a második teszt esetén bekapcsoltuk a „Simulate live execution” lehetőséget. Tehát azt modelleztük le, hogy csak ott köthessen a robot, ahol tényleg volt árfolyamjegyzés.
A különbség drámai, amiből azt tudjuk levonni, hogy ezt a robotot nem feltétlen futtatnánk éles számlán az első teszt alapján. Vannak persze expertek, ahol a két teszt szinte ugyanaz lenne, azokat már talán érdemesebb komolyabban venni. Az ilyenek azonban inkább nagyobb idősíkon nyugodtabb stratégia szerint, záróárakon kötnek.
Ha továbbra is ragaszkodunk a skalpoló stratégiákhoz, érdemes olyat keresni, amely a fenti tesztet elfogadható módon vészeli át.
Kikapcsolt szimulációval, azaz TDS szoftverrel, de a csúszás szimuláció nélkül:
Bekapcsolt szimulációval, azaz TDS szoftverrel és a csúszás szimulációval:
A fentiek értelmében tehát azt mondhatjuk, hogy a TDS-sel való backteszt során érdemes bekapcsolni az Éles végrehajtás szimulációja (Simulate live execution) lehetőséget, mert így tényleg csak a múltban valóban létezett árfolyamokkal tud dolgozni a robot, mi pedig sokkal tisztább képet kaphatunk.
Köszönöm szépen Los Csaba nevű kedves olvasóm munkáját a cikk elkészítése kapcsán!
Azt gondolom, hogy egy olyan szolgáltatónál, ahol a csúszás „mindennapos”, vagy inkább „minden tickes” avval nem érdemes foglalkozni. A cúszás jelensége elvi szintű probléma kell hogy maradjon egy stratégia működése kapcsán. Megette a fene azt a pizzasütő és házhozszállító céget, amelyik a futár bármelyik, bármikori útjába eső lámpák színére (zöldhullámra) apellálva számolja ki az érkezés idejét, és ha késik a kajával, akkor bukta a cég a pizza árát. Ennél csak profibb alapokra lehet és kell építkezni. A gap egy nüasnsz. Amelyik robot nem képes megkűzdeni a „gap intézményével”, az ki se menjen a ringbe. Vagyis jónak kell lenni gap-el vagy anélkül is.
Bár a példád nem jött át teljesen, egyetértünk, a cikk is erről szól :)