Robot tesztelés: Múltbeli adatok a Metatarder alá..

Kategória: 

Az alábbiakban a robot tesztelés első lépését a múltbeli adatok beszerzésének témáját beszéljük meg, hiszen ahhoz, hogy egy kereskedési stratégiát tesztelni, optimalizálni tudjunk szükségünk van múltbeli árfolyamadatokra. Témáink:

  • Robottesztelés a metatrader saját programjával
  • Forextester adatsorának betöltése
  • A Tickstory használata a robotteszteléshez

A leírásban a metatrader platformon mutatjuk be a robottesztelés fontosabb lépéseit, az adatbeszerzés folyamatát. A feladat megoldásához elengedhetetlen a metatrader platform ismerete, melyről további részleteket az alábbi előadáson tudhatsz meg.

 
 

Robottesztelés a metatrader saját programjával

Robot teszteléshez, kereskedési stratégia teszteléshez be kell szerezni a múltbeli adatokat a metatrader platform alá. Alapból pár hónapos, vagy rosszabb esetben pár tíz napos perces adatokkal rendelkezik a metatrader felület. A probléma megoldására két megoldás van. Vagy használjuk az MT4 saját lehetőségét, amikor a bróker által adott adatsort töltjük le. Ennek a megoldása nagyon egyszerű. Az első lépés, hogy telepítsünk egy külön MT4-es rendszert a tesztelésekhez, az ilyen-olyan adatokhoz. Soha ne teszteljünk az éles számlánkon, és ami nagyon fontos, hogy soha nem töltsünk le az éles, kereskedési számlánkra adatokat. Ezek az adatok, főleg a „gyári” adatsor, amit az MT4-esben tudunk letölteni, azok megkavarhatják az élő számlánk adatsorát. Emiatt a legjobb egy külön telepített MT4-esben dolgozni a teszt folyamán. A menüsorban az „Eszközök” pontot válasszuk ki, és a legördülő menüben a Múltbéli adatokat. Vagy simán nyomjunk egy F2-est és ugyanoda jutunk.

Nyomjunk F2-t

Nyomjunk F2-t

Az alábbi képen látható panelt kapjuk meg, amivel dolgozni fogunk.

Historikus adatok panelje 

Az első lépés, hogy a baloldali panelből válasszuk ki azt az instrumentumot, aminek az adatait le szeretnénk szedni. Arra kattintva megnyílik az idősíkokat mutató menü, itt kattintsunk arra az idősíkra, amit le szeretnénk tölteni. Ha hosszabb időszakon keresztül akarunk, különféle idősíkokon is tesztelni, akkor egymás után le érdemes tölteni az adatokat. Ha ilyen igényünk van, akkor előbb a hosszabb, majd a rövidebb idősík adatit szedjük le.

Ezt szeretnénk letölteni

A kijelölt idősík adatai megjelennek a jobboldali panelben. Ezután a letöltés gombra kattintva kaphatjuk meg az össze régi adatot, amihez hozzáférünk. Ha felugrik egy panel, ami arról tájékoztat bennünk, hogy az adatok nem a brókertől származnak, akkor azt OK-zuk le, hiszen ezt tudjuk és ennek ellenére is kellenek az adatok. Majd, amikor az alsó részben a zöld csík végigfut és kész a letöltés, akkor újra nyomjuk meg a letöltés gombot. Ekkor a rendszer észreveszi, hogy az összes adat le van töltve, és megkérdezi, hogy újra szeretnénk-e generálni az összes idősík adatát. Ezt hagyjuk jóvá. Ezzel azt érjük el, hogy az összes idősík adatát leellenőrzi, hogy azok megfelelnek-e egymásnak. Az óra utolsó perces gyertyájának a záró értéke egyezik-e az adott óra záró értékével.

Ezt OK-zuk le 

Ez nem tart sokáig és így legalább biztosak lehetünk abban, hogy a lehető legjobb adatbázist kapjuk meg. Ezt a műveletet minden tesztelni szánt instrumentummal és minden idősíkon, amin futtatni szeretnénk a teszteket, meg kell csinálni. Ez elég sok idő, de egyszer kell elvégezni, és amíg az MT4-esünket nem töröljük, addig tudjuk használni az adatbázist.

 
 

