Forex programozás Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban Saját piacfigyelő ablakot – hogyan?

4 bejegyzés megtekintése - 1-4 / 4
  • Szerző
    Bejegyzés
  • gezatata
    Tag
    Bejegyzések száma: 20

    Kedves Radu

    nagyon örülök az oldaladnak, szívből gratulálok hozzá, számomra hiánypótló

    kezdő MQL4 programozó vagyok, nem rég fejeztem be a magyar nyelvre lefordított „Programozás MQL4” könyvet.
    Szeretnék tanácsot kérni tőled programom megírásához:
    – egy olyan expertet szeretnék összekomponálni amit az EUR/USD devizapár ablakákoz csatolnék és a képernyőre kiírná a EUR/USD, EUR/CHF, EUR/GBP devizapárok valós idejű vételi és eladási árát és az új árak megjelenési idejét. Tulajdon képen egy saját piacfigyelő ablak lenne amiben csak az általam beállított devizapárok valós idejű árai és az új árak megjelenésének ideje lenne kiírva.
    a problémám az, hogy nem tudom hogyan kérjem be az EUR/USD-on futó expertbe az EUR/CHF, EUR/GBP valós idejű árait.
    ebben ha tudnál valami irányt mutatni nekem, annak nagyon örülnék

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    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!

    gezatata
    Tag
    Bejegyzések száma: 20

    nagyon szépen köszönöm a segítséged, erre voltam kíváncsi.
    külön örülök, hogy a példát is megírtad ez így sokat segít.
    – jó érzés tölt el mikor ilyen segítőkész emberrel találkozom

    köszönöm ;o)

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Nincs mit. Az már csak hab a tortán, hogy az avatarod miatt jöttem rá az egész Gravatar rendszer lényegére :D

4 bejegyzés megtekintése - 1-4 / 4
  • Be kell jelentkezni a hozzászóláshoz.