Ebben az útmutatóban bemutatom a MetaTrader 4 szoftver visszatesztelési funkciójának elméleti és gyakorlati tudnivalóit.

Az MT4 egyik leghasznosabb, ugyanakkor legkevésbé jól megtervezett  szolgáltatása az ún. backtesztelés, vagy magyarul visszatesztelés. Ez lényegében egy robot, vagyis az abba beleprogramozott stratégia visszamenőleges adatokon történő tesztelését és kiértékelését jelenti.

Először az alapokról és a múltbéli adatokról lesz szó, amelyek a backtesztelés során felhasználásra kerülnek, utána pedig maga a visszatesztelési folyamat kerül górcső alá: azaz hova kell kattintani, mit mikor kell beállítani stb.

A műszaki és stratégiai viselkedés elkülönítése

A visszatesztelés általános alapelveit bemutató útmutatómban részletesen beszélek arról, hogy mi a visszatesztelés célja, milyen módszerek állnak rendelkezésre, és hogyan öregszenek ki a stratégiák. Mielőtt továbblépnél, javaslom, hogy olvasd el!

Egy-két gondolatot itt is szeretnék megosztani a műszaki és stratégiai viselkedésről, és arról, hogy miért érdemes őket különválasztani.

Stratégiai viselkedés

Ez magáról a tőzsdei stratégiáról, elméletről és annak helyes alkalmazásáról szól. Magyarul:

  • Alkalmas ez a stratégia az éles számlán való kereskedésre? Ismert a működésének alapja, koncepciója, a paraméterek hatása a stratégiára?
  • Ha technikai elemzésre – azaz indikátorokra, gyertyaalakzatokra stb. – alapszik a stratégia, akkor ezek megfelelő kockázattal képesek működni az adott számlán/virtuális környezetben?
  • Ha matematikai elméletre – azaz pl. grid/martingale elképzelésre – alapszik a stratégia, akkor elegendő tőke és megfelelő környezet áll majd rendelkezésre az éles futtatáshoz?
  • Megfelelően kezeli a stratégia a menet közben felmerülő költségeket (spread, jutalék) és a számla kondícióival kapcsolatos kötöttségeket (minimum távolság a megbízások kapcsán, fagyási szint stb.) ?

Műszaki viselkedés

Ez az egyes funkciók helyes informatikai végrehajtásáról szól. Magyarul:

  • Helyesen működnek a robot alapját képező indikátorok? Vagyis: ugye nem rajzolják újra a saját jeleiket?
  • Helyesen – vagyis a megadott stratégia szerint – köt a robot?
  • A kötések tervezett módon, vagy véletlenül nyílnak meg ott, ahol?
  • Jól méretezi a robot a megnyitott pozíciókat?

  • Mit tesz a program abban az esetben, ha egy-egy paramétert rosszul ad meg a felhasználó?
  • Képes az expert felismerni a korábban nyitott saját pozícióit?

  • Elkülönítve kezeli a robot a saját pozícióit és képes a magic szám megfelelő alkalmazására?

  • Kellőképpen értesíti az EA a felhasználót a fontos történésekről?

  • Helyes információkat közöl a robot a kijelzésén keresztül? (Ha van egyáltalán kijelzése…)

Fontos!

Az olyan robotokat, amelyek a fenti két szempontrendszer kapcsán akár egy pontban is elvéreznek, nem ajánlott sem éles, sem demó környezetben alkalmazni.

Jó tudni

Az alapvető cél egyértelműen az, hogy egy meghatározott időszakra kiderüljön, hogy ott mi a stratégia által végzett kereskedési műveletek eredménye. Fontos tisztázni azt, hogy a visszatesztelés által mutatott eredmény semmiképpen nem jelent garanciát a jövőbeli eredményekre. Ennek lehetséges okai:

  • A múltbéli piaci mozgások közel sem biztos, hogy hasonló módon zajlanak majd le a jövőben.

  • A robot más módon viselkedik egy szimulált burokban, mint a valós idejű futtatás során. Előfordulhat például az, hogy műszaki szempontból rosszul van elkészítve, vagyis a múltbéli adatokon való jó (vagy elégséges) működés egyáltalán nem garancia a valós időben felbukkanó esetleges problémák helyes kezelésére. A visszatesztelés során például nincs olyan árfolyammozgás, amit a robot ne tudna lekereskedni, ugyanakkor valós idejű futtatás esetén egy-egy piaci rallyban bekövetkező heves árfolyammozgás folyamán bekövetkező cselekvéseket közel sem biztos, hogy megfelelően ellenőrzi és javítja a program.

  • A visszamenőleges adatokban kisebb-nagyobb rések (gapek) vannak, amik a pozíciók eredményeit pozitív/negatív irányban befolyásolhatják. Ezek a rések mind az árfolyammozgásban, mind pedig a múltbéli adatok folytonosságában előfordulhatnak.

  • Figyelni kell a legkisebb elmozdulási egység jelentőségére: az MT4-ben a backteszt során a spreadet mindig pontban kell megadni. Azaz például FOREX instrumentumoknál egy 2 pipes spreadet 20-ként kell beírni a mezőbe, függetlenül attól, hogyan várja el a robot a távolságokat a saját bemenő paramétereiben.

  • A visszateszt során az MT4 az utoljára beérkezett árfolyamelmozdulás piaci spread-jét (vételi-eladási árfolyamkülönbségét) alkalmazza a teljes tesztidőszak alatt. Ennek a hétvégi tesztelés esetén van kifejezetten jelentősége: ha az ember a stratégiai teszter panelen a Spread megadásakor az Aktuális lehetőséget választja, az MT4 a legutoljára beérkezett piaci spreadet fogja alkalmazni. Amennyiben ez a pénteken, piaczáráskor beérkezett utolsó adatot jelenti, akkor nagy méretű spreadet eredményez majd, ami az egész tesztelés eredményét kedvezőtlenül befolyásolhatja.

