Mt4 Programozas

MT4 Programozás Mesterfokon: Átfogó Útmutató a Sikeres Algoritmikus Kereskedéshez

Üdvözöljük a MetaTrader 4 (MT4) platform programozásának átfogó útmutatójában! Célunk, hogy Ön elsajátítsa az MQL4 nyelv rejtelmeit, és képes legyen saját kereskedési robotok (Expert Advisors – EA-k), egyedi technikai indikátorok és szkriptek fejlesztésére. Az algoritmikus kereskedés napjainkban a pénzügyi piacok egyik legdinamikusabban fejlődő területe, amely lehetőséget teremt a nap 24 órájában történő, érzelmektől mentes kereskedésre. Cikkünkben lépésről lépésre haladunk végig az MQL4 programozás alapjain, a haladó technikákon át egészen a gyakorlati alkalmazásokig. Tartson velünk, és váljon Ön is a sikeres algoritmikus kereskedés mesterévé!

Az MQL4 Programozási Nyelv Alapjai

Az MQL4 (MetaQuotes Language 4) egy C++ alapú programozási nyelv, amelyet kifejezetten a MetaTrader 4 kereskedési platformhoz fejlesztettek ki. Lehetővé teszi a kereskedők számára, hogy automatizálják kereskedési stratégiáikat, egyedi technikai elemzési eszközöket hozzanak létre, és szkriptek segítségével egyszerűsítsék a napi kereskedési feladatokat. Az MQL4 elsajátítása kulcsfontosságú a hatékony és eredményes algoritmikus kereskedéshez.

Az MQL4 Fejlesztői Környezet (MetaEditor)

A programozás első lépése a megfelelő fejlesztői környezet megismerése. Az MT4 platformba integrált MetaEditor szolgál erre a célra. A MetaEditor egy komplex fejlesztői eszköz, amely tartalmaz egy kódszerkesztőt, egy fordítót (compiler), egy hibakeresőt (debugger) és egy beépített súgót. A MetaEditor elindításához nyissa meg az MT4 platformot, kattintson az “Eszközök” menüre, majd válassza a “MetaQuotes Language Editor” opciót, vagy egyszerűen nyomja meg az F4 billentyűt.

A MetaEditor Főbb Elemei

  • Navigátor ablak: Itt találhatók a létrehozott Expert Advisorok, indikátorok, szkriptek, includ fájlok és képek.
  • Mt4 Programozas
  • Szerkesztő ablak: Ebben a területen írhatja és szerkesztheti a forráskódot. A szintaxiskiemelés segíti a kód áttekinthetőségét.
  • Eszköztár: Gyors hozzáférést biztosít a leggyakrabban használt funkciókhoz, mint például új fájl létrehozása, megnyitás, mentés, fordítás és futtatás.
  • Hibaüzenetek ablak: A fordítás során felmerülő hibák és figyelmeztetések itt jelennek meg, segítve a kód javítását.

Első Lépések: Új MQL4 Fájl Létrehozása

Mt4 Programozas

Ahhoz, hogy elkezdhessünk programozni, létre kell hoznunk egy új MQL4 fájlt. A MetaEditorban kattintson az “Új” ikonra az eszköztáron, vagy válassza a “Fájl” menü “Új” opcióját. Ekkor megjelenik egy varázsló, amely segít kiválasztani a létrehozni kívánt fájl típusát (Expert Advisor, Custom Indicator, Script). Válassza ki a kívánt típust, adja meg a fájl nevét, és kattintson a “Befejezés” gombra. Ekkor megnyílik a szerkesztő ablak az új, üres vagy alapértelmezett kódot tartalmazó fájllal.

Az MQL4 Nyelv Alapvető Szintaxisa

Mint minden programozási nyelvnek, az MQL4-nek is megvannak a saját szabályai és szintaxisa. Az alábbiakban áttekintjük a legfontosabb elemeket.

Adattípusok

