A program típusok
Mikor elkezdi egy MQL4 program írását, a programozónak először is körülbelüli választ kell adnia arra a kérdésre, hogy milyen lesz ez a program. A program tartalma és funkcionalitása teljesen ettől függenek. Az MQL4 alatt 3 fajta program írható: Expert Advisorok, scriptek, és egyéni indikátorok. Bármilyen program, amit a programozó készítet , ezek közül a típusok közül az egyikhez fog tartozni. Ezeknek különböző céljaik és sajátos tulajdonságaik vannak. Részletezzük ezeket a típusokat!
Expert Advisor (EA) egy MQL4-ben kódolt program, amit az ügyfélterminál minden ticknél futtat. Az Expert Advisor fő célja a kereskedés programozott irányítása. Az Expert Advisort a felhasználók kódolják. Nincs az ügyfélterminálban beépített EA.
A script egy olyan MQL4 program, amit az ügyfélterminál csak egyszer hajt végre. A scriptek feladata az olyan műveletek végrehajtása, amiket csak egyszer kell elvégezni. A scripteket a felhasználók kódolják. Ezeket sem szállítják az ügyfélterminállal beépített programokként.
Egyéni indikátor egy MQL4 kódú program, amit az ügyfélterminál indít el és hajt végre minden ticknél. Az alapvető feladata előzetesen meghatározott összefüggések grafikus bemutatása. Az indikátorok nem tudnak kereskedni. Két fajta indikátor van: technikai (beépített) indikátorok és egyéni indikátorok. Az indikátorokat tárgyalni fogjuk azA technikai indikátorok használata és a Az egyéni indikátorok létrehozása részekben.
A programozó attól függően választja ki a program fajtáját, hogy mi lesz ennek a programnak a célja, mert a különböző programtípusoknak eltérő tulajdonságaik és a korlátozásaik vannak.
A programok tulajdonságai
A programvégrehajtás elindítása
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. A Néhány alapfogalom részben megemlítettük már 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. Amint hozzácsatoltál 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 (lásd Különleges függvények). 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.Scriptek. 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 Expert Advisorok scriptek és indikátorok végrehajtásában lévő egyéb különbségeket, a különleges függvényeik tulajdonságait a Különleges függvények részben fogjuk alaposabban tárgyalni.
Kereskedés
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.
Egyidejű használat
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.
Expert Advisor. Egy szimbólumablakhoz csak egy EA-t lehet hozzácsatolni; több Expert Advisors egyidejű használata tilos.
Script. Egy szimbólumablakhoz egyidejűleg csak egy scriptet lehet csatolni; több script egyidejű használata tilos.
Egyéni indikátor. Egyidejűleg egy szimbólumablakhoz több indikátort is lehet csatolni, nem fogják zavarni egymást.
Minden programtípust elindíthatunk egyidejűleg egy szimbólumablakban a típusra vonatkozó korlátozásokkal. Például el tudsz indítani egy EA-t, ugyanabban az ablakban egy scripet és különféle indikátorokat, vagy egy EA-t és egy indikátort. Ellenben nem indíthatsz el különféle EA-kat vagy scripteket.
Ugyanakkor egyidejűleg elindíthatsz ugyanolyan típusú programokat egy szimbólum különböző ablakaiban. Például, ha két Expert Advisor-t akarsz elindítani egy szimbólumon, el tudsz indítani ennek a szimbólumnak az egyik ablakában egy EA-t és egy másikat ugyanazon szimbólum egy másik ablakában. Ebben az esetben az Expert Advisorok egyidejűleg fognak dolgozni. Azonban figyelembe kell venned azt, hogy az EA-k egymásnak ellentmondó kereskedő utasításokat adhatnak. Például az egyik nyit egy megbízást, míg a másik utasítást adhat a bezárására. Ez fölösleges kereskedések sorozatához vezethet és lehet, hogy teljes veszteséggel végződik.
Minden programtípus, amiket elindítunk az ügyfélterminálban, köztük azok is, amik különböző szimbólumok ablakaiban futnak, lehetővé teszik, hogy globális változókat hozzunk létre. Ez lehetővé teszi a gépnek, hogy koordinálja a programok egyidejű operációit. Annak a módját, hogy a globális változókat hogyan használjuk, megtárgyaljuk a Globális változók részben.
A programok elindítása
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 (lásd:Egyszerű MQL4 programok).2. táblázat: Expert Advisorok, scriptek, és egyéni indikátorok fő tulajdonságai
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.