A MetaTrader 4 visszatesztelési korlátjai

A tesztelés természetesen csak visszamenőleges, azaz már befejezett adatokon (gyertyákon) történhet meg. Ezeknek az adatoknak a forrása lehet maga az MT4, de akár külső forrás is.

A Metatrader 4 terminál legfontosabb korlátai, amelyeket nem, vagy csak körülményesen, “házi” megoldással lehet átlépni:

  • Visszatesztelés egyszerre csak egy instrumentumon történhet. Ha tehát van egy robotunk, ami egyszerre szeretne EURUSD és GBPUSD pozíciókat kötni, csak a teszt kiválasztott instrumentumának környezetét kapja meg a szimulált teszt során. Ügyletek kizárólag csak egy terméken születhetnek, illetve a másik instrumentum összes lekérdezett kondíciója is nulla lesz a teszt során.

  • A terminál csak a múltban lezárult gyertyák OHLCV adatait tárolja. Az OHLCV jelentése: Open, High, Low, Close, Volume, azaz nyitóár, legmagasabb ár, legalacsonyabb ár és mennyiség. Utóbbi az árfolyamelmozdulások darabszámát jelenti.

  • A múltból kizárólag a Bid árfolyam változásait tudjuk követni, az Ask árét nem. Ennek oka, hogy a Metatrader kizárólag a Bid OHLC értékeket tárolja. Áthidalható.

  • A múltból a legjobb esetben is csak perces (M1) gyertyaadatok állnak rendelkezésre. A program a tesztelés megkezdésekor az összes elérhető adat alapján egy belső számítási képlet segítségével véletlenszerű generálással hoz létre egy, a valóságra hasonlító árfolyam mozgást.

  • Minél rosszabb a rendelkezésre álló adatok minősége, annál rosszabb minőségű lesz az a visszatesztelési környezet, amelyen robotunk futni fog. Ez azt jelenti, hogy egy-egy gyertyában más árfolyammozgást fogunk a robotunkkal tapasztalni, mint azt a valóságban tettük volna. Például a valóságban egy M1-es gyertyában a stoploss szintet 12:33:05 másodperckor érte el az árfolyam, a tesztben azonban 12:33:45-kor történik meg a szimuláció szerint. Nem tűnik nagy eltérésnek, de magas pontosságot elváró rendszereknél ez akár kardinális különbségeket is jelenthet.

  • A tesztekben egyáltalán nincs példa a valóságban sokszor előforduló jegyzési problémákra, például nincsen csúszás (slippage) vagy más áron történő teljesülés. A visszatesztben gyakorlatilag minden a lehető legjobb forgatókönyv mentén teljesül. Áthidalható.

  • A terminál alapvető viselkedése, hogy akár rések közepén is képes végrehajtani egy belépési vagy kilépési megbízást. Ez szó szerint azt jelenti, hogy egy gap kellős közepére elhelyezett függő, stop loss vagy take profit megbízás úgy teljesül, mintha ott a valóságban jegyzett ár lett volna. Ez jelentősen torzítja az eredményeket, hiszen a valóságban a rést követő első árfolyam lenne a végrehajtás helyszíne. Áthidalható.

  • Érdemes odafigyelni arra, hogy alapvetésként az MT4 nem képes változó spreaddel visszatesztelni. Áthidalható.

A Tick Data Suite szoftver lehetőséget biztosít az összes olyan pont problémájának feloldására, amelynél az Áthidalható. címkét használtam. Jelen útmutató feldolgozását követően célszerű elolvasnod a szoftverről írt cikkemet is.

Gyertyák (oszlopok) száma

A chartokban megjelenített gyertyák (oszlopok, bar-ok) száma egy központi beállítási értéktől függ, melyet az Eszközök > Beállítások > Chartok fülön találunk meg. Ha nem áll rendelkezésre elegendő gyertyád a múltban, lehet, hogy az alábbi beállítások értékei alacsonyak.

  • A Max oszlop a múltban beállítási lehetőség jelentése: ennyi darab gyertya értékét őrzi visszamenőlegesen a Metatrader 4 az egyes idősíkok kapcsán a merevlemezen. Egy chart bezárásakor maximum ennyi darab gyertya adata lesz tárolva.

  • A Max oszlop a chartban beállítási lehetőség jelentése: egy charton maximum ennyi darab gyertya lesz megjelenítve. Például az indikátorok értékeinek számításakor ennek a paraméternek nagy jelentősége van, hiszen ha ez az érték extrém magas, az indikátori értékek kiszámítása több időt vehet igénybe – emiatt egy erős számítógép is belassulhat. Egy chart megnyitásakor maximum az itt megadott múltbéli gyertyát fog letölteni az MT4, azonban a folyamatos futtatás közben beérkező árváltozásokkal létrejövő új gyertyák miatt ez a szám túlléphető.

Gyertyák száma a múltban és a charton

Amennyiben azt szeretnénk, hogy a lehető legtöbb múltbéli gyertya látszódjon a charton, javasolt a két szám nagyobb értékre történő átállítása. A legnagyobb megadható szám 2 147 483 647.

Bármely érték változtatása után javasolt újraindítani a Metatrader 4-et.

Múltbéli adatok beszerzése

