Egy szokásos program létrehozása
Miután egy programozó sok egyszerű MQL4 alkalmazási programot kódolt, általában egy összetettebb projektekbe kezd, hogy gyakorlati alkalmazás során kényelmesen használható programokat hozzon létre. Az egyszerűbb programok legalább két okból nem elégítik ki a kereskedő (programozó) szükségleteit:
1. Az egyszerű programok funkcionális korlátaik miatt nem látják el a kereskedőt minden szükséges információval és a kereskedést megvalósító eszközzel, ezért az ilyen programok használata nem elég hatékony.
2. Az egyszerű programok kódjának tökéletlensége nehezíti a továbbfejlesztésüket és a szolgáltatásaik kiterjesztését.
Ebben a részben bemutatjuk egy kereskedő Expert Advisor megvalósításának lehetséges alternatíváját, hogy azt felhasználhasd a saját projektjeid alapjaként.
- Egy
szokásos program szerkezete
Egy programban a felhasználói függvények alkalmazása lehetővé teszi, hogy hatékony és rugalmas algoritmusokat hozz létre az információk feldolgozására. Az #include fordítási direktíva lehetővé teszi, hogy (az egyszer megírt és tesztelt) függvényeidet másik programokban is használd. Ezzel a módszerrel létre tudod hozni a saját könyvtáraidat vagy használni tudod más programozók nyílt forráskódú fejlesztéseit.
- A
megbízások nyilvántartása
Ebben a részben egy példát találunk: a Terminal() felhasználói függvényt, melyet egy különálló .mqh kiterjesztésű fájlban valósítunk meg. Az ilyen fájlok tartalma a fordítás során az #include direktíva hatására illesztődik be a programkódba.
- Adat
függvény
Ez a felhasználói függvény hozza létre az EA aktuális működésével kapcsolatos szöveges információ megjelenítését. Ez a függvény helyettesíti a Comment() függvény chart ablakbeli használatát. A függvény egy indikátorként létrehozott segédablakban jeleníti meg az információit.
- Eseménykövető
függvény
A kereskedő a kereskedés során nem mindig vesz észre minden eseményt. Ez az MQL4 program segít abban, hogy észlelj a kereskedési helyzetekben és feltételékben bekövetkező minden változást. Az Events() felhasználói függvény az #include utasítás hatására épül be az EA –ba, és működése során egy másik include fájlnak, az Inform() fájlnak szóló függvényhívásokat hajt végre.
- A
megbízás méretét
meghatározó függvény
Egy megbízás méretének a meghatározása fontos tőke/kockázatkezelési feladat. A Lot() felhasználói függvény egy kis példa ezen feladat megvalósítására.
- A
kereskedési ismertetőjeleket
meghatározó függvény
A kereskedés legfontosabb mozzanata a piacra lépés és a pozíció zárás feltételeinek meghatározása. A kerekedési ismertetőjelek és szabályok feldolgozása minden Expert Advisor alapvető feladatát jelentik. A Criterion() felhasználói függvényt #include utasítás segítségével illesztjük be az EA kódjába. Bemutatjuk, hogy az EA az indikátorértékek alapján hogyan dönti el, hogy az aktuális helyzet megfelele-e valamely kereskedési ismertetőjelnek.
- Kereskedelmi
függvények
Az aktuális helyzetet elemeztük a Criterion() függvénnyel, most végre kell hajtani a megfelelő kereskedelmi műveletet: nyitni, bezárni, módosítani vagy törölni egy függőben levő megbízást. Minden kereskedelmi műveletet különálló felhasználói függvényben helyezünk el: Trade(), Close_All() és Open_Ord(). A csúszó stop megbízás kezelésére a Tral_Stop() felhasználói függvény szolgál.
- Hibafeldolgozó
függvény
A hibafeldolgozás egy Expert Advisor szerves része. El kell dönteni, hogy hogyan dolgozzuk föl a hibakódot. Néhány esetben elegendő a hibáról egy üzenetet bemutatni: a kért szimbólumnak nem ismert az ára, a kereskedelmi kontextus elfoglalt, stb.. Más esetekben célszerű bizonyos idő után megismételni a kereskedelmi kérést. Az Errors() felhasználói függvényben a hibafeldolgozást a ’switch’ operátornak a hibakód alapján kiválasztott variációjában dolgozzuk föl.