Вопрос к разработчикам по поводу API 3

 
Уважаемые разработчики! У меня возникла следующая проблема. Я работаю с MetaTrader 3 API. Я заметил, что в реале при получении котировок в режиме подкачки и попытке открытия по последней цене, сервер всегда возвращает ошибку (price is changed). Почему это происходит? Я ведь четко выставляю в ордере цену Bid для Sell и Ask для Buy? Каков же алгоритм определения цены для покупки лота? При этом при использовании функции MtGetPrices все работает нормально и без ошибок! Объясните пожалуйста.
 
сервер всегда возвращает ошибку

А Вы уверены что _всегда_ возвращает реквот?
На каком именно сервере(какая компания) и какой символ используется?
Проверьте, пожалуйста, свой код и возможные задержки в нем.
 
Уверен. Сервер TeleTrade для реальной работы. Пары EUR/USD, USD/JPY, EUR/JPY
Задержек никаких нет. В режиме подкачки сохраняются последние значения аск и бид. При сигнале на открытие цена берется оттуда. Может имеет значение количество лотов? У меня никак не доходят руки сравнить котировку из подкачки с той, которая дается по MtGetPrices. Это не так просто, т.к. для последней нужна задержка в 5 сек. и цена естественно изменяется.
 
Уверен. Сервер TeleTrade для реальной работы. Пары EUR/USD, USD/JPY, EUR/JPY
Задержек никаких нет. В режиме подкачки сохраняются последние значения аск и бид. При сигнале на открытие цена берется оттуда. Может имеет значение количество лотов? У меня никак не доходят руки сравнить котировку из подкачки с той, которая дается по MtGetPrices. Это не так просто, т.к. для последней нужна задержка в 5 сек. и цена естественно изменяется.

Понятно. Если инструмент в режиме торговли REQUEST, то без предварительного запроса цены MtGetPrices, Вы всегда получите что цена изменилась. Если я правильно понял, Вы пытались совершить сделку в потоковом Instant Execution режиме. Не путайте режимы работы инструментов.
 
Спасибо. А режим торговли по каждому инструменту определяется владельцем сервера, или клиент может его как-то изменять?
 
Спасибо. А режим торговли по каждому инструменту определяется владельцем сервера, или клиент может его как-то изменять?

Режим торговли задается только сервером. Контролируйте флаг ConSecurity.exemode в символах, чтобы распознавать тип торговли по каждому инструменту. Допустимые варианты:
enum { EXE_REQUEST, EXE_INSTANT, EXE_MARKET };
 
Еще раз спасибо. Все понятно.
Причина обращения: