Programok létrehozása és használata
A MetaEditor segítségével MQL4-ben írt alkalmazási programokat, Expert Advisort, scripteket és indikátorokat hozunk létre.
A Meta Editor (MetaEditor.exe végrehajtható állomány) az ügyfélterminál része és a terminál gyökérkönyvtárában helyezkedik el. A Meta Editor Userguide-ját az F1 gomb hozza elő. Ez általános felvilágosítást tartalmaz, ami nélkülözhetetlen az új programok létrehozásához. A szerkesztőt meg tudod nyitni, ha a MetaEditor.exe állománynévre kattintasz, vagy az asztalon előzetesen elhelyezett parancsikon segítségével is.
Az ügyfélterminál szerkezete
A munka megkönnyítésére Meta Editornak beépített eszköztárai vannak: (Ctrl+D) navigátor és (Ctrl+T) szerszámosláda.
25. ábra .A Meta Editorban levő ablakok
elhelyezkedése.
A program szövege a szerkesztőablakban helyezkedik el, az eszköztár ablakok csak kiegészítők. A navigátornak és a szerszámosládának mozgatható határaik vannak a szerkesztőben, és az és gombokkal lehet előhozni/elrejteni őket.
Egy új program létrehozása
Általában egy új program létrehozás alatt a szerszámosládát és navigátorablakokat elrejtik. Így a felhasználó a figyelmét programra koncentrálhatja. Létrehozhatunk egy új programot, ha használjuk a szerkesztőmenü File>> Create opcióját vagy az új fájl létrehozása gombot .Ezek után az Expert Advisor Wizard fel fogj ajánlania a programtípusok listáját , hogy ki tudd választani a létrehozandó fájl típusát:
26. ábra. A létrehozandó program típusának kiválasztása.
Ha létre akarsz hozni egy Expert Advisort, válaszd az Expert Advisor opciót és kattints a Nextre. A következő ablakba írd be a létrehozandó Expert Advisor nevét. Legyen ez a név a create.mq4
Figyelem!
A létrehozandó fájl nevét a kiterjesztése nélkül írjuk.
Az
Expert Advisor Wizard egy többmezős ablakot fog nyitni,
töltsük azt ki:
27.
ábra. Egy Expert Advisor általános
paramétereinek az ablaka.
Az
Ok-ra
kattintva a főablakban
egy szöveg fog megjelenni és a
létrehozott Expert Advisor create.mq4 teljes
neve meg fog jelenni a fájlrendszerben és a
navigátorablakban.
28. ábra. A fájlrendszerben és a
navigátorablakban is láthatjuk a
létrehozott Expert Advisor fájlt.
Lássuk a programszöveget, amit a Meta Editorlétrehozott :
//+------------------------------------------------------------------+
//| create.mq4 |
//| John Smith |
//| www.company.com |
//+------------------------------------------------------------------+
#property copyright "John Smith"
#property link "www.company.com"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
Láthatjuk, hogy ez a kód főleg megjegyzéseket tartalmaz. Már tudjuk, hogy a megjegyzések egy program nem kötelező részét alkotják és a megjegyzések szövegét nem hajtja végre a program.
Van három különleges függvény a programban: init(), start() és deinit(). Mindegyik függvény csak egy operátort tartalmaz - return(0) – ez az operátor kilépés a függvényből. Ez a programkód, amit az Expert Advisor Wizard létrehozott, csak egy minta, amely alapján a programozó létre tud hozni egy új programot. A végső programkód kötelezően nem kell, hogy tartalmazza mindegyik különleges függvényt. Ezek a mintában jelen vannak, mert egy szokásos, közepes szintű program tartalmazza ezek közül a függvények közül mindegyiket. Ha a függvények közül bármelyiket nem fogjuk használni, akkor azt törölni lehet.
A programkódból a következő sorokat szintén kihagyhatjuk:
#property copyright "John Smith"
#property link "www.company.com"
Bár ez a program gyakorlatilag nem használható, azt a szintaxis szempontjából helyesen írták. Ezt a programot lefordíthatnánk és elindíthatnánk. Az végrehajtódna, mint bármilyen másik program (bár számításokat nem végezne, mert ilyenek nincsenek a forráskódban).
A program megjelenése
A programokban erősen ajánlott a megjegyzéseket használni és néhány esetben ez nagyon fontos. Azt hangsúlyozni kell, hogy egy programozó nem csak programokat ír de olvassa is őket. Néha jelentős nehézséget okoz egy program olvasása. A tapasztalat azt mutatja, hogy sok programozó az érvelő logikák, ami alapján a programot fejlesztette, el szokta felejteni (vagy egy másik programozó írta a terméket) és megjegyzések nélkül nehéz, néha lehetetlen, megérteni a kódrészeket.
Figyelem!
Egy helyesen kódolt program minden esetben tartalmaz megjegyzéseket.
A megjegyzések fő előnyei hogy:
- Először, a megjegyzések elválasztják a logikailag összefüggő programrészeket egymástól. Sokkal könnyebb olvasni egy helyesen formázott szöveget egy folyamatos szövegnél.
- Másodjára a megjegyzések lehetővé teszik, hogy a programozó egyszerű szavakban megmagyarázza, mit gondolt a kódsorok írásakor.
- Harmadszor egy program felső részében a programmal kapcsolatos általános információt részletezhetünk: a szerző nevét és kapcsolatatát (weboldal, e-mail, stb.), a program célját (egy teljes kereskedő program vagy egy könyvtári függvény), a fő jellemzőit és korlátozásait és egyéb hasznos információkat.
1. Egy megjegyzéssor-hossznak nem szabad túlnyúlni a főablakon. Ez a korlátozás nem a nyelvi szintaxis követelménye, de egy olyan programot olvasni, ami túlnyúlik a szegélyen, nem kényelmes. Bármilyen hosszú sort több sorba választhatunk, míg teljesen láthatók nem lesznek a képernyőn. Egy 1024 x 768 pixel felbontású monitoron a legnagyobb sorhossz 118 karakter.
2. Változók deklarációját célszerű a programkezdetnél elhelyezni. Ajánlott mindegyik változóhoz megjegyzést írni : röviden megmagyarázzni a jelentésüket és, ha szükséges, a használat sajátosságait.
3. Mindegyik operátort célszerű külön sorban elhelyezni.
4. Ha megjegyzés van a sorban, azt a 76 pozícióból kell elindítani ( 17” monitor 1024 x 768 felbontással). Ez a követelmény nem kötelező. Például, ha egy kódsor 80 karakter, ez nem szükséges megosztani két sorba, a megjegyzést indíthatjuk a 81. karaktertől. Általában a program kódrésze 50 karakter hosszú sorokat tartalmaz és a megjegyzések, mint egy szövegoszlop a képernyő jobb szélén helyezkednek el.
5. A logikailag különálló részek elválasztására teljes szélességben kötőjelekből álló folytonos karakter-sort használnak (118 karakter).
6. Amikor kapcsos zárójeleket használnak, egy tabulálás méretű behúzást kell használni (általában 3 karakter).
Lássuk, hogyan néz ki egy Expert Advisor programkód. Ebben az esetben a programalgoritmus logikáját nem tárgyaljuk. Csak a program megjelenésével foglalkozunk. Egy program (Expert Advisor create.mq4) kinézete a következő lehet://--------------------------------------------------------------------
// create.mq4
// Az MQL 4 könyben használtpélda.
//--------------------------------------------------------------------
int Count=0; // Globális változó
//--------------------------------------------------------------------
int init() // Az init() különleges függvény
{
Alert ("Az init() függvény elindult"); // Riasztás
return; // Kilépés az init()-ből
}
//--------------------------------------------------------------------
int start() // A start() függvény
{
double Price = Bid; // Helyi változó
Count++; // Tick számláló
Alert("New tick ",Count," Price = ",Price);// Riasztás
return; // Kilépés a start() függvényből
}
//--------------------------------------------------------------------
int deinit() // A deinit() függvény
{
Alert ("Funct. deinit() triggered at exit"); // Riasztás
return; // kilépés a deinit()-ből
}
//--------------------------------------------------------------------
Látható, hogy a programot több blokkra osztották és megjegyzésekkel (folyamatos sorokkal) tagolták. Ez egy módszer arra, hogy elválasszuk a különleges függvényeket és a program fejrészét:
//--------------------------------------------------------------------
A változókat egy olyan különálló blokkban deklarálták, ahol mindegyik változót leírtak. Néha a programok olyan változókat tartalmaznak, melyek magyarázatához többen sort kell használni. Ez ritka eset, de ha ez történik, ezt a megjegyzést mindenféleképpen el kell helyezni, különben nem csak egy másik programozó, de maga a szerző sem lesz képes arra, hogy egy idő után megértse ezt a részt.
Mindegyik kódsor jobb oldala tartalmaz egy magyarázó megjegyzést. A megjegyzések fontosságát érzékeltethetjük, ha egy program nem tartalmaz ilyeneket akkor problémát okoz az algoritmus megértése a program olvasás közben. Például, ha ugyanazt a kódot mutatjuk be megjegyzések és blokkelválasztás nélkül, nehezebb lesz olvasni azt, bár a program eléggé egyszerű és rövid:
int Count=0;
int init() {
Alert (Funct. init() triggered at start");
return; }
int start() {
double Price = Bid;
Count++;
Alert("New tick ",Count," Price = ",Price);
return; }
int deinit(){
Alert (""Funct. deinit() triggered at exit");
return;}
A program lefordítása
Hogy gyakorlatban használhatóvá tegyünk egy programot, azt le kell fordítani. Erre a gombot vagy az F5-öt kell használni a Meta Editorban. Ha a program nem tartalmaz semmilyen hibát, a fordítás megtörténik és egy üzenet fog a szerszámosládában megjelenni:
29.
ábra. Szerkesztőüzenet egy sikeres
programfordításról.
Ezután az új fájl, a create.ex4 me gfog jelenni a megfelelő mappában (ebben az esetben Terminal_directory\experts). Ez egy olyan program, ami készen áll a végrehajtásra a MetaTrader4 ügyfélterminálban. A fordítása alatt ugyanazon néven a program forrásszövegének az utolsó verziója (ez esetben ez a fájl a create.mq4) ugyanabba a mappába lesz elmentve.
Ugyanakkor a létrehozott Expert Advisor neve meg fog jelenni az ügyfélterminál navigátor-ablakának az Expert Advisors szekciójában:
30. ábra. Láthatjuk az
ügyfélterminál
navigátor-ablakában levő Expert
Advisorok nevét.
Ha a fordítás alatt hibát talál a programban, a Meta Editor a megfelelő hibaüzenetet fogja mutatni. Ezesetben vissza kell térni a forrásszöveghez, ki kell javítani a hibákat és meg kell kísérelni még egyszer lefordítani a programot. A sikeres fordítás csak akkor lehetséges, ha a programban nincsenek hibák.
Egy program gyakorlati használata
Ha egy alkalmazási program (Expert Advisor, script vagy indikátor) sikeresen le lett fordítva és a neve megjelent az ügyfélterminál navigátor-ablakában, azt a gyakorlatban használhatjuk. Készen áll arra, hogy az ikont az egérrel áthúzzuk navigátorablakból a szimbólumablakba ('drag & drop' módszer). Ezzel a művelettel a programot hozzá csatoltuk egy szimbólumablakhoz és a végrehajtása indult.
Egy Expert Advisor és egy indikátor addig fog működni , amíg a felhasználó kézzel leállítja a programvégrehajtást. Egy szokásos script abba fogja hagyni a működését miután végrehajtotta az algoritmusát.
Még egyszer felhívjuk a figyelmedet:
Figyelem!
Bármilyen alkalmazási programot (Expert Advisor, indikátor, script) csak arra tudod használni, hogy a MetaTrader 4 Client Terminal részeként kereskedjen, amikor ez az Interneten keresztül a szerverhez kapcsolódik (a dealing centerhez). A programok közül egyik sem települ a szerverre és nem használhatók más fejlesztésű ügyfélterminálokban.
Más szóval, ha a kereskedő használni akar valamilyen alkalmazási programot, neki fel kell kapcsolnia a számítógépét, el kell indítania a MetaTrader 4 Client Terminalt és el kell indítania az *.ex4 állományt egy szimbólum ablakban. A program működése alatt (az algoritmusától függően) megbízásokat küld a szerverre miközben a kereskedelmi menedzsmentet vezeti.