Hozzászólások

9 bejegyzés megtekintése - 16-24 / 24
  • Szerző
    Bejegyzés
  • Norbert
    Tag
    Bejegyzések száma: 35

    Megtaláltam ezt is:
    http://forum.mql4.com/6778#98936

    Az init függvény előtt beillesztem ezt a kódot, majd:

    int init(){
       string hello = wget(URL HELYE);
       Alert(hello);
    }

    …futtatáskor Alertet nem kapok, hanem az történik, hogy a Napló kiírja: a robotot betöltötte, majd a következő üzenet azonnal: leszedte a chart-ról. Mindenféle hibaüzenet nélkül.

    Van valakinek ötlete?
    Gondolom csak valami apróságon bukik a dolog.

    Norbert
    Tag
    Bejegyzések száma: 35

    Jelenleg végtelenített ciklussal befagyasztom a programot init()-ben, ha az accountnumber nem egyezik, de ez nagyon ronda így :/

    Ez az eljárás tulajdonképpen lopásgátlóként funkcionál.

    Norbert
    Tag
    Bejegyzések száma: 35

    Megvan a válasz: az OrderSelect() a terminalban tárolt pool adatait szedi ki, tehát nem lassítja a szervert.
    http://www.metatrader4.com/forum/12049

    Norbert
    Tag
    Bejegyzések száma: 35
    Hozzászólás: Nem indul az EA #1634

    Belenéztem megint az új brókernél az új terminálba, és csodák csodájára működik, már napok óta. Amikor a fórumbejegyzést írtam csütörtökön, nem működött, de a charton minden bizonnyal rajta hagytam az EA-t. Csütörtök délutántól sajnos más dolgom volt, és nem tudtam ezzel foglalkozni – aztán jött a hétvége, és rá se néztem. Ma felcsatlakoztam, és a számlatörténetből látom, hogy mikor indult be a robot: csütörtök este volt az első kötés.

    Ez hogyan lehetséges?
    Most minden rendben van, de zavar, hogy nem tudom miért nem indult el. Ennyiből bármikor lekapcsolhat?

    Legközelebb talán szeptember közepén leszek Szegeden. Ha megyek, mindenképpen szólok!

    Norbert
    Tag
    Bejegyzések száma: 35

    Hogy világos legyen, leírom hogyan oldottam meg SL és TP nélkül, és miért kellett hozzá egy tömb, meg fileok. A robot a Martingale-módszeren alapul, amire a korábbi kérdéseimet figyelembe véve talán nyilvánvaló :) Csak vételekkel foglalkozok, viszont az egész folyamatot ciklusokra bontom.

    Van egy tömböm deklarálva, amiben az átlagértékek lesznek sorban, ciklusonként.

    EA indításnál indul az első ciklus. Vétel!
    Létrehozok egy filet a ciklus id-jével 0.txt néven (merthogy ez a 0. ciklus), és beleírom az első vétel ticketjét, meg egy pontosvesszőt. A ciklusátlagok tömb nulladik elemének megadom azt, hogy 0.

    Tehát minden ciklushoz tartozni fog egy txt és egy tömb elem.
    Nyílnak a kereskedések sorban (egy dinamikus rács szerint), bővül a txt, és amikor lezárul egy ciklus, akkor a következő történik:
    – a ciklushoz tartozó txt ticketjeit sorban kiolvassuk
    – megnézzük a hozzájuk tartozó vételi szintet, és átlagoljuk őket
    – hozzáadjuk a spread-et és az elvárt nyereségi szintet, így megkapjuk a tényleges árszintet, amit el kell érni ahhoz, hogy a ciklusban lévő összes vételt nyereséggel zárjuk
    – a ciklusátlagok tömb 0. elemébe (merthogy ez a 0. ciklus) beleírjuk ezt a számot
    – új ciklust kezdünk (vásárolunk), új txt-vel (ciklusátlagok[1] = 0, 1.txt létrehozása a legutóbbi tickettel)
    – …és innentől kezdve minden ticknél megnézzük ennek a tömbnek az értékeit (mindent vizsgálunk, ahol az érték != 0), hogy elérte-e az árszint.

    Ha igen, akkor
    – kiolvassuk a tömbhöz tartozó txt-t, és a ticketek alapján sorban lezárjuk az összes kereskedést
    – a ciklusátlagok tömb azon elemét, ami alapján aktiválódott a lezárási folyamat, 0-ra állítjuk, így azt már nem kell vizsgálni minden ticknél, mert az a tömb már „készen van”.

    Persze a robotba beleépítettem még sok minden mást is (biztonsági funkciókat), de a lényege ez. Ezt a tickenkénti vizsgálatot akartam a brókerre bízni a Stop Loss-szal és a Take Profit-tal, így nem húzom az időt a fileolvasással, a kereskedések egyenkénti visszaolvasásával (ticket), majd lezárásával. Azért írtam le mindezt, hogy lásd miért volt szükség tömbre és fileokra. Az mondjuk megeshet, hogy az egyszerűbb, evidens megoldás nem jutott eszembe, előfordult már ilyesmi :)

    Mindenképpen a Take Profit és a Stop Loss verzió a nyertes a zárási sebesség miatt; ha csalni kell az átlag meghatározásánál, hát csalok.

    Köszönöm a gyors segítséged, hálás vagyok neked.

    Ha rájöttél, hogyan lehet a fent leírt folyamatot egyszerűbben megvalósítani (tehát TP és SL nélkül), akkor kérlek oszd meg velem pár mondatban, az érdekesség kedvéért.

    Norbert
    Tag
    Bejegyzések száma: 35

    Túlbuzgóságom miatt az első verziót megcsináltam éjszaka, méghozzá fájlba irkálással. Nem akarok belemenni miért, a tömbök nem voltak elegek nekem. Működőképes, de féltem az EA-t, hogy lassan dolgoz fel fileokat és így tovább… Meg persze a pontatlanság, amiről te is írtál. Sok kereskedés lezárásánál másodpercek is eltelhetnek, ami a halála lehetne az én stratégiámnak.

    A második verzió érdekel, amikor befejezek egy un. „kereskedési ciklust”, akkor a ciklusban lévő összes vételnek egy zárási szintet szeretnék adni (ugye mindegyiknek ugyanazt), innentől az EA-nak nem kell vele törődni, hanem a szerver (bróker) önmagával dolgozik, az én munkám le van tudva. Az volt a problémám a SL-al és a TP-al, hogy nem rakhatom akárhova, hanem egy bizonyos szintre kell őket rakni az árfolyamhoz és az orderhez képest. Ha az order túl közel van a ST vagy TP értékhez (például ugyanaz), akkor nem engedi berakni, márpedig lehet, hogy az egyik kereskedésemet pont ott kell majd lezárni, ahol nyitottam (ha az átlag arra a szintre jött ki), ezért nem gondolkodtam Take Profit-ban és Stop Loss-ban. De ha ezt a két szintet bárhova rakhatom, akkor az lenne a megoldás, hogy a ciklus átlagértékére rakom a ciklusban levő összes kereskedés Take Profit és Stop Loss szintjét.

    Ez lehetséges, és csak én csináltam valamit rosszul (mondjuk értékadásnál)?

    Köszönöm még egyszer!

    Norbert
    Tag
    Bejegyzések száma: 35

    Nos, ez fájt :-)
    Köszönöm a segítséget, ez volt a probléma.

    Norbert
    Tag
    Bejegyzések száma: 35

    A kliensem, ha ez segít:

    ALPARI FS MT4
    Build: 432

    Az MQL4 könyv alapján tanulom, és programozó révén le sem futtattam az alapkódokat, csak átrohantam rajta, most viszont amikor már ki akartam próbálni valamit, feltűnt, hogy a start nem fut. Próbáltam utána nézni fórumokon, de sehol nem találtam választ. Biztos valami alapvető hibám van…
    Esetleg a kliensben kell beállítani valamit?

    Norbert
    Tag
    Bejegyzések száma: 35

    – Igen, online vagyok, folyamatosan frissül az egyperces chart (1716/1 kb sebesség)
    – Azt nem gondoltam, hogy számít melyik könyvtárban van. Az oldalsó navigátorban megjelent a programom, és futtatásnál megkapom az üdvözlő Alert-et is, tehát gondolom jó könyvtárban van (ha már egyszer lefut).

9 bejegyzés megtekintése - 16-24 / 24