Meddig érdemes folyamatosan ordert beadni?2012-08-07T09:54:55+00:00

Radu.hu 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: 651

    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: 651

    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

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