UniPulse EA – EA Programozás és Kereskedőrobot Fejlesztés MQL4-ben

Kusza kézírásos jegyzetek egy asztalon, a strukturálatlan ötletek és a jól felépített MQL4 indikátor forráskód közötti különbség metaforájaként

UniPulse MQL4 Indikátor – MetaTrader 4 Forex Programozás a Gyakorlatban


Ezen az oldalon a UniPulse EA teljes, éles forráskódját találod — egy konkrét, végigkövethető példát arra, hogyan néz ki a gyakorlatban a kereskedőrobot fejlesztés és az Expert programozás, tehát egy forex robot készítés, attól a pillanattól, hogy egy indikátor jelez, addig, hogy a robot ténylegesen pozíciót nyit vagy zár. Ha az UniPulse EA bemutató oldalát már ismered, ez az oldal annak a mélyebb, kódszintű folytatása.

Az EA szándékosan nem tartalmaz saját trendfelismerő logikát: a döntéseket teljes egészében a UniPulse MQL4 indikátor nyitó- és zárójel-puffereire bízza, saját magát pedig a fegyelmezett pozíciókezelésre — nyitás, zárás, és opcionálisan BreakEven — korlátozza. Ez a felosztás (az indikátor dönt, az EA végrehajt) az egyik legfontosabb alapelve a jól felépített stratégia automatizálásnak: a jelgenerálás és a pozíciókezelés különválasztása nélkül egy stratégia se marad átlátható vagy karbantartható hosszú távon. Ha még nem ismered az indikátor belső működését (MA-keresztezés, ATR-szűrés, gyertyatest-megerősítés), érdemes onnan indulnod, mielőtt belevágnál ebbe az oldalba.

Ez az oldal a forex robot készítés gyakorlati oldalát mutatja be: nem a szintaxist magyarázom sorról sorra, hanem azt, hogyan gondolkodik egy forex programozó, amikor egy indikátor jelzéseiből fegyelmezett, önvédő kereskedési logikát épít — a bemeneti paraméterek validálásától a hibakategorizált riasztási rendszerig. Ez a folyamat a kereskedőrobot fejlesztés és az Expert programozás egyik legjobb gyakorlati bemutatója is egyben.

Ha átugornád a programozási részt és szeretnél egyből a letöltési résznél landolni, csak kattints ide!


UniPulse_EA.mq4 – A Teljes Forráskód Letölthető Formában


1. Az EA architektúrája áttekintésben

Mielőtt bármilyen kereskedési döntés megszületne, érdemes tisztázni, miből épül fel az EA váza: honnan jön az indikátor, milyen adatcsatornákon (puffereken) keresztül beszélget vele az EA, és milyen struktúrába csomagolja a rá vonatkozó beállításokat. Ez a három elem adja a teljes rendszer gerincét.

1.1. Az indikátor mint beágyazott erőforrás

1.2. Puffer-indexek és trendirány-enumok

1.3. Az indikátor-beállítások struktúrája (sIndicatorSettings)


2. Beállítási mezők (Inputs) és globális állapot

Az EA bemeneti mezői hat logikai csoportba rendeződnek — Trade, Trading Periods, BreakEven, Confirmation Timeframe, Execution Timeframe és Alerts —, mindegyik saját elválasztó címkével a beállítások ablakában. A globális változók pedig azt az állapotot tárolják, ami a tick-ek között is emlékezetben marad: hány pozíció fut éppen, mikor jött az utolsó gyertya, milyenek a szimbólum tulajdonságai.

2.1. Kereskedési, időzítési és BreakEven paraméterek

2.2. Globális állapotváltozók


3. OnInit() – Inicializálás és paraméterellenőrzés

Az OnInit() egyszer fut le, amikor az EA-t a chartra húzod, vagy bármelyik bemeneti paramétert módosítod, esetleg a charton instrumentet- vagy idősíkot váltasz.

Két dolgot kell garantálnia, mielőtt bármilyen tick-adat feldolgozása elkezdődhetne: hogy a paraméterek matematikailag értelmesek-e, és hogy a szimbólum tulajdonságai (amikre a teljes kereskedési logika épít) sikeresen betölthetők-e. Ez a szigorú belépési ellenőrzés az egyik legfontosabb lépés minden felelős kereskedőrobot fejlesztés folyamatban.

3.1. Végrehajtási és megerősítési időkeret validálása

3.2. Szimbólum-tulajdonságok betöltése és a beállítás-struktúrák feltöltése


4. OnTick() – A kereskedési ciklus szíve

Az OnTick() az EA szíve — ez a függvény fut le minden egyes árticknél, és ez dönti el, mikor kell zárni egy pozíciót, mikor szabad újat nyitni, és mikor kell csak a BreakEven-t ellenőrizni. A forex programozás szempontjából ez a rész mutatja meg igazán, miért nem elég csak „megírni” egy jelkövető logikát: fegyelmezett sorrendhez és állapotkezeléshez van szükség, hogy a rendszer soha ne nyisson és zárjon egyszerre ellentmondó módon. Ez a lépésről lépésre felépülő logika a valódi kereskedőrobot fejlesztés és algoritmikus kereskedés egyik legjobb tanulságos példája.

4.1. Élő pozíciók számlálása és új gyertya észlelése

4.2. Nyitott pozíciók zárása jelek alapján

4.3. Új pozíció nyitása és a megerősítő időkeret szerepe

4.4. BreakEven meghívása minden ticken


5. Segédfüggvények – Pozíciók nyitása és zárása

5.1. getTradeCount() – nyitott pozíciók számbavétele

5.2. openTrade() – új pozíció nyitása védőellenőrzésekkel

5.3. closeTrade() – pozíciók zárása


6. Segédfüggvények – BreakEven és kereskedési idősáv

6.1. getProfitPointAndStopPrice() és checkBreakEven() – a nullázási logika

6.2. isTradingTime() – kereskedési idősáv, éjszakán átnyúló tartománnyal


7. Segédfüggvények – Szimbólum-tulajdonságok és biztonságos indikátor-hívás

7.1. loadSymbolProperties() – pont, tick-méret és lot-határok betöltése

7.2. getDecimalDigits() és getLotDigits() – lot-méret tizedesjegy-pontosság

7.3. getUniPulseValue() – biztonságos iCustom() hívás


8. Riasztási rendszer – sendCustomAlert()

Egy éles kereskedési robotnál a hibakezelés ugyanolyan fontos, mint maga a kereskedési logika — de egy riasztás-spam ugyanolyan veszélyes, mint a riasztás hiánya, mert elfedi a valóban fontos üzeneteket. A sendCustomAlert() ezért nem egyszerűen kiírja az üzenetet, hanem kategorizáltan (Common, Trade Opening, Trade Modification, Trade Closing) figyeli, mikor riasztott utoljára.


9. Összefoglalás és Letöltés – Az UniPulse EA Telepítése

Ezzel a teljes UniPulse EA forráskódját és a mögötte húzódó logikát végigjártuk — a beágyazott indikátor-erőforrástól és a puffer-architektúrától kezdve, az OnInit() és OnTick() működésén át, egészen a pozíciókezelő, BreakEven- és riasztási segédfüggvényekig. Mivel az EA a UniPulse indikátorra épül, érdemes mindkét oldalt együtt kezelni: ha egy jelzés nem úgy viselkedik, ahogy vártad, gyakran az indikátor oldalán található a magyarázat, nem az EA oldalán.

9.1. A csomag tartalma

  • UniPulse_EA.mq4 – a teljes, kommentezett forráskód, amit ezen az oldalon is végigjártunk
  • UniPulse_EA.ex4 – előre lefordított, futtatható verzió, a UniPulse indikátorral együtt beágyazva (nem szükséges hozzá külön indikátor-fájl)

9.2. Telepítés lépésről lépésre

9.2.1. Ha a kész .ex4 fájlt használnád:

Másold az UniPulse_EA.ex4 fájlt a MetaTrader 4 adatmappájának MQL4/Experts almappájába. Az adatmappát a terminálon belül a Fájl → Rendszermappa megnyitása menüponttal találod meg legegyszerűbben.

9.2.2. Ha a forráskódot szeretnéd magad lefordítani:

Ehhez a UniPulse indikátor .ex4 fájljának is jelen kell lennie a MQL4/Indicators mappában, pontosan a fájl elején található UNIPULSE_PATH define által megadott elérési úton — enélkül a fordítás a #resource direktívánál hibával leáll. Ha ez megvan

  1. Másold a UniPulse_EA.mq4 fájlt a MQL4/Experts mappába.
  2. Nyisd meg a MetaEditor-t (MT4-ben az Eszközök → MQL4 Szerkesztő, vagy egyszerűen F4).
  3. Nyisd meg benne a UniPulse_EA.mq4 fájlt, és nyomj F7-et a fordításhoz.
  4. Ha a fordítás „0 error(s), 0 warning(s)” eredménnyel zárul, az EA készen áll a használatra.

9.2.3. Az EA aktiválása a charton:

Indítsd újra a MetaTrader 4-et (vagy frissítsd a Navigátor ablakot), majd húzd rá a UniPulse EA-t a kívánt szimbólum és időkeret charjára a Navigátor ablakból. A beállítások fülön ellenőrizd, hogy az Algo Trading (automatikus kereskedés) engedélyezve van-e a terminálban.

9.3. A programfájlok letöltése: