Hozzászólások

15 bejegyzés megtekintése - 151-165 / 651
  • Szerző
    Bejegyzés
  • Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: MT4 a Windows 8 – ban #5018

    Dobd át a radu@radu.hu -ra, megnézem – lehet hogy maga az indikátor szar, vagy sérült a fájl.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: MT4 a Windows 8 – ban #5016

    Első olvasatra eléggé x-akta szaga van. Ha más indikátort raksz a Rendszermappa\MQL4\Indicators mappába akkor az látszik?

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Tickstory probléma #4991

    Két problémáról beszélhetünk.

    Tesztelés: a nem 99.9%-os adatok hibáját a 950-es build MT4 verizó okozza. Az oroszok átírtak egy-két dolgot a MT4-ben, ami akadályozza a Tickstory Lite működését. Emiatt a TSL fejlesztői azt javasolják, hogy térj vissza a 910-es MT4 verzióhoz, ahol ilyen probléma nincs.

    Kondíciók exportálása: adtál meg valamilyen fájlnevet az expert megfelelő paraméteréhez? Ha nem, adj meg egy egyszerűt (pl. brokernev.mt4config). Lehet, hogy a brókercég nevében van & jel, ami a fájlnév mentésekor gondot okozhat és így nem születik meg a fájl. Ha ez nem oldja meg a problémádat, jelezd, van még ötletem.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Market is closed! #4990

    A 4 darab GetLastError + AccountFreeMarginCheck ellenőrzés felesleges, egy OnTick-ben elég egyszer lekérdezni. Az eredményt eltárolod és utána azt ellenőrzöd a további feltételekben. (Természetesen más a helyzet, ha egymás után esetlegesen több pozíciót nyitsz egy ticken belül – akkor jó, amit írsz.)

    Hibát (hibás feltétel teljesüléseket) akkor tapasztalhatsz, ha nem veszed figyelembe amit korábban írtam (vagyis hogy egy GetLastError() függvény futtatás kinullázza a hibát).

    A zárás és a nyitás folyamán pedig igen is muszáj ellenőrizned a GetLastError() -t, minden kísérlet után. A kardinális hibák (nincs pénz, nincs kereskedési jog, stb.) esetén le kell állítanod a próbálkozást, mert valószínűtlen hogy ezek megváltoznak a próbálkozások egzakt pillanatában.

    Hibát ezerféle módon tudsz generálni szándékosan: az AccountFreeMarginCheck kapcsán pl. túl nagy lotméretet adsz meg nyitáshoz kicsi egyenleghez, pozíciónyitási hibához pedig BUY pozíció nyitása során Bid értéket használj. Ez utóbbi jellemzően azonnal hibát okoz, amellyel már tudsz tesztelni.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: windows 8 #4982

    Első körben azt ellenőrizd, hogy előfordulhat-e az, hogy a robot valamely eljárása önmagát hívja-e meg. Ez szokott ilyen elszállást okozni a teszteren belül.

    Második körben pedig nézd meg a Rendszermappa\tester\logs\ könyvtárat az elszállás után, hogy van-e az aznapi fájlban valami értékelhető infó. Ha van, akkor másold be egy részét ide!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Adatokat biztosan lehet a Forex Testerbe importálni, emlékeim szerint van erre egy külön panel. Nem foglalkoztam vele annyira mélyen, hogy tudjam: a beimportált adatok alkalmasak-e a változó spreades környezet kialakításához.

    Javaslom, hogy importálj be adatokat (Tickstory Lite-tal tudsz exportálni pl. CSV formátumban is), és próbáld ki!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Market is closed! #4977

    Ha pl. nem csak egy puritán ellenőrzésről van szó, hanem naplózásról, hiba kijelzésről akkor többször lehet szükség a GetLastError() -ra. Ha ilyesmivel nem akarsz foglalkozni, akkor hagyd, egyszerűen csak fel akartam hívni a figyelmed egy gyakori problémára. A puritánság viszont nem mindig elegendő, főleg ha azt akarod tudni hogy a robot mit hisz/mit tesz éppen.

    Szóval a feltevésed helyes, csak az én megvalósítási szokásaim mások, ezért említettem meg.

    A megoldás maga pedig egyszerű, mint a faék:

    errorCode = GetLastError();
    
    if (errorCode == 0) {
       // Minden csudajó
    }
    else {
       // Hibakezelés
    
       Print ("Hiba történt: ", ErrorToString(errorCode));
    }
    

    Az ErrorToString például lehet egy saját hibaszöveg-kezelő függvény, igazából lényegtelen. Ha mindenhova GetLastError() -t írnál, akkor az első hívás után nullázódik a hiba értéke, a további feltételekben pedig ez zavart okozna. Így már okés a leírásom?:)

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Market is closed! #4975

    A szkript elejére csak akkor rakd bele a margin vizsgálatot, ha ez mindenképpen szükséges a többi vizsgálat előtt. Lehet éppen logikus, de nem feltétlen; ha csak gyertyánként vizsgálod a beszálló lehetőségét (pl. indikátorok lezárt értékeit hasonlítva), akkor tökéletesen felesleges minden tickben szabad margint ellenőrizni.

    Én összességében legtöbbször mindig csak akkor végzek szabad margin ellenőrzést, ha közvetlen a pozíciónyitás előtt állok, hiszen addig ameddig kérdéses hogy kötünk-e, felesleges az ellenőrzés – pláne minden tickben.

    Arra figyelj, hogy a GetLastError() függvény meghívásakor a hibakód nullázódik, így a GetLastError() -t követő kódrésznél már új hibakód kerülhet mentésre (bármivel kapcsolatban). Érdemes tehát a függvény visszatérési értékét egy változóba menteni és azt kiértékelni, megelőzendő saját magunk szívatását :)

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Market is closed! #4973

    A pozíciónyitási kísérlet után (ha többször próbálkozol, akkor a próbálkozások között is nyilván) lefuttatod a GetLastError() függvényt. Ha ez nullát ad vissza, akkor sikerült pozíciót nyitnod. Ha nem nullát ad vissza, hanem pl. ERR_MARKET_CLOSED értéket (132) vagy ehhez hasonló súlyos hibát, akkor szakítsd meg a pozíciónyitási rutint és állj le a próbálkozással. Ha ugyebár gyertyánként próbálkozol, akkor a legközelebbiben majd újra megpróbálod.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Ezt nem automatikusan csinálja, így van neki megadva. Ha te programoztad, akkor írd át úgy, hogy csak meghatározott feltételek teljesülésekor nyisson új pozíciót.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: 920 vs 950 #4966

    Első körben ezt a cikket olvasd el. A link tele van további cikkekre való hivatkozással, így ha a cikkben tálalt megoldások közül a jó minőségű visszamenőleges adatok érdekelnek, akkor megtalálod benne a linket azzal kapcsolatban is.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: Market is closed! #4965

    Ha mozog a piac, a robot is fut. Effektíve a piac mozog, és csak a brókered nem hagy kötni, nem a piac van zárva. A végeredmény ugyanaz.

    Ezzel kapcsolatban lekérdezés-szerű megoldás nincsen, ha a piac zárva van, akkor ne próbálj tovább kötni. Ha periodikusan lép be a robotod (pl. gyertyánként egyszer), akkor ez bőven elegendő megoldás. Ha viszont pl. távolságalapú belépéseid vannak (azaz állandó ellenőrzés van és bármikor születhet kötés, akár gyertya közepén is), akkor neked kell kitalálnod valami workaroundot, pl. „market is closed” hibaüzenet esetén csak x percen múlva próbálkozol újra.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: 920 vs 950 #4961

    No problemo :) A te megoldásod viszont csak a frissítés megakadályozására szolgál, korábbi verzióra nem tudsz vele visszaállni. Azaz ha már lefrissült 950-re, akkor nem feltétlen teljes megoldás. Ezért adtam a linket.

    A lényeg, hogy sikerült megoldani!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    Hozzászólás: 920 vs 950 #4959

    A korábban linkelt cikkben pontosan ez van benne, de nem baj :) Ezek szerint nem olvastad el!

15 bejegyzés megtekintése - 151-165 / 651