Az MQL4 alatt 3 fajta program írható: Expert Advisorok, scriptek, és egyéni indikátorok. Ezeknek különböző céljaik és sajátos tulajdonságaik vannak. Részletezzük ezeket a típusokat!
Van egy olyan ismertetőjel, ami megkülönbözteti az Expert Advisort és egyéni indikátorokat a scriptektől. Ez a futástartamuk.
Korábban említettük, hogy a programok működési ideje a tickek sokszorosa. Ez a kijelentést igaz EA-kra és az egyéni indikátorokra, de ez az állítás a scriptekre hamis. Expert Advisor és egyéni indikátor esetén amint hozzácsatolunk egy programot (EA vagy az egyéni indikátor) a charthoz a szimbólumablakban a program végrehajt néhány előkészítő műveletet és várja, hogy egy tick érkezzen. Amint egy új tick jön, a programot el fogja indítani az ügyfélterminál, azután ez elvégez minden szükséges műveletet, amit előírt az algoritmusa, és végül átadja az irányítást az ügyfélterminálnak, vagyis várja a következő ticket.
Ha egy új tick jön, még mielőtt a program befejeződne, ez nincs hatással a programvégrehajtásra - a program továbbra is az algoritmusa szerint működik és csak befejezése után adja át az irányítást az ügyfélterminálnak. Ezért a tickek közül nem mindegyik végződik azzal, hogy elindít egy EA-t vagy egy egyéni indikátort, csak azok, amelyek akkor érkeznek, amikor az irányítás az ügyfélterminálnál van, és a program várakozik.
Az új tick elindítja a programot. Így egy Expert Advisor vagy egy egyéni indikátor hosszú időszakon keresztül működik miután csatolták a szimbólumablakhoz és időnként lefut (az érkező tickek hatására).
Ezenkívül egy Expert Advisor a végrehajtás sorrendjében különbözik egy indikátortól a program első indításánál. Ezt a különbséget meghatározzák a különleges függvények speciális tulajdonságai egy bizonyos típus programban. Ha egyszer csatoltak a szimbólumablakhoz egy Expert Advisort, ez elvégzi a szükséges előkészületeket (init() függvény) és készenlétbe helyezi magát, várja az első tick megérkezését amikor lefut a start() függvény. Az EA-tól eltérően az egyéni indikátor mindkét függvényt (init() és start() függvényeket) végrehajtja azért , hogy elvégezze az indikátorértékek első, előzetes kiszámítását. Később, az új tickeknél mindkét program már csak a start() függvényt hajtja végre az algoritmusa szerint.
Az Expert Advisortól vagy az indikátoroktól eltérően, egy script végrehajtása el fog indulni az új tickre való várakozás nélkül, közvetlenül azután miután hozzácsatolták egy szimbólumablakhoz. A script egész kódját pontosan végre fogja hajtani. Miután minden programsort végrehajtott, a script befejezi a műveleteit és eltávolításra kerül a szimbólumablakból. Scriptet használhatunk, ha nyitni vagy zárni akarunk egy megbízást, szöveget akarunk a képernyőre írni vagy grafikus objektumokat akarunk megjeleníteni stb.
Az egyik fő ismertetőjel, ami a fenti programokat jellemzi az a tulajdonságuk, hogy kereskedelmi utasításokat adhatnak. Egy kereskedelmi utasítás egy olyan parancs, amit egy program ad a kereskedő szervernek, hogy az nyisson, zárjon, vagy módosítson egy megbízást. Kereskedelmi utasításokra a programokban beépített függvényeket használunk, ezeket a függvényeket nevezzük kereskedelmi függvényeknek.
Csupán az Expert Advisoroknak és a scripteknek van a joguk ahhoz, hogy kereskedő függvényeket használjanak (csak ha ezt a megfelelő opciót lehetővé teszik az EA/script beállításában). Tilos egyéni indikátorokban használni a kereskedő függvényeket.
A különböző típusú programok abban is különböznek egymástól, hogy egyidejűleg mennyit lehet belőlük csatolni egy szimbólumablakhoz.
Minden típusú programot csak a felhasználó indíthat el. Az MQL4-ben nem tudsz hívni egy Expert Advisort, egy scriptet, vagy egy indikátort programozott végrehajtással.
Az egyetlen kivétel az iCustom() függvény, ami lehetővé teszi, hogy adatot kérj egy egyéni indikátortól, és technikai indikátorok függvényei ugyanezen célból. Az iCustom() függvény hívása vagy a technikai indikátorok függvényei nem teszik lehetővé, hogy a hívott indikátor a képernyőre rajzoljon.
A program tulajdonsága | Expert Advisor | Script | Indikátor |
Futási idő | Folyamatosan | Egyszer | Folyamatosan |
Kereskedés | Megengedett | Megengedett | Tiltott |
Vonalak rajzolása | Nem | Nem | Igen |
Ugyanazon típus több programjának egyidejű használata | Tiltott | Tiltott | Megengedett |
Végrehajtás kérése másik programtól | Tiltott | Tiltott | Tiltott |
Tehát, ha egy olyan programot akarunk, ami egy bizonyos algoritmus szerint kereskedik, nekünk írnunk kell egy EA-t vagy egy scriptet. Azonban ha azt akarjuk, hogy legyen egy bizonyos információnk, ami grafikusan mutatja az eseményeket, akkor nekünk egy indikátort kell használnunk.