A múltbéli gyertyák forrásai az alábbiak lehetnek.

  • 1
    A brókercég saját szervere, ahol az aktuális kereskedési számla van.
  • 2
    A MetaQuotes, vagyis a terminált gyártó cég szervere.
  • 3
    Külső forrás, például az itt a blogon már sokszor említett és körbejárt jó minőségű (99%-os) tick- és gyertyaadatok.

Sorra bemutatom az egyes lehetőségeket, hogy látszódjon a köztük lévő különbség.

A múltbéli adatok forrása: a brókercég saját szervere

Ebben az esetben a chartok alapjául szolgáló gyertyák a brókercég saját szerveréről töltődnek le. Ez kétféleképpen történhet:

  • 1
    Egy MT4-et bekapcsolva hagyunk két hétig; ekkor – optimális esetben – az indítástól kezdve két héten keresztül minden ár rögzítésre kerül. Itt is igaz az a tény, hogy kizárólag gyertyaadatok kerülnek rögzítésre, azaz az árfolyam tényleges mozgása nem.
  • 2

    Kikapcsolva az Automatikus görgetés (Auto Scroll) funkciót, visszapörgetjük a chartokat addig, amíg csak lehet. Ezáltal a Metatrader 4 letölti a brókercég szerveréről azokat a gyertyaadatokat, amelyek a brókercég szemszögéből mutatják a piaci mozgásokat.

Mivel múltbéli adatokat nem tudunk “kivárni”, ezért a második lehetőség az igazi megoldás.

A módszer rendkívül primitívnek tűnik, és az is. A professzionális tesztelőszoftverek megoldásaihoz képest megmosolygtató ez az út, ugyanakkor ez a módszer a legegyszerűbb és a legkönnyebben elérhető.

Az adatok letöltésének módja

  • 1
    A Gyertyák (oszlopok) száma bekezdésben leírt beállításokat minél nagyobb számra érdemes állítani, a fent részletezett módon.
  • 2

    Nyisd meg a kérdéses instrumentumot (pl. EURUSD)!

  • 3

    Kapcsold ki az Automatikus görgetés funkciót annak érdekében, hogy a visszafelé görgetésnél ne ugorjon vissza a chart az aktuális időhöz.

  • 4

    Tarts lenyomva a Home vagy a Page Up gombot mindaddig, ameddig a chart már nem mozdul tovább balra. Amíg nyomva tartod a billentyűt, az adatok előbb-utóbb letöltődnek és közben folyamatosan egyre régebbi időpontig jutunk el a múltban.

  • 5
    Végezd el a 2-4. lépést az összes idősíkon!

A múltbéli adatok forrása: a MetaQuotes cég szervere

Ekkor a MetaQuotes szerveréről tölthetünk le egységes adatokat. Ennek hátránya az, hogy az értékeknek semmi közük nincs a brókercégnél megtörtént árfolyammozgásokhoz.

Előnyök

  • Könnyen elérhetőek az adatok.
  • Gyorsan letöltődnek a számítógépre.

Hátrányok

  • Az adatok minősége gyakran borzasztóan rossz.

  • Komplett időszakok kimaradnak, sokszor ok nélkül, például egy nap, negyed óra vagy akár egy egész hét hiányzik, vagy éppen augusztus 5. után november 1. következik.

  • Amennyiben az instrumentum, amelyre kíváncsi vagy, előtagot vagy utótagot tartalmaz – pl. nem EURUSD a neve, hanem EURUSDpro –, akkor ez a lehetőség kompletten kiesik, mivel a MetaQuotes szerverén csak a főbb FOREX instrumentumok érhetőek el, azok is csak elő- és utótag nélkül.

Az adatok letöltésének módja

  • 1

    Nyisd meg az Eszközök > Múltbeli adatok menüt, vagy nyomd meg az F2 gombot!

  • 2
    Keresd ki a kérdéses instrumentumot!
  • 3

    Nyomd meg a Letöltés gombot!

  • 4

    A letöltés befejeződése után nyomd meg ismét a Letöltés gombot!

  • 5

    A “Nincs új adat ehhez az instrumentumhoz. Újra akarod generáltatni az összes idősík adatát?” kérdésre válaszolj Igennel.

Az alábbi képsorozat a fenti folyamatot illusztrálja. Az adatok letöltése után böngészhetővé válik minden idősík összes adata (előtte is böngészhető, csak kevés adat áll rendelkezésünkre alapértelmezésként).

A múltbéli adatok forrása: külső források

Külső adatforrást is igénybe vehetünk, ha a fenti két megoldás nem biztosít megfelelő minőséget a visszateszteléshez. Amennyiben például rendelkezésedre áll jó minőségű perces adat és nincs feltétlen szükséged tick minőségű adatokra, akkor azt a Múltbéli adatok panelen az Import gomb megnyomásával beillesztheted a terminálodba. Az importálás során figyelni kell arra, hogy:

  • Kizárólag vesszővel elválasztott értékek (CSV) típusú fájlból tudunk adatokat beolvasni.

  • Legyen helyes az oszlopok sorrendje: Idő – Nyitóár – Legmagasabb ár – Legalacsonyabb ár – Záróár – Mennyiség.

  • Helyesen kell megadni, hogy melyik sorokat, illetve oszlopokat hagyjuk ki. Ha például van fejléc a CSV fájlban, akkor a sor mezőben 1-et adj meg!
  • Ez a panel kizárólag gyertyaadatok importálására alkalmas; ne próbálj vele tick adatokat importálni, mert arra külön megoldást kell alkalmazni!

  • Válaszd ki a megfelelő idősíkot, majd kattints az Importál gombra!