Az MT4 adatbázisa nem egy túl pontos, sok hiányt és fals adatot is tartalmaz. Ha valaki komolyabban szeretne tesztelni, illetve robotokkal foglalkozni, akkor érdemes más helyről az adatokat beszerezni. Az adatok leszedés és azok betöltése előtt két teendőnk is van. Az MT4-es alapértelmezésben korlátozza a régi adatok mennyiségét, ezt meg kell emelni. Ezt a Ctr+O, azaz a beállítások panelon a chartok fülön lehet megtenni. Itt beállítjuk a Max oszlop a múltban és a Max oszlop a chartban mezőket a maximális értékre. Célszerű az összes értéket 9-es számokkal kitölteni, így az MT4 automatikusan beállítja az általa kezelt legnagyobb számot (2147483647).

Írjuk tele 9-esekkel

Írjuk tele 9-esekkel

Forextester adatsorának betöltése

A múltbeli adatok beszerzésének vannak fizetős, illetve ingyenes megoldásai is. Az ingyenesek közül talán az egyik legjobb a ForexTester nevű programot készítő cégé a legjobb. Ők adnak fizetős, illetve ingyenes lehetőséget is. Számunkra, amíg a nagyobb párokkal foglalkozunk, addig teljesen megfelel az ingyenes is. Az első lépés az adatok beszerzése. Ehhez fel kell keresni a http://www.forextester.com/ oldalt, és a baloldali panelben a „Data Sources” linkre kattintani.

Erre kattintsunk!

Amit az adatokról tudni kell, hogy ezek free vonalon az egyik legjobbak, a bid árat tartalmazzák, azaz nem tartalmazzák a spreadot. Az időzónájuk pedig GMT, azaz a londoni idő. Engem tesztelés közben nem zavar a GTM, de akinek a magyar idő szerint kell, annak az importnál azt be kell állítania.

Ezek közül lehet választani ingyen

Ezek közül lehet választani ingyen[/caption] A kínálat 18 instrumentum, akinek több kell, vagy éppen bróker specifikus adatok, vagy tick adatbázis, annak van lehetősége előfizetni is ezekre. Itt érdemes összeállni több embernek és akkor már az amúgy is olcsó díj, magyar környezetben is elfogadható lesz. A kívánt instrumentumra kattintva letölthető az adatsor. Ezek zip csomagolásúak, ezt a windows felismeri, ha pedig nem, akkor a WinZip vagy hasonló programmal simán ki lehet csomagolni. A kicsomagolás után indítsuk el az MT4-est, majd zárjunk be minden nyitott chartot. Ezután az importálandó instrumentumot nyissuk meg egyperces, azaz M1-es charton.

Csak egy legyen nyitva!

Csak egy legyen nyitva!

Majd zárjuk be az MT4-est és keressük meg a telepítési könyvtárat és annak a history alkönyvtárát. Majd lépjünk be a számlatípusnak megfelelő alkönyvtárba és azon belül az instrumentumnak megfelelő összes hst fájlt töröljük ki. Nem kell félni, ha rosszat törlünk, akkor, ha újraindítjuk az MT4-est és az adott instrumentum chartját megnyitjuk, akkor létre hozza azt. A legvégső esetben, ha valami nagy gubancot csinálunk, akkor pár perc alatt újra lehet telepíteni az MT4-est. Ha betartjuk pontosan a lépéseket, akkor nem okozunk bajt.

Amit kell, azt töröljük ki!

Hasonlóképpen járjunk el a history/downloads mappa tartalmával is. Ott az összes, az instrumentum nevét tartalmazó könyvtárat ürítsük ki. Majd indítsuk el az MT4-et és lépjünk be F2-vel az adat letöltő rendszerbe. De itt nem a letöltési lehetőséget használjuk ki, hanem az importálásit. Az első lépés, hogy keressük meg a beimportálandó instrumentum nevét és azon belül az egyperces adatokat. A képen az aranyat fogom bemutatni.

Jelöljük ki a kívánt insrtumentumot

 Ahogy látni 2000 körüli gyertyánk van, ami nem igazán sok, főleg mert ez perces. Ezután hívjuk elő az import gomb lenyomásával az importálási panelt, majd a választ gombbal keressük meg az adatfájl helyét.

Keressük meg az adatfájlt 

a11

Ha meg van az adatfájl, akkor jelöljük ki és térjünk vissza az MT4-esbe a Megnyitás gombbal. 

Keressük meg az adatfájlt

