Ez a bejegyzés egy idegen nyelvű cikk fordítása. A téma pedig: hogyan dönthető el egy indikátorról, hogy alkalmas-e kereskedésre – ezen belül expert advisorban történő hasznosításra -, vagy nem?

A cikket nem csak programozással foglalkozó olvasóimnak ajánlom.

Általában a legtöbb robot egy vagy több indikátort használ. A Metatrader platform sok beépített indikátorral rendelkezik, használhatunk harmadik forrástól származóakat, de még a sajátunkat is elkészíthetjük (Egyéni indikátorok).

Sajnos azonban nagyon sok interneten található indikátor nem használható biztonsággal robotkereskedés folyamán: egyszerűen azért, mert készítőjük rosszul vagy hanyagul programozta le őket, illetve az adott indikátor kizárólag objektumokat rajzol – ezzel nehezítve a felhasználást. A másik gyakori ok egy-egy indikátor kizárása kapcsán az, hogy az nem csak a jelenből és a múltból, hanem a „jövőből” is használ adatokat saját adatsorainak (puffereinek) kiszámításához.

Például: ha szeretnénk kiszámolni egy 5 periódusú mozgóátlagot 2012.01.01-én 12:00 óra kezdetű gyertya számára, akkor szükségünk lesz a 8:00, 9:00, 10:00, 11:00 és a 12:00 -ás gyertyára.

Most pedig képzeljük el, hogy vannak olyan indikátorok amelyek 8:00-tól 14:00-ig használnak fel gyertyaadatokat ahhoz, hogy a 12 órai gyertyához való mozgóátlagot kirajzolják. Vagyis: kettő gyertyát a jövőből vesznek alapul. Hogyan lehetséges ez? Egyszerűen: kizárólag visszamenőleges adatokon. Nyilván, hiszen egy indikátor sem képes a jövőt megjósolni. Vagyis az ilyen jellegű működéssel rendelkező indikátorok mást fognak mutatni a visszamenőleges chartra helyezéskor és mást a folyamatosan figyelt, aktuális futtatásnál – ugyanis a jelenben az a kettő gyertya amit a jövőből venne alapul, nem létezik.

Néha ezek az indikátorok nem csak a legutolsó gyertyához kapcsolódó értéküket változtatják. Ezt a jelenséget redraw-nak, azaz magyarul újrarajzolásnak nevezzük.

Néhány kivételtől eltekintve ezen indikátorok nem használhatóak robotokhoz.

Egy ilyen kivétel például az MT4-ben alapból benne lévő ZigZag indikátor, amely tudatosan használja ki az újrarajzolást.

Alább 3 egyszerű lépésben segítek leellenőrizni, hogy az általad kiszemelt indikátor alkalmas-e a kereskedésre vagy robotba történő alkalmazásra, avagy nem.

Első lépés – Data ablak

A Data ablak bekapcsolható a Control+D billentyűzetkombinációval, a célzókereszt ikonnal   az eszköztárban illetve a Nézet » Data Ablak menüpontból. A Data ablakban (sic! Helyesebben lenne fordítva Adat ablakként..) minden olyan adat látható, amely az éppen aktuális – kurzor alatt elhelyezkedő – gyertyára, valamint a charton lévő indikátorok gyertyához kapcsolódó adataira jellemző.

Az indikátorok esetében ún. pufferekről beszélhetünk, melyeket én (a fordító) egyszerűen csak adatsornak hívok. Ezen adatsorokból adódik össze egy-egy indikátor egybefüggőnek tűnő vonala, hisztogramja vagy pontsora. A mellékelt képen egy Moving Average, egy Stochastic Oscillator és egy ADX szerepel. A mozgóátlagnak egy, a Stochasticnak kettő (fő vonal és szignál vonal), az ADX-nek pedig három puffere van (ADX, +DI, -DI).

Indikátorpufferek a Data ablakban

Indikátorpufferek a Data ablakban

Ellenőrizd, hogy az indikátor tulajdonságai között a Vizualizáció fülön be van-e pipálva a Megjelenítés a Data ablakban opció.

Megjelenítés a Data ablakban opció

Megjelenítés a Data ablakban opció

Javaslom, hogy egyszerre csak egy – a kiszemelt – indikátort helyezzük fel a chartra, a sok puffer adata ugyanis olykor zavaró lehet.

Amennyiben a fenti erőfeszítések ellenére az indikátornak egyetlen puffere sem jelenik meg a Data ablakban, akkor az – jelenlegi állapotában – alkalmatlan a robotokban történő hasznosításra. Természetesen mint mindig, itt is vannak kivételek: ha például Pivot vonalakat rajzoló indikátorról van szó, akkor az objektumokat lekérdezve képesek lehetünk hasznosítani az adatokat pufferek nélkül is.