Az egyik legnépszerűbb adatforrás a Dukascopy brókercég által biztosított adathalmaz. A külső adatforrásokat kezelő szoftverek, például a Tick Data Suite vagy a Tickstory Lite lehetőséget biztosítanak arra, hogy milyen formátumban exportáljuk az adatokat. Érdemes az Általános gyertyaformátum (vesszővel tagolt), vagy kifejezetten a MetaTrader kimeneti formátumát választani, ha az adott szoftver támogatja az utóbbi lehetőséget.

Az exportálásnál és a Metatrader 4-be történő importálásnál is figyelni kell arra, hogy mely idősíkkal akarunk dolgozni. Szabályos idősíkok: M1, M5, M15, M30, H1, H4, D1, W1, MN. Ezen kívül nem érdemes mással próbálkozni az importálás kapcsán. (Kivéve, ha tudod mit csinálsz!)

Amennyiben az összes idősíkon elvégezted az importálást, kifogástalan minőségű gyertyaadataid lesznek az adott instrumentum összes idősíkján. Ha megnyitod az érintett instrumentum idősíkjait új chartként, a frissen importált adatokat kell látnod. Ezt követően a tesztelési folyamat indításakor a szükséges tesztelési környezetet az MT4 a múltbéli gyertyákból a korábban említett, véletlenszerűséget alkalmazó képlet felhasználásával hozza létre.

A módszer során beszerzett múltbéli adatok minősége a legtöbb stratégiához elegendő lehet.

Jó minőségű múltbéli árfolyamadatok

Előfordulhat, hogy stratégiád teszteléséhez tick minőségű adatokra vágysz. Ez azt jelenti, hogy nem csupán gyertyaadatokból mesterségesen képzett adatokból, hanem az összes valódi árfolyamelmozdulással szeretnél visszatesztelni, akár változó spreaddel. Mivel a MetaTrader 4 a visszateszti környezetet a Start gomb megnyomásakor generálja, ezt a műveletét kell letiltani ahhoz, hogy az általunk házilag létrehozott visszateszti környezetet olvassa be és használja. Ehhez egy harmadik fél által készített szoftverre van szükséged, amely lehetővé teszi az adatok beszerzését és bejuttatását a programba, valamint biztosítja azt, hogy az MT4 ezeknek az adatoknak a használatával végezze a visszatesztelést. Figyelmedbe ajánlom a Tick Data Suite nevű szoftvert, amelyet külön bejegyzésben mutatok be.

A visszatesztelési panel és funkciói

A MetaTrader 4 terminálban a visszatesztelést egy külön erre a célra szolgáló panelen lehet beállítani. Feltételezem, hogy a tesztelni kívánt robotot vagy indikátort már bemásoltad a megfelelő helyre. Ha ez a művelet számodra nem egyértelmű, akkor olvasd át a Mi az a Rendszermappa, és mire jó? című bejegyzésemet.

A visszatesztelési panel megjelenítése

A tesztelést a Stratégiai Teszter elnevezésű panelen lehet végezni. Ez egy olyan panel, mint például az, amelyiken a Kereskedés, Számlatörténet, Hírek stb. fülek vannak, csak épp alap esetben ki van kapcsolva, vagyis el van rejtve.

A következő módszerek bármelyikével tudod előcsalogatni:

  • A felső menüsorban kattints a Nézet menüre, majd azon belül a Stratégiai Teszter pontra!

  • Nyomd meg a felső eszköztárban a Stratégiai Teszter ikont (pirossal bekeretezve az alábbi képen)!

    Stratégiai Teszter gomb a felső eszköztáron
  • Nyomd meg a Control-R billentyűkombinációt! Ez ki-be kapcsolja a panelt.

A tesztelési panel felépítése

A panel gombjait és elemeit részletesen bemutatom. Készítettem egy képet, amelyen minden fontos vezérlőegységet beszámoztam, hogy tudjak rájuk hivatkozni. Javaslom, hogy a képet egy másik ablakban nyisd meg, hogy könnyebben kövesd a magyarázat számozását.

Stratégiai teszter vezérlői

A tesztelni kívánt MT4 program típusa (1)

A legördülő listában két MT4 kiegészítőt lehet választani:

  • Expert – ezt kell kiválasztanod, ha kereskedőrobotot szeretnél tesztelni a múltbéli adatokon.

  • Indikátor – ezt kell kiválasztanod, ha indikátort szeretnél tesztelni a múltbéli adatokon.

Ha például az Expert lehetőség mellett döntesz, a kiválasztás után frissül a 3-as számmal jelzett lehulló lista, amely az MT4 terminálba telepített expertek felsorolását tartalmazza.

A tesztelni kívánt expert vagy indikátor (2)

Válaszd ki azt az expertet (robotot) vagy indikátort, amelyet tesztelni szeretnél!

A tesztelni kívánt instrumentum (3)

A lista az aktuális kereskedési számlán elérhető instrumentumok felsorolását rejti. Ez a lista attól függően változhat, hogy éppen milyen kereskedési számlára vagy bejelentkezve.

Amennyiben nem látod az összes instrumentumot, esetleg hiányolsz párat a listából, akkor ezzel a rövid GYIK bejegyzéssel oldhatod meg a problémát.

Modellezési minőség (4)

Minden tesztelés előtt dönthetsz arról, hogy mennyire részletes “szimulációt” szeretnél az adott teszten belül. A részletesség ebben a kontextusban azt jelenti, hogy a rendelkezésre álló múltbéli gyertyaadatokból generált tick (árelmozdulás) alapú környezetben hány elmozdulást szimulál majd a Metatrader a backteszt alatt gyertyánként.

Amennyiben saját magad hozod létre a tesztelési környezetet jó minőségű tick adatok alapján, akkor kizárólag a Minden tick módszer használható.

  • Minden tick – a rendelkezésre álló gyertyaadatok alapján az MT4, a véletlenszerűséget is alkalmazva létrehozza a gyertyában előforduló árfolyamváltozásokat. Ezek az árfolyamváltozások eltérhetnek a valóságban megtörtént árfolyammozgásoktól, hiszen a legjobb esetben is kizárólag M1-es gyertyaadatok állnak rendelkezésre a program által tárolt adatok között.

  • Kontroll pont – az adott gyertyán belül lezajló árfolyammozgások valódi számát (Volume) figyelmen kívül hagyva jóval kevesebb árfolyammozgást szimulál a teszter. D1 idősík esetén ez a szám gyertyánként kevesebb mint 100, H4 esetén kevesebb mint 80, és az egyre kisebb idősíkokon egyre kisebb ez a szám. Egy általam végzett próbamérés eredménye (máshol az eredmények eltérhetnek, de nagyságrendileg egyezniük kell):

    • D1: kevesebb, mint 100 elmozdulás gyertyánként
    • H4: kevesebb, mint 80 elmozdulás gyertyánként
    • H1, M30, M15, M5: kevesebb, mint 50 elmozdulás gyertyánként
    • M1: kevesebb, mint 20 elmozdulás gyertyánként
  • Csak az árak megnyitása – a teszter csak minden gyertya nyitóárára szimulál árelmozdulást, azaz gyertyánként összesen 1 darab árjegyzés történik a gyertyában.

A modellezés alapossága értelemszerűen a Minden tick módszernél a legnagyobb, a sebesség pedig ennél a modellezésnél a leglassabb. Ha fontos, hogy az összes lehetséges árfolyamelmozdulást  modellezd, akkor válaszd a Minden tick módszert!

Időszak megadása (5)

Amennyiben ez a jelölőnégyzet be van jelölve, egy konkrét időszakra fog futni a tesztelés, ha pedig nincs, akkor a teszter az időszak kezdetét és végét a rendelkezésre álló gyertyaadatok alapján határozza meg.

Időponttól és Időpontig (6)

Itt tudod megadni a teszt kezdetének és végének dátumát. A teszt a megadott időpont 0 órájától a végidőpont napjának 0 órájáig tart.

Ha a rendelkezésre álló adatok nincsenek meg, akkor két eset fordulhat elő.

  • 1

    A teszt egy rövid nyikkanó hang kiadása után megáll, és a Naplóban a no history data for XX (nincs adat a megadott idősíkon) hibaüzenetet fogod látni. az MT4 – számomra kiismerhetetlen módszer alapján – néha letölt adatokat pótlás gyanánt, néha pedig nem.

  • 2

    A teszt ugyan elindul, de nem pontosan azzal a dátummal fog kezdődni vagy véget érni, ahogyan azt beállítottad. Például megadtad a 2013.01.01 -es dátumot kezdésnek, de mivel nincsen adat, csak legkorábban 2013.04.06-ától, akkor az utóbbi dátumtól fog indulni a tesztelés.

Vizuális mód (7)

Ha szeretnéd megtekinteni, hogy a tesztelésre szánt robotod vagy indikátorod hogyan működne vizuálisan a tesztelés időszaka alatt, akkor kapcsold be ezt a lehetőséget! Ilyenkor a tesztelés gyorsasága lecsökken, hiszen az MT4-nek a gyertyákat és a grafikus objektumokat is meg kell jelenítenie.

Bekapcsolt állapot esetén az Indítás gomb megnyomása után felugrik az instrumentum chartja. Ebben a frissen nyílt ablakban fut majd a tesztelés, és minden, a modellezési beállításnak megfelelő árfolyamelmozdulás megjelenítésre kerül. Az árak mozgásának gyorsaságát a jelölőnégyzettől jobbra eső csúszkával lehet beállítani. Számíts arra, hogy a rossz tervezés miatt az utolsó 3 érték (32, 31 és 30) biztosít vállalható sebességet, az ennél kisebb értékek használata rengeteg időt biztosít egyéb tevékenységek kivitelezésére (kert felásása, kocsimosás, nyaralás stb).

A vizuális mód nem érhető el optimalizálás során.

Szüneteltetés és folytatás (8)

Amennyiben szeretnéd szüneteltetni a futó vizuális tesztet, akkor a szünet (||) gombra kattintással teheted meg. Ekkor lehetőséged nyílik kiértékelni és elemezni a charton történt eseményeket. A teszt folytatható a >> gombra kattintással. Ennek a gombnak az állapotát a teszt leállítása során az MT4 megjegyzi, ezért ne lepődj meg, ha a következő vizuális teszt indításakor magától elindul a vizuális teszt.

Ugrás ide (9)

Ez a gomb kizárólag a Vizuális mód bekapcsolt állapotában használható. Amennyiben a vizuális tesztben egy konkrét naphoz akarunk eljutni, de nem szeretnénk végigvárni, míg a vizuális teszteléssel a teszt magától eljut odáig, ezzel a mezővel megadhatjuk a konkrét nap dátumát. A dátum megadását követően az Ugrás ide gomb megnyomásával a teszt – a robot gyorsaságától függően – pár pillanat múlva “odaugrik” a megadott dátumhoz. Természetesen közben a háttérben az addig húzódót időre is lefuttatja a robotot a háttérben, hogy a megadott dátumnál minden adat (pozíciók, belső változók stb.) úgy álljon rendelkezésre, ahogyan teljes vizuális futtatás esetén állt volna.

A megadott dátum kizárólag a tesztelési időszakon belüli lehet!

Beállítások, Eredmények, Grafikon, Jelentés és Napló fül (10)

  • A Beállítások elnevezésű fül tartalmazza azokat a gombokat és vezérlőket, amelyekről ez a cikk szól.

  • Az Eredmények elnevezésű fül – a képen ez nincs rajta – a visszateszt során nyitott és lezárt pozíciókat, függő megbízásokat tartalmazza. A lista a teszt futása alatt is böngészhető. Minden pozíció nyitó időpontja, nyitóára, stoploss és takeprofit ára, záróára, záró időpontja és bruttó profitja megjelenik – akárcsak a pozíciózárások utáni könyvelt egyenleg szintje is. A fül teljes tartalma kimenthető, ennek a funkciónak az eléréséhez kattints jobb egérgombbal bármelyik sorra és válaszd a Mentés jelentésként lehetőséget!

  • A Grafikon elnevezésű fül – a képen ez nincs rajta – a visszateszt futása kapcsán mutatja a könyvelt egyenleg és a tőke változásának grafikonját. A grafikon a teszt futása alatt folyamatosan rajzolódik ki. A teszt végeztével ha a grafikon egy-egy pontjára kattintasz duplán a bal egérgombbal, akkor a program átvált az Eredmények fülre és kijelöli a kattintás pontján aktív pozíciót. A grafikon kimenthető képként, ennek a funkciónak az eléréséhez kattints jobb egérgombbal a grafikonra és válaszd a Mentés képként lehetőséget!

  • A Jelentés elnevezésű fül – a képen ez nincs rajta – a visszateszt végeztével jelenik csak meg. Összesítő statisztikát tartalmaz a tesztben történt pozíciónyitások és azok eredményei kapcsán. Például megtudható belőle, hogy mekkora lehívással dolgozott az adott stratégia, hány egymást követő nyereség és veszteség történt stb. A fül teljes tartalma menthető, ehhez kattints jobb egérgombbal bármelyik sorra, és válaszd a Mentés jelentésként lehetőséget!

  • A Napló elnevezésű fül pedig a backteszt során a teszter és a robot által közölt információkat (naplóbejegyzéseket) tartalmazza. A naplózás jelentőségéről korábbi bejegyzésemben találsz információkat.

Idősík (11)

Azt az idősíkot adhatod meg itt, amelyen a tesztet szeretnéd futtatni.

A tesztelés során az adott instrumentum minden idősíkja elérhető lesz a robot számára, azonban a vizuális tesztelés miatt megjelenő chart ablak fix idősíkja az itt megadott lesz.

Spread (12)

Beállítható a teszt során alkalmazott fix kereskedési költség is. A változó spread nem opció, mivel az MT4 kizárólag Bid árfolyamokat tárol múltbéli adatként. Ezt a korlátozást áthidalhatod a Tick Data Suite szoftver használatával.

Különösen figyelj oda arra, hogy a spread mértékét az instrumentum legkisebb elmozdulási egysége alapján add meg! Tehát ha pl. 5 tizedesjegyes EURUSD instrumentumon dolgozol, akkor a spread nagyságrendileg 2 pip körüli, ezt 20-ként kell megadnod ebben a mezőben.

Az Aktuális lehetőség azt jelenti, hogy a teszt indításának pillanatában az utolsó ismert árfolyam piaci spreadjét alkalmazza az MT4 az egész tesztidőszakra. Amennyiben hétvégén tesztelsz, vedd figyelembe hogy a legutolsó adat akár szélsőségesen magas is lehet! Ez az oka annak, hogy némelyik robot egyébként elfogadható eredménygörbéje a hétvégi tesztelések során drasztikusan megváltozik.

Optimalizáció (13)

Az Optimalizáció bekapcsolása azt jelenti, hogy több egymás utáni backtesztet akarsz lefuttatni a paraméterek egy előre megadott intervallumában (vagy több optimalizálandó paraméter esetén azok kombinációiban).

Erről hamarosan egy külön útmutatóban fogok írni részletesen.

Expert tulajdonságok (14)

Ezzel a gombbal hívhatod elő az expert külső paramétereinek beállítópaneljét, magyarul itt tudod majd pontosítani azokat a beállításokat, amelyeken keresztül a képes vagy a robotot irányítani.

Sorrendben bemutatom a Tesztelés, a Bemenő adatok és az Optimalizáció fülek jelentését.

Tesztelés fül

  • Kezdő letét: az az összeg, amiből a visszatesztben futó robot gazdálkodhat.

  • Devizanem: az a devizanem, amely az induló összegre vonatkozik. Mindig egy választott devizanem hárombetűs reprezentációját kell használni, és csakis olyat, amely az adott terminálban elérhető. Ha a brókercég palettáján pl. elérhető forinthoz köthető instrumentum, akkor EURUSD instrumentum tesztelésekor a HUF -ra beállított teszt devizanem esetén a teszter az Indítás gomb megnyomásakor az USDHUF instrumentum alapján átváltja a szükséges háttérkondíciókat. Ha nincs HUF-hoz köthető instrumentum, akkor a tesztelési környezet hibás lesz, mivel a teszter nem tudja elvégezni a szükséges átváltásokat.

  • Pozíciók: a tesztben a robot által nyitható pozíciók. Long esetén csak buy, buy stop és buy limit, Short esetén csak sell, sell stop és sell limit, míg Long & Short esetén az összes ügylettípus köthető lesz.

  • Az Optimalizáció részen belüli beállítások kizárólag az optimalizációs tesztekhez használatosak, egyszerű tesztfuttatásnál semmi jelentőségük nincsen.

Tesztelés fül

Bemenő adatok fül

A panelen csak azokat a paramétereket éred majd el, amelyeket a programozó eredetileg elérhetővé tett, ezért ha saját stratégiáról van szó, mindig kérd meg a lehető legtöbb paraméter erre a panelra történő kivezetésére, ha ezt nem tenné meg magától.

Robot paraméterekablak

Az oszlopokat zöld számmal jelöltem, magyarázatuk:

  • 1. oszlop – a paraméter elnevezése. Régen korlátozott volt a lehetőség az elnevezésre vonatkozóan, ma már azonban írásjelek használata is megengedett a programozók számára. A paraméter neve alapján lehet az értékét beállítani. A paraméter nevét megelőző jelölőnégyzetnek kizárólag optimalizáció során van jelentősége.

  • 2. oszlop – a paraméter értéke. Egyszerű visszateszt – vagyis nem optimalizáció – során itt adhatod meg a paraméter értékét.

  • 3., 4. és 5. oszlop – az Indítás, Lépés valamint Stop oszlopok értékei egyszerű visszateszt esetén teljesen lényegtelenek. Nem kell őket átállítani! Kifejezetten az optimalizációhoz kapcsolódó adatok. Erről a cikk 3. részében lesz szó.

A Mentés gombbal ki tudod menteni magadnak a párbeszédablakban szereplő összes oszlop értékét egy ún. set fájlba. Korábban mentett set fájlt beolvasni a Betöltés gomb segítségével tudsz.

Optimalizáció fül

Az optimalizációhoz kapcsolódó beállítások, róluk bővebben az optimalizációs útmutatóban lesz szó.

Instrumentum tulajdonságai (15)

Erre a gombra kattintva egy felugró ablakban megtekintheted az instrumentum tulajdonságait (kondícióit).

Instrumentum tulajdonságai

Chart megnyitása (16)

Nem vizuális visszatesztelés esetén a teszt végeztével a gomb megnyomásakor felugrik a teszt chartja, amelyen némi vizuális megjelenítéssel a pozíciókat követheted nyomon. Amennyiben a programozó figyelt erre, egyéb grafikus elemek is megjelenhetnek, amelyek a stratégia nyomon követését segítik elő.

Vizuális mód esetén amennyiben bezártad a chartot, sajnos nem tudod előhívni ezzel a gombbal. Vizuális módú teszteléskor vagy optimalizáláskor ennek a gombnak semmilyen funkciója nincs.

Expert módosítása (17)

Amennyiben rendelkezel a robotod forráskódjával, és az ott is van a robot ex4 fájlja mellett, akkor ezzel a gombbal szerkeszteni tudod azt. A gomb megnyomásakor elindul a MetaEditor, amellyel szerkeszthetővé válik a robot kódja. Erre a gombra a hatékony robothasználathoz és teszteléshez nincsen szükséged.

Ha nem rendelkezel a forráskóddal, a gombnak semmilyen funkciója nincs.

Folyamatjelző sáv (18)

Ez a sáv jelzi a tesztelés folyamatának aktuális állapotát. Ezt inkább a tesztelt időszakban eltelt idő, mintsem a teszteléssel töltött számítási idő alapján frissíti az MT4.

Indítás/Leállítás (19)

A teszt ezzel a gombbal indítható el vagy állítható le.

A tesztelés sebességéről röviden:

Mennyire szabad alapul venni a visszatesztelés során kapott eredményeket?

Minél jobb minőségű adattal tesztelsz, annál inkább alapul veheted az eredményeket a karakterisztika kiderítéséhez. Semmiképpen sem javaslom ugyanakkor azt, hogy egy vagy több sikeres vagy veszteséges visszateszt alapján dönts a robotod eredményességéről. A fentebb kifejtett korlátok miatt mindenképpen szükséges a valós idejű futtatás, azaz ahogyan sokan hivatkoznak rá: a forward test. Ekkor a robotodat egy demó – de inkább élő – számlára helyezve ellenőrzöd a működést – mind piaci, mind műszaki és mind stratégiai szempontból. Az itt elért eredmények alapján érdemes kialakítani a végleges véleményt arról, hogy a stratégiád mire képes – hiszen a piaci elmozdulások, változó kondíciók a visszateszt során egyáltalán nem biztos, hogy ugyanúgy történnek meg és ezáltal kvázi akaratlanul csalóka lesz a levont következtetés, ha csak visszateszt alapján szeretnél dönteni. Ne sajnáld az időt a visszatesztelésre, de hasonlóképpen a valós idejű tesztekre sem! A visszatesztelési útmutatóban részletesen kifejtem a további tudnivalókat.

További tartalmak a visszatesztelés témájában

Kérdésed van? Elakadtál?

Kérj tőlem segítséget, és megoldom a felmerülő problémáidat, kérdéseidet!

További útmutatóim

Kereskedés

Automatizált kereskedés

Visszatesztelés

Radulovic Attila vagyok, MetaTrader programozó.

Radulovic Attila (Radu)

2010 óta vállalkozásom fő profilja a MetaTrader programozás. Azóta több száz kereskedővel konzultáltam, dolgoztam együtt, és legalább ugyanennyi egyedi robotot készítettem.