Keressük meg az adatfájlt[/caption] a „Kihagyás” sorban beállítjuk 1 oszlopot és 1 sort. Majd ha kíváncsiak vagyunk, hogy mikori a legrégebbi importálandó adat, akkor a kis csúszkát az adatok mellet húzzuk le és nézzük meg. Ha nem felel meg az adatsor időzónája, akkor az eltolást is be kell állítani. Majd a „Rendben” gombbal fogadtatjuk el az importot. Ekkor visszatérünk az előző panelhoz, ahol ugyanezt az ellenőrzés meg lehet tenni, itt is a legrégebbi adatoknak 2001-eseknek kell lenni. Illetve legfelül már nem pár ezer, hanem milliós nagyságrendű adatokat kell látni. Majd a bezárással térjünk vissza a nyitott charthoz. Az előzőekben telepített Auto_converter scriptet húzzuk rá a chartra és figyeljük meg, hogy bal felső sarokban kijelzi, ahogy a többi idősík adatait legenerálja, majd kiírja, hogy „done”.

Dolgozik a script

Ekkor már kész van az összes idősík adatsora. A chartra kattintva a billentyűzeten a „home” gomb lenyomásával az kezdeti időpontra tudunk lépni, ami itt is (ha minden sikerült) a 2001-es időpont. Ha minden jó, akkor jelentkezzünk be újra a demó számlánkra. Ha ezt nem tesszük meg, akkor a tesztelési folyamat nem fog lefutni rendesen. Ezután már használhatjuk a teszterben az adatokat.

 
 

A Tickstory használata a robotteszteléshez

Az automatizált adatgyűjtéshez egy kis programot kell letölteni a http://www.tickstory.com/ oldalról, majd telepíteni. A program ingyenes, de lájkolni kell ahhoz, hogy minden MT4-esben működjön. Ez nem túl nagy ár azért, hogy gyorsan jussunk nagyon jó minőségű adatokhoz. Az 500-asnál újabb MT4 verziók futtatásához előbb kedvelni kell a TickStory Lite -ot! Ahhoz, hogy a Tickstory kedvelőjévé válj, kattints a Facebook Like (Tetszik) gombra a program jobb felső sarkában. Miután az Internet Explorer vagy másik böngésző megkérdezi a belépési adataidat, győződj meg róla, hogy bejelölöd a “Maradjak bejelentkezve” opciót. Ezek után érheted el a Tickstory Lite plusz funkcióit – például az MT4 Adat szerkesztőt (MT4 Data Editor) és az 500+ buildek indító funkcióját.

A program a ducascopy adatbázisát használja, 2010-től vannak tick adataik. Az első lépés, hogy megadjuk, hogy melyik MT4-esbe szeretnénk az adatokat berakni. Ezt a fájl menü beállítások pontjában tudjuk megadni.

l2

Tallózzuk be a kívánt MT4-est, állítsuk be a kívánt szervert. A szervert az MT4 számlára való bejelentkezésnél megtaláljuk, azt is meg kell adni a számlaszám és a jelszónál. Ez automatikusan kitöltésre kerül, ha egy számla van az MT4-ben,ha több,akkor azt adjuk meg, ami alatt tesztelni fogunk. Majd adjuk meg azt, hogy hova szeretnénk letölteni az adatokat.

l1

Illetve, ha kell a proxy szervert is adjuk meg, ha van ilyenünk. Ahogy látni egy mindent a tesztelésre telepített MT4-es alá rakattam be, így nem kell meglepődni majd, ha ott telepítési könyvtárba a devizakereszt nevének megfelelő könyvtárak jönnek létre. De lehet ezeknek az adatoknak külön könyvtárat is megadni. Ami fontos: nagyon sok adatot fogunk kezelni, így olyan lemezre tegyük a teszter MT4-esünket, ahol nagyon sok hely van. Ez főleg akkor igaz, ha tick adatbázis is építettünk az MT4-esben a TickStoryval. Ha tick adatbázist készítettünk vele, akkor 3-5giga adattal számolhatunk egy kereszt és egy idősíkon. Ami nem kevés.

t3

Ha van rá lehetőségünk, akkor SSD meghajtóra telepítsük az MT4-est, ott az adathozzáférés sokkal gyorsabb, mint a hagyományos meghajtókon. Már meg van, az, hogy hova kerülnek az adatok és melyik MT4-est használjuk majd.

Most egy fontos lépés következik. Amelyik MT4-esben és amilyen számlán tesztelni szeretnénk a jövőben, abból ki kell menteni az instrumentumok adatait. Ehhez adnak egy TickstoryInfoExpert nevű expert advisort. Ezt a TickStory telepítési könyvtárában találjuk meg, nálam a Program Files (x86)\Tickstory Lite\TickstoryInfoExpert.ex4 útvonalon. Ezt kell az MT4 alá telepíteni, expertként. Az expert bármelyik charthoz csatolás után ezt a panelt kell kitölteni:

