У меня есть советник, который закрывает сделку при нажатии кнопки
//void CloseCurrentTrade(). It's called after successfull OrderSelect
int orderType = OrderType();
double price;
if (orderType == OP_BUY)
price = return MarketInfo(OrderSymbol(), MODE_BID);
else if (orderType == OP_SELL)
price = return MarketInfo(OrderSymbol(), MODE_ASK);
else
return;
int slippage = 20;
bool closed = OrderClose(OrderTicket(), OrderLots(), price, slippage);
if (closed)
return;
int lastError = GetLastError();
Иногда он закрывает сделку, а иногда возвращает ошибку # 129 (недействительная цена).Я не могу понять, почему.В большинстве случаев люди просто злоупотребляют заявкой / предложением или не имеют проскальзывания.Я пытаюсь использовать проскальзывание до 200, все та же ошибка.Некоторые советники просто пытаются закрыть его несколько раз (и для меня это выглядит как взлом), но это тоже не помогает.Есть некоторые упоминания о том, что вам нужно вызвать RefreshRates () перед bid / ask, но в документации сказано, что вам не нужно делать это для MarketInfo.
У меня закончились идеи, что это может быть.Почему это может произойти и как этого избежать?Я тестирую его на демонстрации FXCM (если это так).