Az MQL4-ben használt alapvető adattípusok a következők:

  • int: Egész számok (pl.: -10, 0, 5).
  • double: Lebegőpontos számok (pl.: 3.14, -0.001, 2.0).
  • bool: Logikai értékek (true vagy false).
  • string: Szöveges adatok (pl.: “Hello”, “EURUSD”).
  • datetime: Dátum és idő értékek.
  • color: Színértékek.

Változók

A változók tárolók, amelyekben adatokat tárolhatunk. Minden változót deklarálni kell, mielőtt használnánk. A deklaráció során meg kell adnunk a változó adattípusát és a nevét. Például:

int counter;

double price;

string text = "Üdvözlet!";

bool isTrue = true;

Operátorok

Az operátorok segítségével műveleteket végezhetünk a változókon és értékeken. Néhány fontos operátor:

  • Értékadó operátor: = (pl.: counter = 0;)
  • Aritmetikai operátorok: +, -, *, /, % (összeadás, kivonás, szorzás, osztás, maradék)
  • Összehasonlító operátorok: ==, !=, >, <, >=, <= (egyenlő, nem egyenlő, nagyobb, kisebb, nagyobb vagy egyenlő, kisebb vagy egyenlő)
  • Logikai operátorok: && (ÉS), || (VAGY), ! (NEM)

Vezérlési Szerkezetek

A vezérlési szerkezetek határozzák meg a programkód végrehajtásának sorrendjét.

  • Elágazások (if, else if, else): Feltételek alapján különböző kódblokkok végrehajtására szolgálnak.
  • if (price > 1.10) {

    // Ha az ár nagyobb, mint 1.10

    Print("Az ár magasabb, mint 1.10");

    } else if (price < 1.05) {

    // Ha az ár kisebb, mint 1.05

    Print("Az ár alacsonyabb, mint 1.05");

    } else {

    // Minden más esetben

    Print("Az ár 1.05 és 1.10 között van");

    }

  • Ciklusok (for, while, do-while): Kódblokkok ismételt végrehajtására szolgálnak.
  • // For ciklus

    for (int i = 0; i < 10; i++) {

    Print("A számláló értéke: ", i);

    }

    // While ciklus

    int j = 0;

    while (j < 5) {

    Print("A while ciklus futása: ", j);

    Mt4 Programozas

    j++;

    }

    // Do-while ciklus

    int k = 0;

    do {

    Print("A do-while ciklus futása: ", k);

    k++;

    } while (k < 3);

  • Switch utasítás: Több lehetséges eset közötti választásra szolgál.
  • int day = 2;

    switch (day) {

    case 1:

    Print("Hétfő");

    break;

    case 2:

    Print("Kedd");

    break;

    case 3:

    Print("Szerda");

    break;

    default:

    Mt4 Programozas

    Print("Egyéb nap");

    break;

    Mt4 Programozas

    }

Függvények

A függvények kódblokkok, amelyek egy adott feladatot hajtanak végre. Lehetővé teszik a kód modulárisabbá és áttekinthetőbbé tételét. Egy függvény deklarációja tartalmazza a visszatérési típust, a függvény nevét és a paraméterlistát (ha van). Például:

// Egy egyszerű függvény, amely összead két számot

int Add(int a, int b) {

int sum = a + b;

return sum;

}

// A függvény meghívása

int result = Add(5, 3);

Print("Az összeg: ", result); // Eredmény: Az összeg: 8

Expert Advisorok (Kereskedési Robotok) Fejlesztése

Az Expert Advisor (EA) egy automatizált kereskedési rendszer, amely közvetlenül az MT4 platformon fut, és képes kereskedési műveleteket végrehajtani emberi beavatkozás nélkül a beprogramozott stratégia alapján. Az EA-k fejlesztése az MQL4 programozás egyik legnépszerűbb alkalmazási területe.

Mt4 Programozas

Az EA Szerkezete

Egy tipikus EA három fő függvénnyel rendelkezik:

  • OnInit(): Ez a függvény az EA indításakor, vagy a chartra való felhelyezésekor egyszer fut le. Általában inicializálásra használják (pl.: indikátorok létrehozása, globális változók beállítása).
  • OnTick(): Ez a függvény minden egyes tick (árfolyamváltozás) bekövetkezésekor lefut. Itt helyezkedik el a kereskedési logika, a pozíciók megnyitása, zárása és módosítása.
  • OnDeinit(): Ez a függvény az EA eltávolításakor vagy a platform leállításakor fut le. Általában az erőforrások felszabadítására használják (pl.: indikátorok törlése).

Egyszerű Kereskedési Robot Példa

Nézzünk egy nagyon egyszerű példát, amely egy adott árfolyam keresztezés esetén nyit egy vételi pozíciót.

#property copyright "Your Copyright"

#property link "Your Website"

#property version "1.00"

#property strict

extern double TakeProfit = 50;

extern double StopLoss = 20;

extern double Lots = 0.01;

double High[];

int OnInit() {

ArraySetAsSeries(High, true);

CopyHigh(_Symbol, PERIOD_M1, 0, 2, High);

return(INIT_SUCCEEDED);

}

void OnTick() {

CopyHigh(_Symbol, PERIOD_M1, 0, 2, High);

double CurrentPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK);

static double PreviousHigh = High[1];

if (CurrentPrice > PreviousHigh) {

// Árfolyam áttörte az előző gyertya maximumát

int total_orders = OrdersTotal();

if (total_orders < 1) {

// Ha nincs nyitott pozíció, nyitunk egy vételi pozíciót

long ticket = OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 3, SymbolInfoDouble(_Symbol, SYMBOL_ASK) - StopLoss * Point(), SymbolInfoDouble(_Symbol, SYMBOL_ASK) + TakeProfit * Point(), "My Simple EA", 12345, clrGreen);

if (ticket > 0) {

Print("Vételi pozíció nyitva: ", ticket);

} else {

Print("Hiba a vételi pozíció nyitásakor: ", GetLastError());

}

}

}

PreviousHigh = High[0];

}

void OnDeinit(const int reason) {

Print("EA eltávolítva. Ok: ", reason);

}

Fontos megjegyzés: Ez egy nagyon egyszerű példa, amely nem alkalmas éles kereskedésre. Valós kereskedési robotok sokkal komplexebb logikát tartalmaznak, figyelembe véve a kockázatkezelést, a piaci feltételeket és egyéb tényezőket.

Kereskedési Funkciók

Az MQL4 számos beépített függvényt kínál a kereskedési műveletek végrehajtásához:

  • OrderSend(): Új pozíció nyitására szolgál.
  • OrderClose(): Nyitott pozíció bezárására szolgál.
  • OrderModify(): Nyitott pozíció módosítására (stop loss, take profit) szolgál.
  • OrdersTotal(): A nyitott pozíciók számát adja vissza.
  • OrderSelect(): Egy adott pozíció kiválasztására szolgál a nyitott pozíciók listájából.

Egyedi Technikai Indikátorok Fejlesztése

Az egyedi technikai indikátorok lehetővé teszik a kereskedők számára, hogy saját elemzési eszközeiket hozzák létre az MT4 platformon. Az indikátorok vizuálisan jelenítik meg a piaci adatokból számított információkat, segítve a kereskedési döntéseket.

Az Indikátor Szerkezete

Egy egyedi indikátor főbb részei:

  • #property indikátor direktívák: Meghatározzák az indikátor tulajdonságait (pl.: neve, megjelenítése a fő charton vagy egy külön ablakban, pufferek száma).
  • Input paraméterek: A felhasználó által beállítható paraméterek (pl.: periódusok, eltolások).
  • Bufferek: Tömbök, amelyek az indikátor által számított értékeket tárolják.
  • OnInit(): Az indikátor inicializálásakor egyszer fut le (pl.: pufferek beáll