l4

ConfigFileName: amennyiben nem adunk meg fájlnevet, a robot saját maga nevezi el a fájlunkat mt4.Brókernév.Szervernév.mt4config néven. Mindenképp érdemes valami normális nevet adni, mert az ilyen hosszú név gondot okozhat. Én a fantáziadús megoldást használtam: az adott brókercég nevét adtam meg. A kiterjesztést is meg kell adni! Ami azt jelenti, hogy brokercegneve.mt4config a helyes fájl név.

SymbolSuffix: egyes számlák esetén lehet, hogy a bróker instrumentum utótagot használ. Ha ide egy "_pro" betűt írunk be, akkor az EURUSD instrumentum helyett egy EURUSD_pro-t próbál lekérdezni az expert.

AllowWhenNotConnected: amennyiben sehogy sem sikerül csatlakoztatni Metatraderünket a brókerhez, próbáljuk ezt a kapcsolót true állásba kapcsolni. Ekkor az expert a legutolsó környezeti információkat menti a fájlunkba.

Ami fontos: mivel alapból az aktuális adatokat kérdezi le a brókertől, így érdemes aktív kereskedési időben megtenni ezt, nehogy pld. a hétvégi spreadokat vegye alapnak. Bár a spreadokat a teszterben is állíthatjuk, illetve a teszter is lekérdezi majd a brókertől, nem lehet nagy gond, de nem árt az óvatosság.

A következő ticknél le fog futni az expert, majd keressük meg a legenerált fájlunkat. A legbiztosabb módja az, ha nem fájlkezelővel keressük, hanem az MT4-en keresztül: Fájl menü, rendszermappa megnyitása, majd az MQL4/files könyvtárban.

A kész fájlt másoljuk át egy könnyen megtalálható helyre, ha túl hosszú az elérési útja. Ha nem adtuk meg a .mt4config kiterjesztést, akkor most pótoljuk, vagy a TickStory nem találja majd meg.

Ha nincs ott a /files könyvtárban, akkor nézzük meg az expert napló fület, hogy mi a hiba. Ha minden jól ment ezt kell látni:

2015.02.14 17:19:28.887 TickstoryInfoExpert #CLH5,M15: Finished writing config file: a brókercég neve

Így már minden készen áll az adatok beszerzéséhez és azoknak az MT4-be való beviteléhez. Nyissuk meg az adatletörlést, aminek két módja van. Az Eszközök/adatok letöltése, vagy az ikon sorból is indítható.Az alábbi panelt kapjuk.

l5

Itt ki lehet jelölni egy, vagy több (Ctrl vagy shift, ahogy a legtöbb windowsos programban…) instrumentumot. Majd jobb klikk és az adott panelon be lehet állítani azt, hogy milyen időtávot szeretnénk leszedni. Van pár előre definiált is, így azokat is lehet használni. A kezdő időpont 2010 eleje legyen maximum, ez előtt nincsenek adatok.

l6

Majd elindul a letöltés, ami a net sebességétől és a kijelölt mennyiségtől függően eltart egy ideig. Én éjszaka szoktam futtatni, amikor nem vesz el más programtól sávszélességet. A naplóban lehet a hibákat látni. Ha azt írja ki, hogy x időben nincs adat, mielőtt megijednénk, nézzük meg, hogy nem-e szombat, vasárnap, vagy éppen ünnepnap-e, amikor nincs adat. Az adatok letörlését ha megszakítjuk, akkor lehet folytatni később is.

A fentiekben leszedtünk egy nagyon jó minőségű adatsort a dukas adatbázisából. Most beexportáljuk az MT4-be, hogy azt használni is tudjuk. Amikor lejöttek az adatok, akkor újra jobb klikk és exportálás MT4-be pontot ki kell választani. Majd a középső fülön adjuk meg a bróker adatokat. Ezt természetesen nem kézzel kell kitölteni, hanem az előbb az MT4-ből lekérdezett fájlból beimportálni az importál… gomb segítségével.

Amennyiben a generálni kívánt terminálban másként hívják az adott instrumentumot, mint ahogy alap esetben szokták (pl. nem DAX30 a neve, hanem #FDZU5) akkor a Map to: szövegdobozba megadhatunk bármilyen nevet - ekkor az összes fájlnév erre szövegre fog alapulni. Az összes adat szabadon szerkeszthető, de erre általában nincs szükség. Majd jöhet a tényleges export az MT4-be.

l7

A panel alsó felében az elérési utakat ellenőrizzük, ha az elején jól állítottuk be, és csak abba az MT4-be szeretnénk exportálni, akkor ez általában jól van kitöltve. A felette lévő részben a bróker időzónáját kell megadni, illetve ha van és kell is a nyári időszámítást. Ezekre figyeljünk, mert ha olyan robotot futtatunk, aminél az is beállítható, hogy mikortól meddig kössön egy nap, akkor ez az adat is fontos. A felső panelrészben a „mikortól meddig” adatokat lehet megadni. Azaz van lehetőség a letöltött adatsorból csak egy intervallum beolvasásra is, használata szerintem egyértelmű. Ami már nagyobb átgondolást kíván az a fájlok létrehozása rész.

Az 545 build feletti MT4 az azt hiszem már természetes, bár pár offline gépen lehet régi is, de ennek nagyon kicsi a valószínűsége…

A legjobb tesztelési eredményhez minden legyen bepipálva, de ilyenkor igencsak óriási fájlokat fogunk kapni és az összes idősíkra legenerálja a teszteléshez szükséges fájlokat.

Illetve ilyen esetben NE ikonból indítsuk el az MT4-est, hanem a TickStory-ból az F8-as billentyűvel. Illetve ha így sem fut le a tesztelés rendesen, akkor ki kell kapcsolni az Idősíkok (FXT) legenerálását, és csak az HST fájlokat hozzuk létre, majd a teszter legenerálja, ha szükség lesz rá.

Helytakarékosságból érdemes átgondolni azt, hogy milyen idősík FXT (teszterben használatos) fájlra van szükségünk, mert én pld. napos vagy heti adatokon nem tesztelek, így ezekre nincs szükségem. Ha meg kell, akkor a teszter legenerálja a rövidebb idősíkokból.

A HST fájlokat létrehozása: ha kellenek, akkor ezeket is írassuk ki. Ha éles kereskedést is folyatunk azon a számlán, akkor ne írassuk felül a bróker adatsorát. Ha csak tesztelésre használjuk az MT4-est, akkor írassuk ki, nem foglalnak nagy helyet, és a vizuális teszthez kell a gyertya adatbázis is.

Az FXT fájl legyen csak olvasható: Ha ez be van pipálva, a teszterben használatos fájlokat az MT4 nem tudja felülírni a bróker által küldött adatokkal. azaz a letöltött, jó minőségű adatokat nem rontja el az MT4. De nem is fogja tudni beírni ide a következő napok adatait. Azaz a tesztelés utolsó napja a letöltött adatok utolsó napja lesz, azután már nem lesznek adatok a teszter FXT fájlban.

Létező fájlok felülírása: ezt mindenképp engedélyezzük.

Mennyiségi adatok elhagyása: ha nem kellenek, akkor pipáljuk be. A forexen amúgy is elég szórt minőségűek a brókerek által adott mennyiségi adatok. Ha olyan technikát tesztelünk, ahol a mennyiségi adatok is kellenek, akkor vegyük ki a pipát.

Ismétlődő tickek szűrése: Ennek nagy jelentősége nincs, ha perces adatokat generál le a teszter.

Beállítás után a Rendben lenyomásával indul az export, ami órákig is eltarthat. Érdemes az adott MT4-est leállítani az export/import idejére.

Ha kész, akkor a TickStory-ból indítsuk el az MT4-est: F8 és indulhat a tesztelési folyamat.

Azaz a kívánt összes instrumentum adat egyben letölthető, nem kell kézzel leszedni, és a kívánt összes instrumentum adat egyben bevihető az MT4-be, nem kell egyesével beimportálni.

Bár az előbbiekben az MT4-be való adattöltésről volt szó, az TickStory tud más elemző programok számára is érthető adatokat generálni. Bár ezekkel nem direkt kapcsolaton át működik, de az Eszközök/Adatok mentése menüpontban sokféle elemzőprogram számára érthető formába tudunk adatbázis exportálni. Van előredefiniált adatformátum, amit a legördülő menüből lehet kiválasztani, de saját formátumot is tudunk készíteni.

l10

Már két adatforrást is ismerünk az MT4 historikus adatainak a feljavítására. Használjunk jó és korrekt adatokat a múltbéli adatokon való tesztelésre, mert csak így lesz elfogadható a teszt eredménye.

Ha kérdésed van a fentiekkel kapcsolatban, hozzá szeretnél szólni a témához, csatlakozz facebook csoportunkhoz ide kattintva!

Tanfolyamaink:

Új tartalmak