Közel áll hozzám az MQL4 és MQL5 programozás is, és lelkesedéssel tölt el, ha robottá formálhatok egy kereskedési stratégiát.

Szeretek kommunikálni, és a kapcsolatfelvételtől az átadásig csak arra összpontosítok, hogy a lehető legjobb expert advisort készíthessem el számodra.

Radulovic Attila vagyok, MetaTrader programozó.

Radulovic Attila, MetaTrader programozó

2010 óta vállalkozásom fő profilja a MetaTrader programozás. Azóta több száz kereskedővel konzultáltam, dolgoztam együtt, és legalább ugyanennyi egyedi robotot készítettem.

Közel áll hozzám az MQL4 és MQL5 programozás is, és lelkesedéssel tölt el, ha robottá formálhatok egy kereskedési stratégiát.

Szeretek kommunikálni, és a kapcsolatfelvételtől az átadásig csak arra összpontosítok, hogy a lehető legjobb expert advisort készíthessem el számodra.

6 hozzászólás

  1. Lablovezel 2016. december. 29. csütörtök at 20:10

    Szerbusz!
    Azt szeretnem megkerdezni, MT4-ben lehetoseg van-e gyertyankenti haladasra a visszatesztelesnel, vagy csak ez a „folyamatos” arfolyamhaladas van.

    Koszonettel:

    Peter

    • Radulovic Attila 2017. január. 2. hétfő at 11:35

      Igen, van lehetőség. Először is vizuál tesztben állítsd meg a tesztet a || >> gombokkal, majd az F12 billentyűt nyomkodva kérheted az újabb és újabb árelmozdulásokat. Ha túl lassú ez a módszer, akkor a Kontroll pontos tesztben gyorsabb működést is eszközölhetsz. A billentyűkombinációkról ebben a cikkemben olvashatsz.

  2. cipmq 2017. január. 5. csütörtök at 10:10

    Szia Radu !
    Néhányszor látok eladó robotok web oldalán 99%-os backtest eredményeket. Ha jól értettem a cikkedet, valószínűleg ez sem túl erős biztosíték a profitos működésre bármely brókert is választom ( kivéve esetleg a Dukascopyt), mert ezen backtestek adatainak sincs közvetlenül köze más brókeréhez. Igy a backtest kizárólag a robot működőképességét bizonyitja és nem a profitosságát ! Igy a profitos működés ellenőrzése kizárólag live számlán ( mert sok esetben a demóadatok is eltérnek a live szerver adataitól )lehetséges, de az is csak az adott bróker számlájára érvényes. Jól gondolom ?

    • Radulovic Attila 2017. január. 5. csütörtök at 18:09

      Szia cipmq!

      Pontosan! Az már egy jó jel, hogy ha a robot – a környezeti adatok szempontjából megfelelően beállított – visszatesztben profitos. A kereskedési és üzemeltetési tapasztalat azonban valóban a valós idejű futtatásnál elengedhetetlen ahhoz, hogy hosszabb távon bármilyen stratégiával tartósan profitos maradon a kereskedő.

  3. deepstack 2017. január. 23. hétfő at 14:20

    Szia,
    Jól gondolom, hogy ha van több évre visszamenőleg M1-es csv-m valamely kereszthez, akkor azt be tudom importálni a Múltbeli adatok menüben?
    És ha ez megvan, akkor tudom használni teszteléshez a betöltött időszakban ezeket az adatokat?
    És ezután teszteléskor, ha nem M1-et választok, hanem mondjuk H1-et, akkor a betöltött M1-es gyertyák adatai alapján átszámolja a H1-es gyertyákat? Vagy csak akkor ha Minden tick minőségű tesztet futtatok? Vagy azt veszi csak ilyenkor alapul, amit a Múltbeli adatok táblázat tartalmaz?
    Sajnos nekem még nem világos, hogy mikor honnan veszi a teszter az adatokat, és mikor mit miből generál…

    • Radulovic Attila 2017. január. 26. csütörtök at 12:34

      Igen, jól gondolod, be lehet exportálni idősíkonként az adatokat, ha azok megfelelő formátumúak (egy gyors exportálással meg tudod nézni, hogy pontosan milyen formátumot vár el tőled a MT4).

      Amennyiben ezt megcsinálod, akkor az így beimportált adatokat a MT4 fel fogja használni akkor, amikor a Stratégiai teszter panelen a Start gombra nyomsz majd. Javaslom a cikk előző részét is olvasd el, ha még nem tetted – mert abban erről is van szó.

      A MT4 belső módszerét valóban nem láthatjuk pontosan, azonban az M1-es adatok alapján lefuttathatod a PeriodConvert szkriptet, és azzal előállíthatod a felsőbb idősíkok adatát (5, 15, 30, 60, 240, 1440, 10080, 43200).

      Az így generált visszateszti adatokban a tickeket (árfolyam-elmozdulásokat) véletlenszerűen állítja elő a MT4, tehát a klasszikus értelemben nem lesznek annyira pontosak mint pl. a Tickstory-val letöltött, tick alapú adatokból létrehozott visszateszti adatok.

Comments are closed.

Üdvözöllek!

Radulovic Attila (Radu) vagyok.

Radulovic Attila (Radu)

MetaTrader 4 és MetaTrader 5 platformokra készítek tőzsdei robotokat (experteket) egyedi megrendelésre, ezen kívül a kereskedés témaköréhez nyújtok segítséget szakmai blogomon keresztül.

Az alábbi gombra kattintva részletesen megosztom Veled, hogy milyen tartalmakkal tudlak segíteni Téged.