Sajnálatosan a 416-os és 418-as build verziójában súlyos, DLL fájlokkal kapcsolatos hiba van.

Mi az a DLL hívás?

A DLL hívások használata gyakorlatilag azt teszi lehetővé a robotprogramozók számára, hogy olyan funkciókat tegyenek elérhetővé a robotokban, amelyek egyébként a Metatrader programnyelve által önmagában nem lennének használhatóak vagy elérhetőek.

Ilyesfajta megoldást alkalmaznak legtöbbször a kereskedelmi forgalomban eladott robotok értékesítése során – így ha ilyen robotokat vagy indikátorokat használsz, semmiféleképpen ne frissítsd a terminálodat 416-os vagy 418-as verzióra. A 409-es verzió az utolsó, amellyel nincs ilyen jellegű probléma.

Az érintett terminálok

Jelen pillanatban leginkább a legújabb kiadást, vagyis a 418-as verziót.

Néhányan említést tettek arról is, hogy a 416-os build verziót is érinti a probléma.

A MetaQuotes fórumán már – többek közt – én is szóvá tettem a hibát, a poszt írásának idején azonban még mindig nem érkezett válasz.

Közben internetszerte (például itt, itt, és itt) bukkannak fel a problémát szóvá tevő blogbejegyzések, mivel egy-egy ismertebb robot használatát is megakadályozza a hiba.

Konkrétan milyen funkciót érint a hiba?

A hiba a 418-as build verzióban a double, azaz tört típusú változókat érinti. Amennyiben ilyen számot kér le a robot a DLL-ből, teljesen helytelen érték jön vissza.

Példa: 1.4322 helyett „-1.#IND” és-92242943740584613000000″ a visszatérési érték.

A 416-os build verzióban állítólagosan – ezt nem tudom megerősíteni – a DLL eljárásoknak átadott változók sorrendjét érinti a hiba.

Amennyiben a robotod nem használ DLL hívásokat, akkor nincs miért aggódnod.

Mikor javítják ki a hibát?

A Metatrader gyártóján, a MetaQuotes nevű cégen múlik. Mostanában egyre többször előfordul, hogy hibás (vagyis nem eléggé tesztelt)  változatot adnak ki, így nem túl sok reményt fűzök hozzá, hogy túlságosan gyorsan törnék magukat.

Mi a megoldás?

A hivatalos megoldás jelen esetben a gyártón múlik – amennyiben hallgatnak a „népre”, új kiadás formájában javítani fogják a problémát. Ideiglenes fixet jelenthet, ha:

  • visszaállunk korábbi (409 -es vagy annál régebbi) Metatrader verzióra
  • ha saját robotról van szó, kivesszük és helyettesítjük a DLL eljárásait natív MQL eljárásokkal, ahol double értéket érint a program (amennyiben ez lehetséges)