Expert Advisorok: Hogyan javíts az eredményeken? Optimalizáció, programozás lépései

Kategória: 

Az expert advisorok optimalizálás folyamat nagyon egyszerű az MT4-ben. Bármelyik érték optimalizálható, amire az expert fel van készítve. Így érdemes elgondolkodni már előre, hogy mit is akarunk tesztelni. Itt nagyon fontos az összehasonlíthatóság miatt, hogy az eredeti tesztelt időtávban futtassuk, és az eredeti kockázatkezeléssel az expert advisort. Nem túl nagy értelme van annak, hogy az alap eredményeket fix 0,1lotos kötésekkel futtattuk le, majd, hogy jobb legyen az eredmény az optimalizálást 1 lottal (láttam erre példát). A három részes cikksorozatunk harmadik részét olvasod épp:

Az expert advisor tesztelés szempontjai: Más időszakban is teszteljük!

Már itt is fontos tudnunk, hogy az optimalizálást egy időtávra tudjuk megcsinálni. Ez nem biztos, hogy más időtávokon is jó lesz. Ha kapunk egy eredményt mondjuk a 2010-es adatokon, akkor azokat más időtávon is meg kell nézni, hogy azok jók-e. Teszteljük le 2016-os adatokon, vagy éppen féléves távokon, random kezdéssel, ahol találomra válaszuk ki a kezdő, és a végső időpontot. Ezt folyamatosan tegyük meg, mert ha nem, akkor abba a hibába fogunk esni, hogy egy időtávon túlzottan optimalizált eredményeket fogunk kapni. És annak, hogy pont ugyanolyan legyen a jövőben a piac, nulla az esélye. Nem az a cél, hogy 2013.01.01 – 2014.08.12 közti időszakban megtudjuk, hogy mi a legeslegjobb eredmény, hanem az, hogy egy hosszabb ideig használható általános eredményt kapjuk.

 
 

Az expert advisor tesztelés szempontjai: Mértékletesség

Bár a Metatrader bármennyi adatot, azok variációit tudja tesztelni, itt is tartsunk mértéket. A túl sok változó tesztelése nem csak hosszú optimalizálási időt vesz igénybe, de a több tízezer variációt a Metatrader nem fogja egyesével végignézni, hanem közelítéses módszerrel maximum pár ezret néz meg, ami nekünk nem túl jó. A komolyabb probléma az, hogyha kapunk egy óriási adathalmazt, azt nem fogjuk tudni értelmezni, hanem a legjobbra kattintunk, és azt fogadjuk el ideálisnak. Ami lehet, sőt majdnem biztos, hogy az adott időszakra túloptimalizált eredmény lesz.

Expert advisor optimalizálás példa

Az első lépés az optimalizálandó érték meghatározása. Én az ATR értéken fogom bemutatni, mert az gyorsan lefut, és nagyon alkalmas lesz arra, hogy vizsgáljuk az eredményeket.

optimalizáció, értékelés, robot,  tőzsde, forex

A beállítás

A változó előtti kis négyzetet bepipálva választjuk ki azt, amit akarunk, majd a Start/lépés/Stop értékeket adjuk meg. Itt az 0-tól a 15-ig egyesével fogja lefuttatni a tesztet, majd az így kapott eredményeket látjuk. Ahogy látni a beállítások elmenthetőek, és vissza is tölthetőek. Komolyabb teszteknél érdemes élni ezzel a lehetőséggel. Majd a beállítások fülön az optimalizáció melletti kis négyzet bepipálásával adunk utasítást arra, hogy ne tesztet, hanem optimalizálást futtasson.

optimalizáció, értékelés, robot,  tőzsde, forex

Gyors ellenőrzés, hogy azt az instrumentumot, a megfelelő spreaddel, és idősíkon indítjuk-e el. Ha ez kész, akkor start, és várjuk az eredményt.

optimalizáció, értékelés, robot,  tőzsde, forex

És máris elkezdődik a munka

Kiírja, hogy éppen hányadik tesztet futtatja az expert advisor a 15-ből, és a zöld csík is mutatja az előrehaladást. Közben az Optimalizációs eredmények fülön lehet követni a kész eredményeket. Ha nem jelenik meg semmi, és fut a munkafolyamat, akkor egy jobb klikk a panelre, és vegyük ki a pipát a Haszontalan eredmények átugrása elől, így a mínuszos értékeket is látni fogjuk.

optimalizáció, értékelés, robot,  tőzsde, forex

Itt a haszontalan eredményre is szükségünk lehet

Az optimalizáció eredményeinek értékelése

Majd megkapjuk az eredményt:

optimalizáció, értékelés, robot,  tőzsde, forex

Az értékeket lehet rendezni emelkedő vagy csökkenő sorrendbe, a fejlécre kattintva. Az oszlopok értelmezése nem okozhat gondot, a jelentés fülnél megbeszéltük a jelentésüket. Jobb klikkre kapott listából a Mentés jelentésként lehetőséget emelném ki, ami egy szűk jelentést tud menteni, ami alapból elegendő is, de aki a bemenő adatokat is le akarja menteni, annak ez nem elegendő sajnos. Neki a Mindent másol menüpont lesz jó, így az egész adatsor, amit látunk, az a vágólapra kerül, majd azt egy sima (.txt) szövegfájlba illesszük be. Így az eredmények mentésre kerülnek. Nem ártana egy normális Excel, vagy ha az túl nagy kívánság, akkor egy csv típusú mentés…

Az eredmények előkészítése elemzésre

Itt nem is a mentés, hanem az elemzés miatt lenne jó egy normális kimenetű fájl. Természetesen az is felmerül az emberben, hogy a „Mindent másol” után excelbe illesszük be, de nekem (2007-es verziónál) sok értéket dátumra alakít át, és azt már nem tudjuk számmá alakítani. Így marad a fapados módszer. A lementett txt fájlt be kell exportálni a szokott módon, amire figyelni kell, hogy az "=" jelet is megadjuk elválasztónak, és a tizedes jelet pontra állítsuk át. Az összes oszlop értéke pedig szám legyen, amiben szám szerepel. Az "=" jelre nagyon figyeljünk, mert a gyertyaszám=12 cellatartalommal nehéz számolni. Jobb, ha két cellába kerül. Kis próbálkozás után már profik leszünk.

optimalizáció, értékelés, robot,  tőzsde, forex

Valahogy így kell kinéznie

Majd a nem kívánt oszlopokat töröljük ki. A nyereség vagy éppen a változó (itt a gyertyaszám) értékek szerint rendezzük be a sorokat. Én csak a nyereséget, és a változót szoktam meghagyni. Itt így kettő oszlopunk lesz, de több változónál több is lehet, illetve egyéb (visszaesést, kötésszámot) oszlopot is meg lehet hagyni, és azt is vizsgálni. Bár statisztikusok nagyon mérgesen néznének ezért, de az extrém adatokat ki szoktam szedni, itt a "0 gyertyaszám, és lenulláztuk a számlát" kiszedtem, mert így az értékeket jobban lehet látni a grafikonon.

optimalizáció, értékelés, robot,  tőzsde, forex

Ahogy látni én a minimalista módszerrel a legegyszerűbb pont diagramot választottam. Amit kell, az látni lehet ezen is, aki meg szereti szebbé tenni, annak az Excel nagy lehetőséget ad.

Milyen következtetések vonhatunk le az expert advisor optimalizáció után?

Amit látni kell, hogy három elkülönülő része van a grafikonnak. A 12 feletti rész, ami mínuszos, így azt nem fogjuk használni, és azt is látni, hogy a 7 alatti érték sem lesz jó, bár egy pluszos van, azaz ezzel a sávval sem kell sokat foglalkozni. Ezt olyankor is érdemes vizsgálni, amikor több változót tesztelünk, és a variációk száma nagyon magas lenne, 2000 fölé menne, ahol a tesztek már nem pontosak. Ezért a variációk számát csökkenteni kell. Itt nálunk nem kell erre figyelni, de nagyobb expert advisoroknál már igen, hiszen sok a változó, és nagy átfogás, kis lépésközzel sok-sok variációt ad, ami igencsak lassú lesz…

Egy, az adott grafikonon is megfigyelhető dologra is érdemes gondolni. Az a jó teszteredmény, aminél egy vagy több gócpontban vannak a jó eredmények, illetve a veszteségesek is gócpontokban helyezkednek el. Kis változás az értékben nem hoz nagy eredménybeli változást. Itt két ilyen helyzet van: 12-es beállítás pluszos a 13-as meg erősen mínuszos, illetve a 4-5-6 érték az is ilyen erős ugrásokat ad. Ha ilyennel találkozunk, akkor ezeket az értékeket fenntartással fogadjuk el, illetve ha a legjobb eredmény is ilyen, akkor azt sokkal jobban teszteljük le, mint alap esetben akartuk, több időtáv, több teszt stb..

Ha az egész eredménysor ilyen ide, oda ugráló, akkor sincs gond, csak éppen az a változó nem kap szerepet az eredmény kialakításában. Bár tudom, hogy nem kell elmondani, de csak olyan változót optimalizáljunk, aminek értelme is van, például a magic számot, és hasonló adminisztratív dolgot ne. Annak sincs értelme, hogy a lot méretet végig „optimalizáljuk” 0,1 lot-tól 10 lot-ig 0,1 lépésközzel. Láttam erre példát egyik kereskedőnél. Aki megnézi az alsó füleket, az lát egy olyat, hogy Optimalizációs grafikon. Rákattintva egy grafikonszerűséget kapunk, ami 3D-t is tud.

optimalizáció, értékelés, robot,  tőzsde, forex

Jogosan merül fel a kérdés, hogy akkor minek is az Excel? Csak össze kell hasonlítani az exceles ábrát, és a gyári Metatradert, és látni, hogy lényegesen jobban skálázható az excelben minden. Macerásabb, az igaz, de kis gyakorlat után a gyári grafikont csak a gyors áttekintésre használjuk. Bár ennyi adatot az optimalizációs eredmények fülön is tudunk értékelni, hiszen 15 értéket sorba rakjuk, és már látni azt, amit a grafikonon néztünk, de több tíz, száz esetleg ezer adatnál ez már kevésbé megy. Ezért jobb a grafikonos megjelenítést begyakorolni. 

Egy utolsó gondolat. Mindenképp érdemes a veszteséges értékeket is megjeleníteni, mert így pontosan látjuk, hogy melyek azok, amikkel nem kell foglalkozni. Azokat a pontokat is megmutatja, ahol kis változóbeli változás nagy eredménybeli váltásokat ad, ami, ha nem figyelünk, túloptimalizálást adhat, azaz az adott egy távon esetleg egy extrém eredmény megtéveszt bennünket. Ok, már tudunk optimalizációt futtatni, azt értékelni alapfokon, illetve azt meg is tudjuk jeleníteni.

Foglaljuk össze az eddigieket az expert advisor optimalizációval kapcsolatban:

  • Már tudjuk, hogyan kell egy tesztet lefuttatni, hogy a múltbeli adatokon megnézzük azt, hogy mit is hozott volna, ha ilyen beállítással használjuk az expert advisort
  • Tudjuk, hogyan kell egy vagy több paramétert, változót optimalizálni, hogy kiderüljön melyik az adott időtávon a jobb.
  • Tudjuk azt is, hogyan lehet értékelni a kapott adatokat, illetve azt is tudjuk, hogy a legfontosabb érték a teszt eredményben az adatsor minősége. Sajnos nem futattam le a tesztert az eredeti „gyári” Metatraderes adatsoron, így ennél az expert advisornál nem tudom bemutatni, hogy a jó, és a gyári között ég, és föld a különbség. Több olyan teszteredménybe belefutottam, hogy a Metatraderes adatokon nyerő volt az expert advisor, de a jó, megbízhatón már nem, és így az élő kereskedésben sem volt jó azt az értéket használni.

Van olyan érték, amit nem is kell optimalizálni

Az egyik a Multipler érték, ami szintén gyorsan optimalizálható, hiszen nem túl sok változót akarunk tesztelni. Itt érdemes azt megjegyeznem, hogy általában az alapértékek a jók, így nincs annak értelme, hogy azoktól nagyon-nagy eltéréssel is optimalizáljunk. Itt az alapérték a 3, így például a 200-as értéket biztosan nem fogjuk  tesztelni. Ez nem azt jelenti, hogy ne legyünk bátrak, és távolabbi értékeket ne próbáljunk ki, csak a mértékletességre helyezzünk hangsúlyt. Én 0-15 közti értékekre 1-es lépésközzel tesztelem első körben, ami elégnek tűnik az áttekintéshez. Ha jók az eredmények, akkor ezt lehet pontosítani is, esetleg ha a 15 körüli értékek lesznek a nyerők vagy esetleg (ha erre van mód) akkor kisebb lépésközökkel is lehet próbálkozni.  A teszt lefutott, az eredményeket megkaptuk.

multiper érték, tesztelés, expert, robot,

Bár itt a kevés adat miatt a gyári Metatraderes grafikon is jó lehetne, de gyakorlásképp a kívánt adatokat tegyük inkább Excelbe. Az ilyen lépésnek van egy nagyon jó hatása is: megszokjuk, hogy az adatokat mindig lementjük, itt egy sima txt-be. Ha nem tesszük ezt meg, akkor egy idő után már nem fogunk emlékezni az eredményekre, és újra, és újra teszteljük ugyanazokat a változókat, mert „úgy emlékszem, valami ott jó volt…” Miután a nem kívánt adatokat kiszedtük (nem fontos, de átláthatóbb a kép), akkor elkészíthetjük a grafikont. Itt is, mint a tesztelés összes fázisában azt, és úgy vizsgáljuk, ahogy az nekünk fontos. Én a változót, és a nyereséget hasonlítottam össze. Egyik kollega jelezte nekem, és én is így tapasztaltam, hogy a második adat import, és a táblázat elkészítése harmadannyi idő, mint az elsőé. A gyakorlat teszi a mestert…

multiper érték, tesztelés, expert, robot,

A 9, és a felette lévő eredmények azok, amik számunkra kedvezőbbek. Azt is meg lehet állapítani a Metatraderes „eredmények” táblázatából, hogy a magasabb értékeknél sokkal kevesebb a kötésszám, ami nem egy rossz dolog.

Mivel lehet folytatni az expert advisor tesztelést?

Első gondolat az, hogy esetleg az ATR, és a Multipler értékeket együtt teszteljük le. Igen, ez is egy megoldás, de mivel a 15 értéknél elég szépen csoportosulnak az eredmények, egy tesztet még lefuttatunk. Mi van, ha a 15 feletti értékek még jobbak? Érdemes azt is kipróbálni. Az ilyen extrémebb értékeket mindig fenntartással vizsgáljuk, de ha lehet, futtassunk rá egy tesztet, mert azzal nem vesztünk semmit. A teszteredményeket most csak a Metatrader grafikonján elemezzük, mert nem lettek jobbak, mint a 15 alattiak. A 10-30 közti eredményeket látjuk, és azt is, hogy az első öt utáni értékek (10-15) azok rosszabbak, azaz ezzel a vonallal most nem kell foglalkozni.

multiper érték, tesztelés, expert, robot,

Futottunk egy kört, de nem lett eredménye. Így marad a két érték együttes tesztelése. Az ATR-re 4-12 közti a Multipler értékre a 6-15 közti jött ki jónak. Most próbáljuk optimalizálni a kettőt együtt.

multiper érték, tesztelés, expert, robot,

Így 90 értéket fogunk kapni, aminél két változónk lesz.

Értelmezhető mennyiséggel dolgozzunk az expert advisor tesztelése során

Amíg lefut a munkafolyamat, addig le kell szögezni, hogy nem kizárt, hogy a nem tesztelt értékeknél is jó legyen az eredmény, ha van rá mód, akkor azokat is meg lehet nézni, ha elégedetlenek vagyunk a kapott eredménnyel. Inkább több lépésben, mint túl nagy (1500-2000 feletti) tesztekben tegyük ezt meg. Itt nem jelentett volna különösebb gondot az összes érték együttes tesztelése, de több változó, és nagyobb értékbeli eltérteknél már könnyen kijöhet nagy szám, és azt a Metatrader nem végzi el korrektül. Az eredményre tekintve azt kell mondanom, hogy nem jutottunk sokkal előbbre. Kisebb következtetéseket le lehet vonni, de sokkal okosabbak nem lettünk. Azt látni lehet (kis gyakorlat után, grafikon nélkül is), hogy a Multipler 6….9 közti értékek azok kicsik, vagy éppen veszteségesek.

multiper érték, tesztelés, expert, robot,

Így ezeket nem is fogjuk vizsgálni. Ennyi adatot már mindenképp excelben kell vizsgálni. Az adatok beimportálása, a nem kívántak törlése után a kis eredményeket ki is töröltem, hiszen az adatsorból egyértelműen kiderült, hogy mi okozta ezeket.

multiper érték, tesztelés, expert, robot,

A grafikon, ami szép, de nem nagyon mutat semmi újat

A grafikus megjelenés sem adott semmi pluszt számunkra, így csak annyit tudunk, hogy az ATR 5-12, és a Multipler 9-15 az nyerő eredményeket ad. Amit ilyen helyzetben meg lehet tenni, a visszaesést is figyelni. Ami itt nem vezetett eredményre, mert nem csak a nyereség viszonylag stabil, hanem a visszaesésben sincs kiugróan jó vagy kiugróan rossz eredmény.

Megvan a jó közelítéses eredmény

Általánosságban elmondhatjuk azt, hogy megtaláltuk azt a beállítási zónát, ami számunkra az adott időtávban a legjobbat adta, elfogadható, jó értékű visszaeséssel. Ha nem ilyen szép egyenletes a nyereség, és a visszaesés értéke, és nem tudunk dönteni, hogy melyik értékek a jók, akkor érdemes bevezetni egy saját mutatót is: a nyereséget osszuk el a visszaesés mértékével, és akkor azokat az eredményeket vigyük tovább, ahol ez a saját mutató a magasabb. Mit gondolunk most? Eredménytelen volt a teszt? Nem. Egy olyan helyzetbe kerültünk, ami nagyon jó: nem egy adott pontos érték, hanem egy sáv adja az eredményt. Ha az adott sávokban bármilyen értékre állítjuk az indikátorunkat, akkor a teszt időszakban jó eredményt kaptunk, így biztosabb, hogy nincs agyon optimalizálva a beállítás, hanem van esélye, hogy más időben is működni fog.

Már az expertünk tervezésénél felfedeztük azt, hogy nem biztos, hogy a stopelhelyezésünk a legjobb. Azt kértük a programozótól, hogy legyen olyan beállítási lehetőség, hogy ne a ST pontjára, hanem attól egy bizonyos távolságra tegyük a stopot.

Ötleteljünk, mert jöhet jó ötlet is

Most nézzük meg, hogy ennek van-e realitása, érdemes-e ezt használni. Mivel bizonytalanok vagyunk, és az időnk kevés, így nem egy teljes optimalizálást fogunk futtatni ennek a kiderítésére, hanem egy szűkebbet. Adjuk meg a teszternek az egyik beállítást, amit jónak találtunk, és teszteljük le 10-20-30-40 pipes távolságra a „SL_ráhagy” értéket. Az adatok megadása úgy a legegyszerűbb, ha az előző optimalizálásnál kapott „Optimializációs eredmények” fülön az egyik sorra rákattintunk duplán, és akkor a Metatrader ezeket az eredményeket adja meg automatikusan alapértéknek az expertnek. Én a legnagyobb értéket választottam, ami 2893 dolláros eredménynek felel meg. Ezt nem árt megjegyezni, mert ehhez hasonlítjuk a kapott eredményeket. Ha ennyi vagy magasabb érték is lesz, akkor egy teljes optimalizálást lefuttatunk, ha nem, akkor nem foglalkozunk a témával.

multiper érték, tesztelés, expert, robot,

Amikor lefutott, akkor eléggé elkeserítő dolgot láttam:

multiper érték, tesztelés, expert, robot,

Itt nincs jobb eredmény

Nem változott felfele az érték, és ha már nagyobb 10 pipnél a ráhagyás, akkor óriásit esett az eredmény. De ennyi írogatás után már azt is tudjuk, hogy nem csak a nettó nyereség az ami fontos nekünk, hanem azonos vagy közel azonos eredménynél egyéb értékeket is kell nézegetni. Itt a jobb láthatóság miatt lefuttattam a két értékkel (eredeti, és 10 pip ráhagyás) a tesztet.

multiper érték, tesztelés, expert, robot,

Az eredeti

multiper érték, tesztelés, expert, robot,

És 10 pipes ráhagyással

Mit is kellene nézni? Az eredmény ugyanannyi, de a max. lehívás, és a relatív lehívás az sokkal kisebb lett. Ez már önmagában is egy eredmény, így érdemes lesz erre a beállításra figyelni a későbbiek folyamán.

Követő stoppal jobb lesz az expert advisor eredménye?

A következő tesztelni való érték a követő stop, ahol hasonlóan járjunk el, mint a ráhagyással, először egy (amin az előző tesztet futtattuk) beállításon próbáljuk meg optimalizálni a követőstop értékét, és ha ad valami eredményt, akkor már együtt a többivel. Minden technikánál érdemes többféle stopkezelést, és pozíciómenedzselést végig próbálgatni, hiszen ezekkel esetleg jobb eredményt érhetünk el.

multiper érték, tesztelés, expert, robot,

Nem változott semmi

Ez nem változtatott semmit az eredményeken, így bár lehet rátenni követőstopot, de nem érdemes, hiszen sem a max. lehívást nem csökkentette, sem pedig az eredményt nem növelte. OK, eljutottunk oda, hogy leteszteltük a expert advisort, és egy adott időszakon szép eredményt értünk el. Amire rájöttünk, hogy a követő stop az nem befolyásol semmit, és egy minimális ráhagyást a stopnál érdemes megtenni. Azt is megtudtuk, hogy az ATR 5-12, és a Multipler 9-15 nyerő eredményeket ad. Ebben a zónában lehet tovább kísérletezni a jobb beállításokért, vagy elfogadni az eredményt, és ezek közül eggyel használni a rendszert. Amit újra el kell mondani, hogy ez nem egy expert advisor, bár biztató eredményeket adott, hanem egy indikátor beállítás, amit egy technikánál lehet majd használni. Senki ne futtassa ezt az expert advisort, hiszen így még csak félkész a robotunk.

multiper érték, tesztelés, expert, robot,

Az új grafikon

Ahogy a grafikonon is látni már jobb ránézni, hiszen a nagy megrántás nélkül is elfogadható eredményt ad. Amit megismertünk az, hogy hogyan is kel(ene) egyexpert advisort, expertet megíratni, illetve azzal foglalkoztunk, hogy hogyan kellene azt tesztelni.

A fenti expert advisort lehet fejleszteni még, ilyen ötletek:

  • Figyelje azt, hogy éjszaka ne kössön, mert akkor esetleg laposabb a piac.
  • Másik indikátort is figyeljen.
  • Több idősíkon is  figyelje a jelzéseket.
  • Más pozíciómenedzselést csináljon.
  • Fix célárat, és stopot használjon.
  • Bármi más, ami eszünkbe jut.

Ha valóban kereskedő expert advisort akarunk fejleszteni, akkor a tesztelést, optimalizálást több időkeretben is le kell futtatni illetve jó, ha kontrollként más is teszteli azt, hogy hogyan működik tesztben.

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

please do NOT follow this link