Скачать MetaTrader 5

PositionSelect код ошибка 4753

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexander Pavlov
1754
Alexander Pavlov  

Позиции всегда открыты но в один прекрасный момент PositionSelect почему то возвращает ошибку 4753 (Позиция не найдена):

 

void OnTick()
  {   
   do //Ждем прибыль
   {
   Alert("-1*",OrderProfit2+OrderProfit1,"*",GetLastError());
   Sleep(10);
   bid   =SymbolInfoDouble(Money№1,SYMBOL_BID); // Запрос значения Bid
   ask   =SymbolInfoDouble(Money№1,SYMBOL_ASK); // Запрос значения Ask
   if (StringLen(Money№1_SELLorBUY)==3)
   OrderCalcProfit(ORDER_TYPE_BUY,Money№1,Lot,ticket1,bid,OrderProfit1);
   else
   OrderCalcProfit(ORDER_TYPE_SELL,Money№1,Lot,ticket1,ask,OrderProfit1);

   bid   =SymbolInfoDouble(Money№2,SYMBOL_BID); // Запрос значения Bid
   ask   =SymbolInfoDouble(Money№2,SYMBOL_ASK); // Запрос значения Ask
   if (StringLen(Money№2_SELLorBUY)==3)
   OrderCalcProfit(ORDER_TYPE_BUY,Money№2,Lot,ticket2,bid,OrderProfit2);
   else
   OrderCalcProfit(ORDER_TYPE_SELL,Money№2,Lot,ticket2,ask,OrderProfit2);
   Alert("0*",OrderProfit2+OrderProfit1,"*",GetLastError());
      //Отслеживаем закрытые из вне позиции. Если такая есть ждем закрытие второй позиции.
      PositionSelect(Money№1);
      TimePosition1 = PositionGetInteger(POSITION_TIME);
      PositionSelect(Money№2);
      Alert("-22*",TimePosition2,TimePosition1,"*",GetLastError()); // error 4753 Позиция не найдена
      TimePosition2 = PositionGetInteger(POSITION_TIME);  
      Alert("-0*",TimePosition2,TimePosition1,"*",GetLastError()); //выдал 0 = TimePosition1!!!
      if  (TimePosition2==0 || TimePosition1==0) 
      {
         while (1)
         {
         PositionSelect(Money№1);
         TimePosition1 = PositionGetInteger(POSITION_TIME);
         PositionSelect(Money№2);
         TimePosition2 = PositionGetInteger(POSITION_TIME); 
         if  (TimePosition2==0 && TimePosition1==0)
         {order1 = true;
         order2 = true;
         break;}
         }
      break;
      }
      //Отслеживаем закрытые из вне позиции. Если такая есть ждем закрытие второй позиции.
    Print(OrderProfit2+OrderProfit1,"*",GetLastError());
   }
   while ((OrderProfit2+OrderProfit1)<Profit); //Ждем прибыль
}

Почему появляется эта ошибка если позиция открыта? 

Alexander Pavlov
1754
Alexander Pavlov  
Vladimir Karputov
Модератор
50046
Vladimir Karputov  
1987pavlov:
Полный код, если нужно: https://drive.google.com/file/d/0B6j5Emo524FIdnA3RzRHUWZwOU0/edit?usp=sharing
Когда Вы пишите сообщение, обратите внимание на нижний левый угол поста: там есть кнопка "Прикрепить файл". 
Alexander Pavlov
1754
Alexander Pavlov  
Полный код
Файлы:
Alexander Pavlov
1754
Alexander Pavlov  
Может быть это из за ролловера потому как он закрывает и вновь открывает позиции?
Oleg Shenker
11848
Oleg Shenker  
Alexander Pavlov:
Может быть это из за ролловера потому как он закрывает и вновь открывает позиции?
У меня тоже такая проблема. Позиция точно есть, а вот PositionSelect() ее не видит.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий