Forex programozás Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban Meddig érdemes folyamatosan ordert beadni?

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

    Szia Radu!
    Tételezzük fel hogy a robot fixen 1.200 szeretne vásárolni.
    Gyorsan mozog az ár. De hol kezdje beadni az ordert a terminálnak?
    Mi az a sáv ahol még érdemes elküldeni az ordert?
    Ami nem áll meg, a terminálban hanem elmegy a szerverig.
    Mikor megy át az ár a terminálon?

    Nem akarok felesleges beadásokkal terhelni a terminált tickenként, mert lehet hogy egy másik robot is próbálkozna más devizán, úgy kettő pedig nem megy egyszerre.

    Én mindig a vásárlási értékhez pl 1.200 adok hozzá 2x spreadot pluszba és mínuszba is, és ebben a sávban próbálom a fix ordert beadni.
    Ez sem teljes jó megoldás, mert egész más spreadja van egy eurusd mint egy xauusd-nek.

    Milyen sávot vagy távolságot érdemes használni?
    – mozdul az ár (1.203)
    – beadom az ordert 1.200
    – eközben megint elmozdul az ár. (1.202)
    És akkor megtörténik a kötés? 1.200 != ár + slippage

    Hol lehet a határ, amíg még érdemes beadni?

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Ha kiemelten fontos a pontos kötés, akkor érdemes LIMIT/STOP megbízásokat használni. Természetesen ha ez valamilyen oknál fogva nem megfelelő megoldás, akkor marad az instant (piaci) kötés.

    Ebben az esetben én a következő sémát követem:

    1) ellenőrizd hogy van-e elegendő pénz a nyitáshoz
    2) ellenőrizd hogy lehet-e egyáltalán kereskedni (IsTradeAllowed())
    3) egy for/while ciklussal x próbálkozású cikluson belül próbálj nyitni; minden OrderSend előtt legyen RefreshRates(); függvény – ez segít frissen tartani az adatokat, ha elnyúlnak a próbálkozások
    4) ügyelj a TP/SL/stop szint/freeze szint szabályokra – ha kell, módosítsd a megváltozott árnak megfelelően

    A Slippage paraméterrel minimum elmozdulási távolságban adhatod meg azt, hogy mi az a tolerancia amit a brókertől elfogadsz csúszásként.

    Ha mindenképpen csak az 1.200 ár a jó, akkor Slippage értéke legyen nulla és folyamatosan (NEM végtelen módon, hanem maximalizálva) próbálkoznod kell. A próbálkozások között jómagam legalább 1-200 milliszekundum szünetet hagyok.

    Ha az a lényeg, hogy a pozíció megszülessen egy tól-ig értéken belül (ez a jellemző), akkor szintén folyamatosan próbálkozva, 3-5 pont Slippage beállítással lehet küzdeni.
    Ez azt jelenti, hogy ha 1.120-as áron indítod a folyamatot 3 pont Slippage-dzsel, és közben a bróker megcsúszik akkor gyakorlatilag 1.117 -től 1.123 -ig minden árat elfogadsz. Ha ezen tartományon kívül lesz a jegyzett ár, akkor jön a második próbálkozás. És így tovább, és így tovább. Én általában – egy ticken belül – 15-ször próbálkozom. Amíg ez a 15 próbálkozás nem történik meg, addig nem fejeződik be a program működése. Ez hátrányt nem jelent, mivel a RefreshRates() miatt mindig a legfrissebb és legaktuálisabb árakkal fogsz újra és újra próbálkozni.

    Remélem, segítettem!

    siker
    Tag
    Bejegyzések száma: 16

    Húúú ennél rövidebb válaszra számítottam.
    Nem baj! Köszönöm!
    A válaszod egy kicsit elterelt más irányba.
    Elképzelhető, hogy én értelmezem rosszul a dolgot! Javíts, ki ha tévedek.

    Minek a RefreshRates?
    Ez sosem értettem, hogy ha változik az ár, akkor új Tick keletkezik nem?
    Újra lefut jó esetben minden függvény? (A Start() is és a benne lévő saját függvények is)

    Ha ezek lefutnak minden ticknél, akkor miért kell megállítani esetleg több másodpercre, a robot futását a Sleep(100) hogy minden áron vásárolni próbáljon.

    Miközben 0.2-1.5 sec között jönnek a tickkek „automatikusan”?

    Vagy ezt én látom rosszul?

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Jó a kérdés, nem voltam egyértelmű.

    A tick ugye a vezérlés kiindulópontja. Egy tick esetén elindul a program, és ameddig le nem fut, addig az új tickek elvesznek és azokra új programpéldány nem fog indulni – egyszerre tehát egy programpéldány létezhet.
    Közben – ha a program hosszabb ideig fut – az eredeti tickhez tartozó ár már valószínűleg „elöregszik”, ezért az összes belső árat és adatot frissíteni kell. Erre jó a RefreshRates, és ez küszöböli ki azt a problémát amit írtál.

    Magyarul egy végtelenített expert egyetlen egy tick alapján is szépen tud a végletekig dolgozni. Természetesen ez szélsőség és nem kell erőltetni, de néha jól jöhet. Általában század-ezredmásodperc alatt lefut a program egy-egy tickre, de esetenként – főleg volatilis piacnál és sok nyitási-zárási próbálkozásnál – akár több másodperces is lehet egy-egy tickhez tartozó futás. A lényeg: mindeközben egy jól megírt expert esetén nem veszítünk adatokat, csak másként használjuk fel őket.

    siker
    Tag
    Bejegyzések száma: 16

    Nagyon szépen köszönöm, az infókat!

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