String globális változó?2015-04-12T11:27:59+00:00

Címkézve: 

5 bejegyzés megtekintése - 1-5 / 5
  • Szerző
    Bejegyzés
  • KDani
    Tag
    Bejegyzések száma: 8

    Szia Radu,

    Szeretnék Terminálon belül a robotok között string alapú adatcserét biztosítani, de nagy sebességgel(fájlt ezért nem erőltetem). A global változó csak double lehet. Hogyan tudok hasonló módon string adatot tárolni? A globális változó azért jó itt, mert azt tárolja a rendszer és ha netán újraindul a MT4 akkor is visszatölti. Van valami ötleted? A Windows SDK ESENT könyvtára jó lehetne, de ahhoz, meg nem találtam példát, hogyan tudom bepakolni MT4 alá.

    köszi!!

    Dani

    KDani
    Tag
    Bejegyzések száma: 8

    A végső cél az, hogy ne kösse be a robot ugyanazt a jelet kétszer. A robot fut ugyanazon a devizapáron több idősíkon is és meg kell oldanom, hogy tudjanak róla, ha az egyik már megtalálta a jelet, amit a másik is éppen bekötne.

    Radulovic Attila
    Tag
    Bejegyzések száma: 646

    A több idősíkra történő elkülönített GV adatmentést én úgy szoktam megoldani, hogy külön hozok létre a magic számokon belül idősík-adatokat: pl. ha a robot neve ‘robot’, akkor a következő gv neveket adom:

    • _robot_EURUSD_90_M1_
    • _robot_EURUSD_90_M5_
    • _robot_EURUSD_90_M15_
    • _robot_EURUSD_90_M30_
    • stb.

    A robot a robotneve, az EURUSD az instrumentum, a 90 a magic szám.

    Ezen felül még odafigyelek arra is, hogy egy plusz _t szövegrészt adok hozzá a GV névhez akkor, ha IsTesting módban vagyunk. A neveket az OnInit() eljárásban gyártom le, szuperglobális stringekben tárolom és természetesen – amennyiben backtesztről van szó – OnDeInit() -ben törlöm az érintett GV-ket.

    String adatok tárolását ezen túlmenően régen szintén GV-vel, mostanában ezzel oldom meg. MQL5-re készült, de minimális (tényleg!) munkával MQL4 alatt is csodálatosan működik.

    A ‘régen gv-ben tároltam a stringeket’ alatt arra gondolok, hogy a globális változó nevében gyakorlatilag kis túlzással bármilyen karakter előfordulhat. Definiáltam egy alap sablont, amire lehet matchelni a ciklusos ellenőrzéssel, utána pedig had’ szóljon. Például: a feladat az volt, hogy egy fő instrumentumon futtatott robot további instrumentumokon kössön pozíciót. A bevont alinstrumentumok nevei folyamatosan változtak, azokat muszáj volt GV-ben tárolni. Így az alap változónév – a fenti példa alapján – _robot_EURUSD_90_pozicio_ volt, az adatokat így tároltam:

    _robot_EURUSD_90_pozicio_EURUSD_
    _robot_EURUSD_90_pozicio_GBPUSD_
    _robot_EURUSD_90_pozicio_EURJPY_

    A GV-k értékeiben további hasznos double adatot lehetett tárolni. Volt, hogy oda raktam pl. az érintett robot magic számát, hogy még egyszerűsítsek a keresésen.

    Ez utóbbi helyett ma már az INI megoldást választanám.

    KDani
    Tag
    Bejegyzések száma: 8

    köszi!! Named Pipe-ot használtál már MT4 alatt?

    #import "kernel32.dll" //http://msdn.microsoft.com/en-us/library/windows/desktop/aa365467%28v=vs.85%29.aspx
            int CreateNamedPipeW(string PipeName,int dwOpenMode,int dwPipeMode,int nMaxInstances,int nOutBufferSize,int nInBufferSize,int nDefaultTimeOut,int lpSecurityAttributes);
            int CreateNamedPipeA(string PipeName,int dwOpenMode,int dwPipeMode,int nMaxInstances,int nOutBufferSize,int nInBufferSize,int nDefaultTimeOut,int lpSecurityAttributes);
            int ConnectNamedPipe(int hPipe, int lpOverlapped);
            int CallNamedPipeW(string PipeName, string outBuffer, int outBufferSz, uint& inBuffer[], int inBufferSz, int& bytesRead[], int timeOut);
            int CallNamedPipeA(string PipeName, string outBuffer, int outBufferSz, uint& inBuffer[], int inBufferSz, int& bytesRead[], int timeOut);
            int ReadFile(int hPipe, int& inBuffer[],int NumberOfBytesToRead, int& bytesRead[], int lpOverlapped);
            int WriteFile(int hPipe, string sBuffer, int NumberOfBytesToWrite, int& bytesWritten[], int lpOverlapped);
            int FlushFileBuffers(int hPipe);
            int DisconnectNamedPipe(int hPipe);
            int CloseHandle(int hPipe);
    #import
    Radulovic Attila
    Tag
    Bejegyzések száma: 646

    Egyszer asszem nézegettem, de nem alkalmaztam – nem emlékszem már, miért. Van MQL4/MQL5 lib is belőle a Codebase-n, nézz körbe arrafelé!

5 bejegyzés megtekintése - 1-5 / 5

A hozzászóláshoz jelentkezz be!

Adhatok Neked még több ingyenes tartalmat?

Értesítelek hetente megjelenő új tartalmaimról.

Hozzájárulok, hogy az adatvédelmi nyilatkozat szerint biztonságosan kezeld megadott adataimat, valamint hasznos anyagokat és egyedi ajánlatokat küldj nekem termékeiddel, szolgáltatásaiddal kapcsolatban e-mailben