Эксперт не правильно работает - страница 3

 
Не знаю, что в ней не так, она мне просто не нравится. Такой вариант все же привычней и информативней для меня

//+------------------------------------------------------------------+
//| разворачивает одну позицию из множества!!!                       |
//+------------------------------------------------------------------+
int BuySellReversTrue()
   {
   int TP,SL;
   double closePrice;
//----
   for(int i=OrdersTotal()-1;i>=0;i--)
      {            
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;  
      if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_SELL && OpenLong()==1)
         {
         if(SecondsAfterOpenLastPos()>3600)
            {
            closePrice=Ask;
            if(OrderClose(OrderTicket(),OrderLots(),closePrice,3,CLR_NONE))
               {
               OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0);
               return(1);
               }
            else 
               {
               RefreshRates();
               Print("Не удалось закрыть ордер в продажу #",OrderTicket()," по цене ",closePrice," текущий Ask=",Ask," код ошибки ",GetLastError());   
               }
            }
         }  
      if(OrderType()==OP_BUY && OpenShort()==1)
         {
         if(SecondsAfterOpenLastPos()>3600)
            {
            closePrice=Bid;
            if(OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE))
               {
               OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0);
               return(2);
               }
            else 
               {
               RefreshRates();
               Print("Не удалось закрыть ордер в покупку #",OrderTicket()," по цене ",closePrice," текущий Bid=",Bid," код ошибки ",GetLastError());   
               }
             }
          }  
      }
   return(0);  
//----
   }
 
Rosh:
Не знаю, что в ней не так, она мне просто не нравится. Такой вариант все же привычней и информативней для меня

Спасибо за помошь, но результат не изминился вот что пишет

Не удалось закрыть ордер в покупку #3492916 по цене 0.8364 текущий Bid=0. 8364 код ошибки 4107


 

Так что мне делать с этим "неправлиным пареметром цены" все вроде правильно что за лажа?

ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции
 
colci:

Так что мне делать с этим "неправлиным пареметром цены" все вроде правильно что за лажа?

ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции


В SecondsAfterOpenLastPos() передергивается результат функции OrderSelect полученный в BuySellReversTrue()

 
Vita:
colci:

Так что мне делать с этим "неправлиным пареметром цены" все вроде правильно что за лажа?

ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции


В SecondsAfterOpenLastPos() передергивается результат функции OrderSelect полученный в BuySellReversTrue()


спасибо прибольшое все заработало я че-то не подумал об этом да вот времени потерял :)
 
Приходится все додумывать самому. Это последний раз.

//+------------------------------------------------------------------+
//| разворачивает одну позицию из множества!!!                       |
//+------------------------------------------------------------------+
int BuySellReversTrue()
   {
   int TP,SL;
   double closePrice;
   string SymbolName;
//----
   for(int i=OrdersTotal()-1;i>=0;i--)
      {            
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;  
      if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_SELL && OpenLong()==1)
         {
         if(SecondsAfterOpenLastPos()>3600)
            {
            SymbolName=OrderSymbol();
            closePrice=MarketInfo(SymbolName,MODE_ASK);
            if(OrderClose(OrderTicket(),OrderLots(),closePrice,3,CLR_NONE))
               {
               OrderSend(SymbolName,OP_BUY,0.1,closePrice,3,0,0);
               return(1);
               }
            else 
               {
               RefreshRates();
               Print("Не удалось закрыть ордер в продажу #",OrderTicket()," ",SymbolName," по цене ",closePrice," текущий Ask=",MarketInfo(SymbolName,MODE_ASK)," код ошибки ",GetLastError());   
               }
            }
         }  
      if(OrderType()==OP_BUY && OpenShort()==1)
         {
         if(SecondsAfterOpenLastPos()>3600)
            {
            SymbolName=OrderSymbol();
            closePrice=MarketInfo(SymbolName,MODE_BID);
            if(OrderClose(OrderTicket(),OrderLots(),closePrice,3,CLR_NONE))
               {
               OrderSend(closePrice,OP_SELL,0.1,closePrice,3,0,0);
               return(2);
               }
            else 
               {
               RefreshRates();
               Print("Не удалось закрыть ордер в покупку #",OrderTicket()," ",SymbolName," по цене ",closePrice," текущий Bid=",MarketInfo(SymbolName,MODE_BID)," код ошибки ",GetLastError());   
               }
             }
          }  
      }
   return(0);  
//----
   }