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: 

3 bejegyzés megtekintése - 1-3 / 3
  • Szerző
    Bejegyzés
  • KDani
    Tag
    Bejegyzések száma: 8

    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!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653
    1. A MarketInfo() függvénynél a NULL helyett a Symbol() függvényt használd!
    2. 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)
    3. 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.
    4. 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.
    5. 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.
    6. 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.
    7. 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 :)

    KDani
    Tag
    Bejegyzések száma: 8

    Nagyon köszönöm!

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