Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Saját piacfigyelő ablakot – hogyan? › Válasz erre: saját piacfigyelő ablakot – hogyan?
Hello gezatata!
Örülök, hogy tetszik az oldal!
A kérdéseddel kapcsolatban: más instrumentumok árait a legegyszerűbben a MarketInfo eljárással tudod lekérdezni.
double EURGBP_Ask = MarketInfo("EURGBP", MODE_ASK); EURGBP_Bid = MarketInfo("EURGBP", MODE_BID);
Természetesen ez az összes instrumentumra működni fog. Azt vedd figyelembe, hogy az EURUSD tickjeitől függően lehet, hogy nem mindig a legfrissebb adatokat fogod látni. Azaz: ha az EURUSD -nak ritka tickjei vannak, és közben a többi lekérdezett devizapárhoz tartozó árak változnak, akkor valamennyire késve fogod látni az adatokat.
Ha ez nagy problémát jelent, akkor lehet “végtelenítve” használni az expertet, amitől frissebbé válnak az adatlekérdezéseid. Ezt például így tudod megtenni:
while (!IsStopped()) { RefreshRates(); // A műveletek, amiket el akarsz végezni Sleep (100); }
A Sleep() azért kell, mert egyébként olyan gyorsan akarná csinálni az expert a nagy semmit, hogy lefogja a processzort és megmakkan a terminál:)
Végtelenített futás esetén az első ticktől kezdve a robot gyakorlatilag 100 milliszekundumonként fut le, teljesen függetlenül a beérkező tickektől. A RefreshRates() azért kell, hogy a terminál beépített változói, tömbjei (adatai) rendszeresen frissüljenek.
Vedd figyelembe, hogy így hétvégén és zárt piacnál is fut az expert – erre fel kell készíteni esetlegesen. Ha adatokat írsz a naplóba, akkor pl. figyelni kell arra, hogy nehogy több száz megabájt méretűvé duzzadjanak feleslegesen a naplófájlok.
A végtelenített expert esetében addig, ameddig az egy tickre elindult while() véget nem ér, nem fog felugrani F7-re az expert paraméterablaka sem.
Remélem, segítettem!