Почему OrderClose может выдавать 0?

 
Вопрос к разработчикам.
Почему OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow) выдает 0 и не закрывает позицию?
OrderTicket() и OrderLots() в норме - Не работает, даже если они константы.

Что делать? Помогите...
 
а что говорит GetLastError()?
 
GetLastError постоянно выдает 129 (Invalid Price) и 138 (Requote). И что потом делать? Как делать Requote программно?
Кстати, мне кажется, что ошибки связаны как-то с моментом открытия, так как OrderClose в большинстве случаев работает нормально. Но если он в каком-то случае не сработал, то уже не сработает никогда программно.
Как я уже говорил, у меня несколько компьтеров для тестирования экспертов. Так вот, если запущен один и тот же эксперт на двух компьютерах и произошел сбой OrderClose - то он произойдет на обоих компьютерах! И дело не в эксперте, так как в большинстве случаев все работает нормально. И только очень редко когда доходит до OrderClose и... не закрывает. Обидно.
Пока придумал это:
if (OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow)==0) Alert("Close Order "+OrderTicket());
А что делать?

Спасибо заранее.
 
а билд случайно не 161-й ? там Bid = 0... и точно позиция Buy? эт я так, на всякий случай...
 
Как делать Requote программно?

RefreshRates();
ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,CLR_NONE);
if(ticket<=0)
{
         int error=GetLastError();
         if(error==135) RefreshRates();   // prices changed
}
 
RefreshRates() не помогает.

Спасибо.
 
RefreshRates() не помогает.

Спасибо.

попробуй ещё так:
double _ClosePrice = NormalizeDouble( MarketInfo( Symbol(), MODE_BID ), MarketInfo( Symbol(), MODE_DIGITS ) );
OrderClose(OrderTicket(),OrderLots(),_ClosePrice,3,Yellow);
 
Вопрос к разработчикам.
Почему OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow) выдает 0 и не закрывает позицию?
OrderTicket() и OrderLots() в норме - Не работает, даже если они константы.

Что делать? Помогите...

Скорее всего Вы пытаетесь закрыть позицию SELL по Bid вместо Ask.
Причина обращения: