Nyitott megbízás zárása időre 2014-10-24T10:38:01+00:00

Radu.hu Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban Nyitott megbízás zárása időre

Címkézve: 

4 bejegyzés megtekintése - 1-4 / 4
  • Szerző
    Bejegyzés
  • Horesz72
    Tag
    Bejegyzések száma: 3
    #3870 |

    Hogyan tudom mql4-ben megadni azt, hogy egy pozíció megynyitása után, mondjuk két héten belül nem zár le sem tp-ra, sem sl-ra akkor zárjon ott ahol két hét letelte után van az árfolyam?

    Előre is köszi

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    Az TimeCurrent() (aktuális brókeridő) és az OrderOpenTime() (pozíció nyitási időpontja) különbségét vizsgálod rendszeresen. Amennyiben a kettő különbsége nagyobb vagy egyenlő, mint 1209600 (14 nap másodpercben kifejezve), akkor zársz.

    Természetesen ha naptári napokat kell figyelni, akkor egy hangyányit eltér a kód, de az alapötlet akkor is ez.

    Horesz72
    Tag
    Bejegyzések száma: 3

    Szia

    Sajnos még mindig nem sikerült megoldani a zárást időre.

       for (x=1; x<=OrdersTotal(); x++)
            {
            if (OrderSelect(x-1,SELECT_BY_POS)==true)
            if (OrderOpenTime()+1209600<=TimeCurrent())
            close = OrderClose(x,lotsell,Ask,2); 
            }
    

    Ezt írtam, de valamiért nem működik.
    A megbízásokat SELL-re nyitottam
    A program előző részét úgy írtam,hogy semmire ne tudjon lezárni csak időre.
    Az első megbízást lezárja időre vagyis 2 hétre eddig OK.
    A másodikat lezárta a 3. megbízás nyitási idejétől 2 hétre.
    A harmadikat lezárta az 5. megbízás nyitási idejétől 2 hétre.
    A negyediket lezárta a 7. megbízás nyitási idejétől 2 hétre és így tovább
    OrderClose error 4108 ezt a hiba kódot írja de ezzel nem sokra mentem.
    Ha meg tudnád írni, hogy mi a hiba megmentenél a gumiszobától.

    Előre is köszi

    Radulovic Attila
    Tag
    Bejegyzések száma: 631

    Első körben olvasd el ezt a cikket, mert az OrderTotal() -os for cikluson belüli zárást nem javaslom.

    A feltételt pedig add meg így:

    if (TimeCurrent() >= OrderOpenTime() + 1209600) {
      //zárás a cikkben leírtak alapján (tömbbel)
    }
    

    Az általad megadott kód két héten belül próbál zárni állandóan, nem két hét múlva. Ezért kapod a 4108-as invalid ticket hibákat is.

4 bejegyzés megtekintése - 1-4 / 4

A hozzászóláshoz jelentkezz be!