![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Правильно ли считсть, что независимый диспетчер находится в клиентском МТ?
Можно ли узнать подробнее о жёстких ограничениях? Насколько они жёсткие?
Вообще-то, хорошо бы почитать рекомендации разработчиков по вопросу "Как правильно реагировать на такие-то ситуации при исполнении торговых операций". На форуме постоянно обсуждаются подобные вопросы, поэтому, если Вы считаете возможным, имеет смысл опубликовать статью, где рассмотреть часто встречающиеся ситуации, а также "стандартные" решния блоков торг. операций с комментариями.
Как бы мне не промахнуться с кодом торгового модуля..
Если связь порвана в конце торговой операции, то есть только один способ - ждать некоторое время и проверять - появился какой-то новый ордер в списке или нет.
И в клиенте и в сервере. Все сетевые операции (не только торговые) находятся под контролем независимых диспетчеров, которые ждут превышения таймаутов на сокетах.
Про ограничения рассказывать не буду - это внутреннее дело нашего сетевого протокола.
Если связь порвана в конце торговой операции, то есть только один способ - ждать некоторое время и проверять - появился какой-то новый ордер в списке или нет.
Какие ошибки несут риск прерывания торговой операции? Вероятно ERR_NO_CONNECTION, ERR_SERVER_BUSY, возможно какие-то ещё(ERR_BROKER_BUSY например)?
Как определить, состоялась ли успешная синхронизация списка ордеров? Годится ли для этого функция IsConnected( ) ?
Или как?
Во всех других случаях можно быть увереным, что торговая операция не прошла.
Функция IsConnected возвращает состояние основного соединения, по которому производится подкачка данных. Для торговых функций устанавливается дополнительное временное соединение.
Во всех других случаях можно быть увереным, что торговая операция не прошла.
спасибо, кое-что прояснилось.
К сожалению, трудно составить полную картину по обрывочным сведениям.
Но кое-что важное всё же прозвучало. Может, этого и окажется достаточно для первой редакции. А там посмотрим.
Большое спасибо Renatу и Slawе. Понимаю, что определённая сдержанность с их стороны имеет вполне веские причины. Не совсем понимаю причины отсутствия в MQL возможности обновления списка ордеров в терминале - это всё равно достаточно часто происходит, и можно представить себе, например, какой-нибудь параметр в торговых функциях, типа OP_REFRESH. Впрочем, кажется я беру на себя лишние заботы.
Напоследок ещё раз о делении экспертов на виды. Интересно, никто не пытался систематизировать особенности написания экспертов в зависимости от целевого назначения?
Систематизировать, пожалуй, нет. А вот облегчить себе жизнь - это да! На данный момент у меня есть два самых ходовых шаблона советников. Я их выкладывал на пауке в теме "Разработка универсального советника". Эти шаблоны предназначены для быстрого стряпания советников для тестирования на истории. Обработка ошибок никакая. А для реала я сделал библиотеку функций, из которой беру нужные функции путём копирования и просто заменяю ими аналогичные в оттестированном на истории советнике. Т.е. для реала специально готовлю утяжелённую версию советника. Но до "реального" реала :-) дело пока не доходило. Все советники для реала крутятся и проходят отбор на демо. Поэтому и библиотека функций для реала постоянно дорабатывается.
Все данные об открытых позициях обновляются мгновенно(насколько это возможно при имеющемся подключении) и асинхронно. В МТ4 практически не приходится сталкиваться тем, что текущее состояние списка ордеров рассинхронизируется после совершенных торговых транзакций.
А вот забывчивость программистов об асинхронных изменениях, происходящих в терминале имеет место быть. После вызова любой торговой операции надо задавать себе вопрос "как это повлияло на ситуацию в терминале?"