A megbízhatóság kapcsán érdemes megjegyezni, hogy a pufferekkel rendelkező indikátorokról feltételezhető biztosabb működés az objektumokat használókkal szemben. A fentiek ellenére az objektumokat rajzoló indikátorok – tesztjeim alapján – vizuális és nem vizuális visszateszt esetén is használhatóak.

Második lépés – aktuális adatok és múltbéli adatok

Amennyiben választott indikátorunk túlélte az első lépést, itt az idő a második – komolyabb – tesztre. Minden jól megírt indikátor teljesen ugyanolyannak kell hogy látszódjon némi használat után és a friss chartra helyezés pillanatában. Lássuk az alábbi képen lévő példát!

Rosszul megírt indikátor

Rosszul megírt indikátor

Amennyiben az indikátort 2008.08.13-án helyezzük fel a chartra, akkor úgy néz ki ahogy az alsóbb indikátor-charton látszik. Viszont ha 2008.08.08-án helyeztük fel a chartra, és vártunk 3 napot akkor úgy néz ki, ahogyan a felsőbb indikátor-charton látszik. A különbség egyértelmű: valós idejű kereskedés során az ilyen és ehhez hasonló indikátor csak pár szignált ad, míg a múltbéli adatokon csak úgy sziporkázik a tökéletesnél tökéletesebb helyeken felbukkanó szignálokkal.

Egy jól megírt indikátor esetében a két chart ablaknak teljesen meg kell egyeznie.

Hogyan végezhető el egy ilyesfajta teszt? Egyszerűen!

  1. Nyiss bármilyen aktív chartot (az alacsony idősíkok jobbak, mert hamarabb kiderülnek az esetleges problémák)
  2. Helyezz el egy függőleges vonalat annál a gyertyánál, ahol a a tesztet kezded.
  3. Csatold a tesztelni kívánt indikátort a chartra!
  4. Várj pár órát (ez az idő függ az idősíktól; minél több gyertyát vársz, annál jobb)
  5. Ha külön ablakos indikátorról van szó, csatold újra az indikátort ugyanazon beállításokkal; ha az indikátor magára a chartra rajzol, akkor nyiss egy ugyanolyan időfelbontású instrumentumot mint az elején, és ott újra rakd rá az indikátort
  6. Hasonlítsd össze – kellő részletességgel – a Data ablakban az indikátorok értékeit, görbéjüket, jelzéseiket, nyilaikat. Amennyiben két chart ablakod van, helyezd őket egymás alá és így végezd el az összehasonlítást!

Jó taktika lehet például a szignálokat adó indikátorok esetében az, hogy a rajzolt nyilak egzakt idejét és árát felírod párszor és ezt újra elvégzed az ismételt chartra helyezéskor. Amennyiben eltéréseket tapasztalsz, az indikátor alkalmatlan a kereskedésre.

Nem kell azonban órákat várnod az eredményre. Ha fel akarod gyorsítani a tesztet, használhatod a Stratégiai teszter Visual mode elnevezésű funkcióját is. Gyakorlatilag bármilyen expert használható, a legjobb mégis egy olyan, ami gyakorlatilag semmit nem csinál. A VisualTester elnevezésű expertet alább tudod letölteni – ő kizárólag csak egy függőleges vonalat rajzol a teszt kezdetét jelző gyertyához.

VisualTester expert advisor

VisualTester expert advisor

Győződj meg arról, hogy a Visual mode be van pipálva. A teszt sebességét meghatározó csúszkát állítsd a bal oldalra, hogy a teszt kezdetén legyen időd felhelyezni az indikátort. A Model megadásánál nem kell a Minden tick módot használnod, az esetek túlnyomó részében elég a Kontroll pontok is. (Nálam a Minden tick mód vált be igazán – a fordító megjegyzése)

Kattints a Start gombra és alkalmazd a fentieket a 3. ponttól! A 4-es pont helyett gyorsítsd fel a tesztet, várj pár pillanatot majd állítsd meg és görgesd vissza balra a chartot.

Harmadik lépés – IndicatorTester

Ez az utolsó lépés segít kiszűrni azokat a rossz indikátorokat, amelyek sikerrel vették az előző két tesztünket.

Az IndicatorTester az expertben való indikátorhasználatot szimulálja. Mindenképpen okosan kell használni, hogy elkerüljük a fals pozitív riasztásokat.

Az expert minden tickben (árváltozásban) összehasonlítja az indikátor puffereit az előző értékeikhez képest, illetve ellenőrzi hogy hány indikátori érték (gyertyaszámban kifejezve) változott meg. A jó indikátorok esetén az eredmény (amit egyszerűen csak Redraw Factornak, azaz újrarajzolási faktornak nevez a szerző) 1 vagy 0 lesz. Az újrarajzolási faktor a megváltozott gyertyák maximum darabszámát jelzi az összes pufferre tekintve, a teljes teszt során.

Ha Redraw Factor értéke 1, az azt jelenti hogy az indikátor csak a legutolsó értékeit változtatja és a befejeződött gyertyákhoz tartozóan nem változtat korábbi értékein. Ha Redraw Factor értéke 0, akkor az indikátor sosem változtatja az értékeit. Jó példa erre egyszerű mozgóátlag (nyitóárra, és nem záróárra alkalmazva!). Mivel a lezárt gyertyák nyitóára a későbbiekben már nem változik, az ezen alapuló számítások eredményei sem változhatnak.

Találkozhatunk olyan jól megírt indikátorokkal is, amelyek esetében a Redraw Factor értéke 2 lesz. Ezen indikátorok pufferei egy vonalként jelennek meg, azonban több mint egy pufferből adódnak össze. Például egy szín a növekedést, míg egy másik a csökkenést jelzi – mindezt egy vonalban, de két különböző pufferben lehet megoldani. Metatrader esetén ezt csak és kizárólag így lehet lehet megoldani – vagyis az indikátor a 2-es érték ellenére alkalmas a robotokban történő használatra.

Az ilyen indikátorok puffereinek vizualizációjának pontokként kellene látszódnia, nem vonalakként. Ráadásul a vonalat fedhetik is egymást, amely ismételten fura viselkedéshez vezethet. Az egymást fedő vonalak a Data ablakon keresztül is észrevehetőek – több, mint egy puffer mutat majd adatokat egyszerre.

Az olyan indikátorok, amelyek több más indikátor felsőbb idősíkú adataiból „táplálkoznak”, magasabb Redraw Factor értéket is adhatnak. Például egy H1 chartra helyezett, több más indikátor H4-es idősíkú adata alapján dolgozó indikátor kiadhat 4-es Redraw Factort 1 helyett (4 darab H1 gyertya 1 H4 gyertyához).

A kiemelkedően magas Redraw Factorral rendelkező indikátorok alkalmatlanok az expertekben való használatra.

Az IndicatorTester használatához szükséges némi információ. Az IndicatorTester.ex4 fájlt a többi expert mellé kell bemásolni az experts\ könyvtárba. Ez az expert nem fog kereskedni, ellenben egy adott indikátor tesztelésére készült – természetesen ehhez meg kell adnunk pár paramétert.

IndicatorName

Ezzel a paraméterrel adhatjuk meg az analizálni kívánt indikátor nevét – ez gyakorlatilag az indikátor fájlneve az ex4 kiterjesztés nélkül. Például: ZigZag, Heiken Ashi. Fontos, hogy az indikátor neve ugyanaz kell hogy legyen, mint a fájlnév. Néha egy-egy rejtőzködő szünet vagy írásjel megzavarhat minket, erre különösen figyeljünk oda!

Beépített indikátort is tesztelhetünk, ezek listáját itt böngészhetjük. Használatukhoz az i betűvel kezdődő nevet alkalmazzuk. A kis- és nagybetű számít!

Egyértelmű okok miatt az i****OnArray és iCustom eljárások nem tesztelhetők!

IndicatorParameters

Ez a paraméter nagyon fontos! Minden egyéni vagy beépített indikátornak adott számú saját paramétere van, amelyet itt tudunk megadni – a szokásostól kissé eltérő módon. A paramétereket egymás után kell írnunk a | (pipe) jel segítségével. A paraméterek sorrendjére különösen figyeljünk: mindenképpen ugyanúgy kell megadnunk őket, ahogy azt az adott indikátor paraméterlistájában tapasztaljuk. Minden olyan paramétert meg kell adnunk, ami nem string (szöveg). A boolean típus (true vagy false) esetén 0 vagy 1 értékkel kell hivatkoznunk: true = 1, false = 0.

Példa: a Parabolic SAR indikátornak két paramétere van: Step és a Maximum. Itt az IndicatorParameters paraméter a következő lesz: 0.02|0.2

Egy 14 napos egyszerű mozgó átlag, melyet záróár alapján állítunk be: 14|0|0|0

Az első nulla az eltolás (shift) értékét adja meg nullaként, a második nulla a módszert állítja egyszerűre, a harmadik pedig a záróár használatát adja meg.

A paraméterek sorrendje és a változók jelentése minden esetben megtalálható az adott indikátor dokumentációs oldalán (mozgóátlag esetén például itt), egyéni indikátor esetén pedig a sorrend adott.

Amennyiben az adott indikátort az alapbeállításaival akarod tesztelni, hagyd üresen ezt a paramétert.

Amennyiben az indikátornak legalább egy szöveges (string) paramétere van, kénytelen vagy az alapbeállításokkal tesztelni – vagyis hagyd üresen ezt a paramétert!

RangeBars

Ezzel a paraméterrel adható meg, hogy pufferenként hány gyertyára visszamenőleg ellenőrizzük a változásokat, vagyis hány gyertyányi pufferadat legyen tárolva az IndicatorTester memóriájában. Nagyobb érték több összehasonlítást és lassabb működést eredményez, azonban fontos tudni hogy egy kisebb érték miatt lehetséges hogy lemaradunk egy múltban történő anomáliáról.

Példák

Megjegyzés: az analizált indikátor a teszt végeztével (vagy a Stop gombra történő kattintáskor) automatikusan megjelenik a charton. Amennyiben működés közben szeretnéd látni az indikátort, neked kell kézzel felhelyezni a chartra!

14-es periódusú egyszerű mozgóátlag nyitóárak alapján

IndicatorName: iMA
IndicatorParameters: 14|0|0|1
RangeBars: 100

Az elmélet szerint a mozgóátlag – nyitóárak alapján – indikátor pufferadata nem változik még az aktuális érték esetében sem. A Redraw Factor értéke nulla.
Az indikátor neve sárga színnel jelenik meg, ami azt jelenti hogy beépített Metatrader indikátorról van szó.

Beépített mozgóátlag indikátor

Beépített mozgóátlag indikátor

Parabolic SAR 0.02 és 0.2-es paraméterekkel

IndicatorName: iSAR
IndicatorParameters: 0.02|02
RangeBars: 100

A teszt kezdetél a Redraw Factor értéke nulla, ami azt jelenti hogy egy már elhelyezett pont nem változtatja a pozícióját. Amikor viszont az ár eléri az éppen aktuális pontot, a PSAR pötty az ellentétes oldalra helyeződik át, és a Redraw Factor értéke 1-re változik.

 

Beépített PSAR indikátor

Beépített PSAR indikátor

ZigZag indikátor alapbeállítással: 12, 5, 3

IndicatorName: ZigZag
IndicatorParameters: 12|5|3
RangeBars: 100

A Redraw Factor magas értéke egyáltalán nem meglepetés. A ZigZag indikátor saját kilengéseit akár nagy számú gyertya elteltével is képes változtatni. Ennek ellenére – kellő odafigyelés mellett -használható expert advisorokban. Minden tick új felállást hozhat, ezért a régmúlt csúcsai-völgyei folyamatos újraolvasást kívánnak.

ZigZag indikátor

ZigZag indikátor

Beépített Fractals indikátor

IndicatorName: iFractals
IndicatorParameters: (üres mező)
RangeBars: 100

Ennek az indikátornak egyáltalán nincs paramétere. Annak ellenére, hogy beépített indikátor a Redraw Factor értéke 3. Sőt, a legutolsó gyertyához tartozó puffer értékei mindig nullás értéket mutatnak. Mit jelent ez? Az, hogy a nyilak nem akkor kerülnek kirajzolásra, amikor az aktuális gyertya mozog, hanem akár 2-3 gyertyával később. Magyarul: a tökéletes szignálok nem is annyira tökéletesek. Ez nem jelenti azt, hogy az indikátor használhatatlan, csak azt hogy klasszikus értelemben – azonnali – buy-sell belépőkre nem alkalmas. Egyéb számításokra, előrejelzésekre ettől függetlenül használható lehet.

Fractals indikátor

Fractals indikátor

Összegzés

  1. Első lépés – az indikátor puffereinek látszódniuk kell a Data ablakban
  2. Második lépés – a múltbéli és aktuális adatok alapján az indikátor ábrázolásainak ugyanúgy kell kinézniük (VisualTester.ex4)
  3. Harmadik lépés – a Redraw Factor értéke 0 vagy 1 kell, hogy legyen pár kivételtől eltekintve (IndicatorTester.ex4)

Ez a bejegyzés egy lengyel Metatrader programozó cikkének fordítása. A cikk és a letölthető eszközök Witold Wozniak engedélyével kerültek fel a blogra.