Válasz erre: Kereskedés lezárása X árfolyamon 2012-07-13T18:15:43+00:00

Radu.hu Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban Kereskedés lezárása X árfolyamon Válasz erre: Kereskedés lezárása X árfolyamon

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.