for(cnt = 0; cnt < OrdersTotal(); cnt++) {
         
            if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) && OrderOpenTime()>lastopentime && OrderType() <= 1) {
            lastopentime = OrderOpenTime();
            lastopenedordertype = OrderType();
            lastorderprice2 = OrderOpenPrice();
            
            }
   }
           
   if(lastopenedordertype == 1){//dla SELL
            
               for(cnt = OrdersTotal(); cnt >= 0; cnt--){
   
                        OrderSelect(cnt, SELECT_BY_POS);
   
                        
   
                        if(OrderStopLoss() != lastorderprice2 + ((MnoznikPoint*1) * Point)){
                        OrderModify(OrderTicket(),OrderOpenPrice(),lastorderprice2 + ((MnoznikPoint*1) * Point),lastorderprice2 - ((MnoznikPoint*2) * Point),0);}
                        
               }         
   }
==========================
Proszę o pomoc w powyższej części kodu mojego EA. Wyskakuje mi ciągle bład nr 4051, który jak wyczytałem jest związany z błędnym parametrem funkcji. Bodajże chodzi o funkcję orderselect, a konkretniej o wybieranie wg pozycji lub ticketu. Próbowałem różnych modyfikacji i niestety nic nie pomogło. Proszę o jakiekolwiek podpowiedzi. Pozdrawiam.
			
			
									
									
						error modify 4051
jeśli to problem z OrderSelect to możliwe że chodzi o to : 
mianowicie odwołani się do elementu n tablicy o wielkości n powoduje błąd wyboru elementu z poza tablicy. 
tablica jest numerowana od 0 do n-1 - daje to n elementów.
(zresztą pierwszego fora masz dobrze napisanego)
spróbuj przerobić to na :
			
			
									
									
						Kod: Zaznacz cały
for(cnt = OrdersTotal(); cnt >= 0; cnt--)tablica jest numerowana od 0 do n-1 - daje to n elementów.
(zresztą pierwszego fora masz dobrze napisanego)
spróbuj przerobić to na :
Kod: Zaznacz cały
cnt = OrdersTotal()-1; cnt >= 0; cnt--)Cześć
Pozwoliłem sobie skomendować , mam nadzieje że to ci nie pzreszkadza.
Ponieważ jest to fragment więc problem może być jeszcze indziej . 
No ale tutaj czegoś brak .
			
			
									
									
						Pozwoliłem sobie skomendować , mam nadzieje że to ci nie pzreszkadza.
Kod: Zaznacz cały
for(cnt = 0; cnt <= OrdersTotal(); cnt++) //dodaj mniejsza lub równa
   { 
   if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) && OrderOpenTime()>lastopentime && OrderType() <= 1) 
      { 
      lastopentime = OrderOpenTime(); 
      lastopenedordertype = OrderType(); 
      lastorderprice2 = OrderOpenPrice(); 
      } 
   } 
 if(lastopenedordertype == 1)
   {//dla SELL 
   for(cnt = OrdersTotal(); cnt >= 0; cnt--)
      /*domyslam się że jeszcze raz przeglądasz aktywne zlecenia wie nie musisz robić tego "od tyłu"
      tylko tak jak zrobiłeś to na początku
      (cnt = 0; cnt <= OrdersTotal(); cnt++)*/
      { 
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); //dodaj Mode_Trades i tu chyba jest błąd
      if (OrderStopLoss() != lastorderprice2 + ((MnoznikPoint*1) * Point))
         { 
         OrderModify(OrderTicket(),OrderOpenPrice(),lastorderprice2 + ((MnoznikPoint*1) * Point),lastorderprice2 - ((MnoznikPoint*2) * Point),0);
         } 
      } 
   }No ale tutaj czegoś brak .
Kod: Zaznacz cały
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); //dodaj Mode_Trades i tu chyba jest błąd
							

