Néhány alapfogalom
Az érdeklődésünk tárgya programok írása MQL4 nyelven. Mielőtt elkezdjük a programírás szabályainak részletes bemutatását, szükséges, hogy leírjuk azokat az alapvető fogalmakat és összefüggéseket, amik egy programot jellemeznek. Közismert, hogy a MetaTrader 4 ügyfél terminál online üzemmódban dolgozik. A helyzet a pénzügyi piacokon folytonosan változik, ez a változás hatással van chartokra az ügyfélterminálban. A tick-ek látják el az ügyfélterminált a piaci árváltozásokkal kapcsolatos információval.
A tick fogalma
A tick egy olyan esemény, ami egy szimbólumot (instrumentum) jellemez a új ár megjelenésének a pillanatában.
A tickeket minden ügyfélterminálnak egy szerver kézbesít, ami a dealing centerrel áll kapcsolatban. Az aktuális piaci helyzetnek megfelelően többé vagy kevésbé gyakran kapjuk a tickeket, de minden esetben amikor az adott devizapár árfolyama megváltozik új tick keletkezik.
Egy alkalmazás az ügyfélterminálban hosszú időszakon keresztül működhet, akár több napon vagy héten keresztül is futhat. Mindegyik alkalmazás azok szerint a szabályok szerint fut, amely szabályokat annak a bizonyos típus programnak meghatároztak. Például, egy Expert Advisor (EA) nem működik folyamatosan. Egy Expert Advisort általában csak abban a pillanatban indít el az ügyfélterminál, amikor egy új tick jön.
Az Expert Advisor működésének az ideje attól függ, hogy milyen programkódot tartalmaz. A normal EA valamennyi információ feldolgozási ciklust tized vagy század másodpercek alatt elvégez. Ezen az időszakon belül az EA végrehajthatott néhány utasítást, egy kereskedelmi döntést hozhatott, elláthatja a kereskedőt egy hasznos információval, stb. Ha az EA befejezte a munkájának ezt a részét várakozik, amíg egy új tick jön. Ez az új tick megint elindítja az Expert Advisort, a program megint végrehajtja a megfelelő műveleteket és visszatér a várakozó üzemódba. Annak a részletes leírását, hogy egy új tick megjelenése hogyan befolyásolja a program futását később tárgyaljuk.
A control (vezérlés) fogalma
Miközben a kód végrehajtás folyamatáról beszélünk programnak az ügyfélterminállal való együttműködése során, használni fogjuk a control (vezérlés) fogalmát.
A vezérlés folyamata a programba előre bekódolt algoritmus végrehajtása és az ügyfélterminál szolgáltatásainak használata. A vezérlés átvihető a programon belül egy kódrészből egy másikba, és a programból az ügyfélterminálra.
A vezérlés működése bizonyos szempontból hasonló ahhoz mikor valaki egy gyűlésen felszóllal. Mint szónok néha szót kap majd átadja a szót másoknak, az ügyfélterminál és a program kölcsönösen adogatják a vezérlést egymásnak. Az ügyfélterminál uralkodik. A státusza magasabb, mint a programnak, mint ahogy egy találkozó elnökének a jogköre nagyobb, mint az egyszerű beszélőé.
Mielőtt a programot elindítjuk, a control (vezérlés) az ügyfélterminál felügyelete alatt van. Amikor egy új tick megjelenik, az ügyfélterminál átadja az irányítást a programnak. A programkód ebben a pillanatban végrehajtódik.
Az ügyfélterminál, miután átadta az irányítást a programnak, nem állítja le a működését. Továbbra is működik maximális teljesítménnyel egész addig, míg a PC-n futtatják. A program csak pillanatnyilag működik, amikor az ügyfélterminál átadta neki a vezérlést (mint amikor egy gyűlés elnöke egész idő alatt folyamatosan irányítja a találkozót, míg az aktuális beszélő csak korlátozott időszakban kap szót).
Miután a program befejezte a műveletet, az irányítást visszaadja az ügyfélterminálnak és nem indítja el újra saját magát. Mindazonáltal, amikor az irányítást már átvette a program, ez maga adja vissza az irányítést az ügyfélterminálnak. Más szóval az ügyfélterminál nem tudja visszavenni az irányítást a programtól. A felhasználó beavatkozása (például, a program bezárása) ezalól kivételt képez.
Miközben programok belső szerkezetét és működését tárgyaljuk, az érdeklődésünk elsősorban a vezérlés programon belüli működése felé irányul. Figyeljük meg a 2. ábrát, ez megmutatja a vezérlés átadását egy programon belül. Az ábrán a körök a program kicsi, logikailag összefüggő töredékeit jelentik, míg a körök között a nyilak azt mutatják, hogy a vezérlés hogyan kerül át egy töredékről egy másikba.
2.
ábra. A vezérlés
átadása egy programon belül
Egy olyan program, ami megkapta a vezérlést az ügyféltermináltól, (a futó program) végrehajtja az algoritmusa szerinti műveleteket. A program programsorokból áll, a programvégrehajtás folyamata a vezérlés sorról sorra felülről lefelé történő átadásából áll. Hogy milyen szabályok szerint írjuk ezeket a programsorokat azt a későbbiekben részletesen fogjuk tárgyalni.
Itt fontos hangsúlyozni, hogy minden logikailag egybefüggő programrész végrehajtódik, például egy matematikai számítás elvégzése, egy üzenet kiírása a képernyőre, egy kereskedelmi megbízás, stb. Amíg a program aktuális része végrehajtódik, a program magánál tartja a vezérlést. Miután az aktuális rész végrehajtását teljesen befejezte, a vezérlést áthelyezi egy másik kódrészletre. Így a vezérlés egy programon belül átkerül az egyik logikailag összefüggő kódrészletből egy másikba, hogy azt is végrehajtsa. Amint az utolsó kódrészt is végrehajtotta a program a vezérlés vissza fog szállni (return) az ügyfélterminálra.
A comment (komment) fogalma
Egy program két fajta adatsorból áll: a programkódból és a programot magyarázó szövegekből.
Comment a programnak egy szabadon választható nem futtatható része.
Tehát a Comment egy programnak szabadon választható része. Ez azt jelenti, hogy egy kész program a kódja szerint fog működni függetlenül attól, hogy megjegyzések vannak-e benne, vagy sem. Mindazonáltal a megjegyzések nagyon megkönnyítik a programkód megértését. Egysoros és több sorból álló megjegyzések ismerünk. Egy egysoros megjegyzés dupla per jelet (//) követően bármilyen karakter lehet. Egy egysoros megjegyzést befejez a soremelés. Egy több sorból álló megjegyzés /* karakterekkel kezdődik és a befejezése */ (lásd a 3. ábrát).Figyelem!
A megjegyzéseket arra használjuk, hogy megmagyarázzuk a programkódot. Egy jó program mindig tartalmaz megjegyzéseket .
3.
ábra. Példa a programban lévő
megjegyzésekre.
A megjegyzéseket a kódolásban széles körben használják. Általában a kódokban szürke színnel jelölik őket. Mi szintén fogunk használni megjegyzéseket, hogy megmagyarázzuk a kódjainkat és érthetőbbé tegyük őket.