Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Meddig érdemes folyamatosan ordert beadni?
Címkézve: pozíciónyitás slippage
-
SzerzőBejegyzés
-
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 + slippageHol lehet a határ, amíg még érdemes beadni?
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őenA 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!
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?
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.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.