Radu.hu Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban Függő megbízások módosítása Válasz erre: Függő megbízások módosítása

Szalai Gergely
Tag
Bejegyzések száma: 8

szia!

először is köszönöm szépen a gyors választ, sokat segítettél! mint ahogy lenni szokott, így most is a hiba “user error”-ra vezethető vissza.
a 51-es számba nem vagyok beleszerelmesedve ezt természetesen majd változtatni szeretném.
megpróbáltam megoldani, hogy figyelje az árfolyam változását és csak akkor módosítgasson ha az a feltételek szerint változik. így megszűnt a végtelen ciklus. köszönöm! szerinted egy számláló beiktatása; mondjuk 10 próbálgatás után hagyja az egészet és fusson tovább, helyes irányba lendítené a dolgot?

még egy kérdés, a hibakódokkal kapcsolatban:
találtam egy ErrorDescription() függvényhez hasonló akármit az http://docs.mql4.com/check/GetLastError oldalon. ez használható ahogy ott jelezték. mert nekem nem sikerült.

köszi!
bemásolom a változtatott sorokat (lehet, hogy nem azt csináltam, amit leírtam)…

//függő megbízások elhelyezése----------------------------------------
   if
   (
      vetel==0//még nem helyeztük el a függő vételi megbízást
   && eladas==0//még nem helyeztük el a függő eladási megbízást
   )
   {
//függő megbízások elhelyezése
      while//vételi függő megbízás küldése
      (
         vetel<1//amíg a vételi függő megbízást el nem helyezi a szerver
      )
      {
//tervezett kereskedési szintek meghatározása
         nyitasszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51)*Point;//vételi pozíció tervezett nyitásszintje
         vesztesegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51-kockazat)*Point;//vételi pozíció tervezett veszteségszintje
         nyeresegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51+nyeresegcel)*Point;//vételi pozíció tervezett nyereségszintje

         vetel=OrderSend(Symbol(), OP_BUYSTOP, LOT, nyitasszint_tervezett_vetel, 25, vesztesegszint_tervezett_vetel, nyeresegszint_tervezett_vetel, "vetel", 1, 0, Green);//függő vételi megbízás küldése

         if//hibakód vizsgálata
         (
            vetel<1//nem helyezte el a szerver a függő vételi megbízást
         )
         {
            Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
         }
      }

      while//eladási függő megbízás küldése
      (
         eladas<1//amíg az eladási függő megbízást el nem helyezi a szerver
      )
      {
//tervezett kereskedési szintek meghatározása
         nyitasszint_tervezett_eladas=Low[0]-51*Point;//eladási pozíció tervezett nyitásszintje
         vesztesegszint_tervezett_eladas=Low[0]-(51-kockazat)*Point;//eladási pozíció tervezett veszteségszintje
         nyeresegszint_tervezett_eladas=Low[0]-(51+nyeresegcel)*Point;//eladási pozíció tervezett nyereségszintje

         eladas=OrderSend(Symbol(), OP_SELLSTOP, LOT, nyitasszint_tervezett_eladas, 25, vesztesegszint_tervezett_eladas, nyeresegszint_tervezett_eladas, "eladas", 2, 0, Red);//függő eladási megbízás küldése

         if//hibakód vizsgálata
         (
            eladas<1//nem helyezte el a szerver a függő vételi megbízást
         )
         {
            Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
         }
      }
   }
//--------------------------------------------------------------------

//függő megbízások módosítása-----------------------------------------
   if
   (
      vetel>0//él a függő vételi megbízást
   )
   {
      OrderSelect(vetel, SELECT_BY_TICKET, MODE_TRADES);//vételi megbízás kiválasztása
      if//vételi megbízás vizsgálata
      (
         OrderType()==OP_BUYSTOP//a vételi megbízás függő (nem nyílt még meg)
      )
      {
         if//kereskedési szintek változásának vizsgálata
         (
            nyitasszint_tervezett_vetel<High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51)*Point//emelkedett a tervezett nyitási szint
         )
         {
            frissites_megbizas_vetel=false;//még nem frissítettük a vételi függő megbízás kereskedési szintjeit

            while//amíg a vételi függő megbízást nem módosítja a szerver
            (
               frissites_megbizas_vetel==false//ha még nem frissültek a függő vételi megbízás a kereskedési szintjei
            )
            {
//tervezett kereskedési szintek frissítése
               nyitasszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51)*Point;//vételi pozíció új tervezett nyitásszintje
               vesztesegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51-kockazat)*Point;//vételi pozíció új tervezett veszteségszintje
               nyeresegszint_tervezett_vetel=High[0]+(MarketInfo(Symbol(), MODE_SPREAD)+51+nyeresegcel)*Point;//vételi pozíció új tervezett nyereségszintje

               frissites_megbizas_vetel=OrderModify(vetel, nyitasszint_tervezett_vetel, vesztesegszint_tervezett_vetel, nyeresegszint_tervezett_vetel, 0, Green);//vételi függő megbízás módosítása

               if//hibakód vizsgálata
               (
                  !frissites_megbizas_vetel//nem teljesült a függő vételi megbízás kereskedési szintjeinek a frissítése
               )
               {
                  Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
               }
            }
         }
      }
   }

   if
   (
      eladas>0//él a függő eladási megbízást
   )
   {
      OrderSelect(eladas, SELECT_BY_TICKET, MODE_TRADES);//eladási megbízás kiválasztása
      if//eladási megbízás vizsgálata
      (
         OrderType()==OP_SELLSTOP//az eladási megbízás függő (nem nyílt még meg)
      )
      {
         if//kereskedési szintek változásának vizsgálata
         (
            nyitasszint_tervezett_eladas>Low[0]-51*Point//süllyedt a tervezett nyitási szint
         )
         {
            frissites_megbizas_eladas=false;//még nem frissítettük az eladási függő megbízás kereskedési szintjeit

            while//amíg az eladási függő megbízást nem módosítja a szerver
            (
               frissites_megbizas_eladas==false//ha még nem frissültek a függő eladási megbízás a kereskedési szintjei
            )
            {
//tervezett kereskedési szintek frissítése
               nyitasszint_tervezett_eladas=Low[0]-51*Point;//eladási pozíció új tervezett nyitásszintje
               vesztesegszint_tervezett_eladas=Low[0]-(51-kockazat)*Point;//eladási pozíció új tervezett veszteségszintje
               nyeresegszint_tervezett_eladas=Low[0]-(51+nyeresegcel)*Point;//eladási pozíció új tervezett nyereségszintje

               frissites_megbizas_eladas=OrderModify(eladas, nyitasszint_tervezett_eladas, vesztesegszint_tervezett_eladas, nyeresegszint_tervezett_eladas, 0, Red);//eladási függő megbízás módosítása

               if//hibakód vizsgálata
               (
                  !frissites_megbizas_eladas//nem teljesült a függő eladási megbízás kereskedési szintjeinek a frissítése
               )
               {
                  Print(GetLastError() ,"-as hibakód: ");//hibakód kiírása
               }
            }
         }
      }
   }
//--------------------------------------------------------------------