как боротся с ошибкой 138 неверные цены - страница 2

 
void CLOSEORDER(string ord)
{
   for (int i=0; i<OrdersTotal(); i++)
   {                                               
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {
         if (OrderSymbol()!=Symbol()) continue;
         bool isTrue = false;
         if (OrderType()==OP_BUY && ord=="Buy")
            while(!isTrue){
              RefreshRates();
              isTrue = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),30,CLR_NONE);
            }
         if (OrderType()==OP_SELL && ord=="Sell")
            
            while(!isTrue){
              RefreshRates();
              isTrue = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),30,CLR_NONE);
            }
      }   
   }
}
 
sanyooooook:
этож закрытие ордеров

упс туплю )))))
 
void OPENORDER(string ord)
{
   int error;
   if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,NormalizeDouble(Ask,Digits),30,SL,TP,"", 1,3);
   if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,NormalizeDouble(Bid,Digits),30,SL,TP,"",-1,3);
   if (error==-1) //неудачная покупка OK
   {  
      ShowERROR(error,0,0);
   }
return;
}            
уже 3 час ночи вот и мозг тупит )))) что то до меня не доходит санек подскажи.
 
а что, закрытие не может выдавать 138 ошибку?
 
for (int i=OrdersTotal(); i>=0; i--)
 

Вот атк можно ?

void OPENORDER(string ord)
{int y;
if (ord=="Buy")
    {
    while(OrderSend(Symbol(),OP_BUY, LOT,Ask,5,SL,TP,"EMA WMA RSI",Magic,3)
<0){RefreshRates();if(y>=200000)break;y++;}
    }   
if (ord=="Sell")
    {
    while(OrderSend(Symbol(),OP_SELL,LOT,Bid,5,SL,TP,"EMA WMA RSI",Magic,3)
<0){RefreshRates();if(y>=200000)break;y++;}
    } 

}

 
artamir:
а что, закрытие не может выдавать 138 ошибку?
разговор шел об открытии
 
санек да открытие закрывать то он закрывает ))) так как я сдеал пойдет или нет ?
 
void OPENORDER(string ord)
{
   int error = -1;
   if (ord=="Buy" ){
     while(error == -1){
       RefreshRates();
       error=OrderSend(Symbol(),OP_BUY, LOT,NormalizeDouble(Ask,Digits),30,SL,TP,"", 1,3);
     }
   }
   if (ord=="Sell"){
     while(error == -1){
        RefreshRates();
        error=OrderSend(Symbol(),OP_SELL,LOT,NormalizeDouble(Bid,Digits),30,SL,TP,"",-1,3);
     }
   }

   if (error==-1) //неудачная покупка OK
   {  
      ShowERROR(error,0,0);
   }
return;
}         
 
while(error == -1)

это не выпустит из цикла пока тикет ==-1// ордер не открыт, если ордер открыт то тикет не равно -1


к чему это ???

if (error==-1) //неудачная покупка OK
   {  
      ShowERROR(error,0,0);
   }