Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › STOP OUT távolság/hely kiszámítása
Címkézve: stop out
-
SzerzőBejegyzés
-
Szia Radu!
Szeretném kiszámolni, hogy a jelenlegi kötésekkel hol fog elérni a számla stop out. Van nyitva SELL és BUY pozi is a számlán!!
Ha csak egy irányban van nyitva pozi, akkor úgy tűnik, hogy az alábbi képlet helyesen mutatja, de ha egyszerre SELL és BUY is nyitva van, akkor sajnos nem jó:
double _spread = MarketInfo(NULL, MODE_SPREAD); double point = MarketInfo(NULL, MODE_POINT); double ticksize = MarketInfo(NULL, MODE_TICKSIZE); double tickvalue = MarketInfo(NULL, MODE_TICKVALUE); double tickvaluefix = tickvalue * point / ticksize; double stoploss = AccountEquity() / (menny * tickvaluefix ) - _spread;
Persze a menny értéke az összes nyitott SELL és BUY order lot-jait tartalmazza összesítve. A stoploss értéke lenne az a távolság, ahol a stop out majd bekövetkezik. Kérdés, hogy honnan mérem ezt a távolságot, ha mindkét irányban van nyitva pozíció?
előre is nagyon köszönöm!
- A MarketInfo() függvénynél a NULL helyett a Symbol() függvényt használd!
- Amennyiben valamelyik oldalon (BUY vagy SELL) nagyobb az össz-lotméret, mint a másikon, akkor számolhatsz kistoppolódási szintet. Ha a két oldal egyenlő, akkor ugye befagyasztott állapot van, aminél soha nem fog kistoppolódás történni (természetesen ha nincsen SL/TP beállítva)
- A kistoppolódás helyét mindig annak a pozíciótípusnak a helytelen iránya adja meg, amelyből több van. Tehát 1 lot BUY és 1.1 lot SELL esetén az emelkedés fogja a kistoppolódást okozni, hiszen lefelé a nagyobb SELL össz-lotméret miatt floating növekedés fog történni.
- Magyarul: csak a különbséget is használhatod a számításhoz, persze a jutalék és a kamat összegének beszámításával. Ha tehát van 1 lot BUY és 1.1 lot SELL pozid (összesen), akkor elég a 0.1 SELL -t alapul venni, mint mennyiséget. Természetesen minden esetben fontos az oldalankénti pontos, súlyozott átlagárat kiszámolni és abból kiindulni a profitszámítás során.
- Amennyiben a kistoppolódást szeretnéd kiszámítani, a fenti alapok figyelembe vételével és ennek a cikkemnek a tanulmányozásával pontosíthatod a kódodat.
- Amennyiben magának a számlának a kistoppolódási helyét akarod kiszámítani (ahol a bróker erőszakkal zárja a pozícióidat a túl nagy kitettség miatt), akkor használd a AccountStopOutMode() és AccountStopOutLevel() függvényeket. Így kiszámolhatod azt az összeget, aminél a stopout meg fog történni, az összeg, a nyitott lotméret és a tickvalue-ticksize alapján pedig ki tudod számolni, hogy ez ár szintjén hol fog bekövetkezni.
- Nyilván ha több instrumentumon vannak nyitva pozícióid vegyesen, akkor a stopout szintjét kiszámolni (ár szintjén) lehetetlen, hiszen az instrumentumok árai össze-vissza mozoghatnak.
A téma rengeteg apró kérdést tartalmaz, így szinte biztos hogy kihagytam valamit, de ha elakadsz, akkor úgyis kérdezel majd :)
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.