Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXVII): Работа с торговыми запросами - выставление отложенных ордеров"

 

Опубликована статья Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXVII): Работа с торговыми запросами - выставление отложенных ордеров:

В статье продолжим работу над торговыми запросами и реализуем выставление отложенных ордеров, а также устраним найденные недочёты в работе торгового класса.

В прошлой статье мы начали реализацию отложенных торговых запросов и создали первый отложенный запрос на открытие позиции в случае, если в торговом классе после отправки запроса на сервер была получена ошибка. Сегодня продолжим развитие торгового класса по части работы с отложенными запросами, и реализуем создание отложенного запроса при ошибках установки отложенных ордеров.

Во время тестирования торгового класса выявились некоторые недочёты допущенные при его проектировании. В частности — торговым объектам символов при их инициализации в конструкторе класса устанавливались жёстко заданные умолчательные значения, которые могли не поддерживаться в спецификации символа. Это приводило к ошибкам, получаемым от сервера при попытке выставить отложенные ордера — сервер выдавал ошибку неподдерживаемого типа истечения ордера, и данная ошибка нигде не корректировалась, что в итоге приводило к невозможности выставить отложенный ордер. При отсылке торгового запроса со значениями по умолчанию в торговый запрос тоже отправлялись некоторые неподдерживаемые данные, которые далее нигде не корректировались. Для выхода из ситуации приходилось прямо в торговом запросе указывать верные данные, соответствующие спецификации символа, на котором должна была проводиться торговая операция.

Это неудобно, так как требует вместо автоматической корректировки значений самой библиотекой, обязательного знания спецификации символа и ввода точных значений вручную прямо в коде программы. Поэтому мы внесём небольшие исправления в логику работы с торговым классом — в советнике в обработчике OnInit() все торгуемые объекты символов — их торговые объекты будут инициализироваться автоматическим выбором корректных значений. В торговые методы торгового класса по умолчанию будут передаваться значения -1 для типов заливки и экспирации ордеров, что будет сигналом к использованию заранее установленных корректных умолчательных значений. Если же из программы в торговый метод будет передано иное значение, то в этом случае будет использовано оно, и в случае, если значение окажется ошибочным, то оно будет скорректировано при обработке ошибок в торговом классе.

Автор: Artyom Trishkin

 

Почти 4 мегабайта кодов, а схема библиотеки и пользовательские методы не предоставлены... Вы для себя пишите?

Посмотрите глазами пользователей. Каково им во всем этом разбираться без ориентиров.

 
Еще вопрос: насколько "разумно" устанавливать отложенный ордер после обрыва интернета, без повторного опроса пользователя? Если подключение интернета займет у пользователя час и ситуация в корне измениться, стоит ли автоматически устанавливать ордер? Не лучше ли оставить сообщение о том, что ордер не был установлен из за отсутствия интернета и пользователь сам решит, нужно ли его повторно устанавливать?
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Реter Konow:
Еще вопрос: насколько "разумно" устанавливать отложенный ордер после обрыва интернета, без повторного опроса пользователя? Если подключение интернета займет у пользователя час и ситуация в корне измениться, стоит ли автоматически устанавливать ордер? Не лучше ли оставить сообщение о том, что ордер не был установлен из за отсутствия интернета и пользователь сам решит, нужно ли его повторно устанавливать?
Разве в статье не описан принцип, и для чего именно так?
 
Artyom Trishkin:
Разве в статье не описан принцип, и для чего именно так?

Конкретно в этой статье нет ни слова, почему решено отправлять отложенный ордер сразу после подключения интернета, без повторного опроса пользователя.

Есть предупреждение, что отложенные запросы представленные в статье нельзя использовать в реальной торговле. То есть, это все тестирование концепции и не больше. 

Объяснения установки ордера после переподключения интернета без опроса пользователя нет.

И неужели нужно несколько статей, чтобы тестировать незамысловатый механизм отложенного торгового запроса? Тем более, проще и правильней повторно опросить пользователя и все.

 
Реter Konow:

Конкретно в этой статье нет ни слова, почему решено отправлять отложенный ордер сразу после подключения интернета, без повторного опроса пользователя.

Есть предупреждение, что отложенные запросы представленные в статье нельзя использовать в реальной торговле. То есть, это все тестирование концепции и не больше. 

Объяснения установки ордера после переподключения интернета без опроса пользователя нет.

И неужели нужно несколько статей, чтобы тестировать незамысловатый механизм отложенного торгового запроса? Тем более, проще и правильней повторно опросить пользователя и все.

Не забывайте, что это только статья написанная для тех кто хочет в чём-то разобраться. Всего-лишь маленький кусочек урока по программированию, а не готовый советник. В статье описывается и в коде показывается как и что надо делать для достижения желаемого результата. Если-же вам надо делать в своём советнике опрос пользователя, так никто и не запрещает это делать.

 
Реter Konow:

Конкретно в этой статье нет ни слова, почему решено отправлять отложенный ордер сразу после подключения интернета, без повторного опроса пользователя.

Есть предупреждение, что отложенные запросы представленные в статье нельзя использовать в реальной торговле. То есть, это все тестирование концепции и не больше. 

Объяснения установки ордера после переподключения интернета без опроса пользователя нет.

И неужели нужно несколько статей, чтобы тестировать незамысловатый механизм отложенного торгового запроса? Тем более, проще и правильней повторно опросить пользователя и все.

Почитайте пожалуйста прошлую статью - там есть пояснение зачем это нужно. Подсказка:
1. функция Sleep() останавливает выполнение эксперта. Совсем. 
2. Мультивалютный эксперт.
Вы не совсем понимаете эту концепцию. Отсюда такие вопросы.
Для опроса пользователя всё будет. Средствами библиотеки. Но не внутри торговых методов - они это делать не должны, и не будут.
 
Alexey Viktorov:

Не забывайте, что это только статья написанная для тех кто хочет в чём-то разобраться. Всего-лишь маленький кусочек урока по программированию, а не готовый советник. В статье описывается и в коде показывается как и что надо делать для достижения желаемого результата. Если-же вам надо делать в своём советнике опрос пользователя, так никто и не запрещает это делать.

1. Заботясь о тех, кто хочет разобраться, неплохо бы схему библиотеки сделать, чтобы облегчить ориентирование по материалу.  

2. Каждая поправка вносимая автором в торговые функции не повод в каждой статье их печатать. Материал раздувается. Одни и те же торговые функции кочуют из статьи в статью с малыми изменениями. Теперь будут кочевать коды отложенных запросов? Это не проясняет, а запутывает читателя.

3. Уже скоро 30 статей будет, а пользоваться библиотекой автор предостерегает. Зачем тогда она нужна? Для обучения тому, как писать библиотеку которой нежелательно пользоваться?

 
Реter Konow:

1. Заботясь о тех, кто хочет разобраться, неплохо бы схему библиотеки сделать, чтобы облегчить ориентирование по материалу.  

2. Каждая поправка вносимая автором в торговые функции не повод в каждой статье их печатать. Материал раздувается. Одни и те же торговые функции кочуют из статьи в статью с малыми изменениями. Теперь будут кочевать коды отложенных запросов? Это не проясняет, а запутывает читателя.

3. Уже скоро 30 статей будет, а пользоваться библиотекой автор предостерегает. Зачем тогда она нужна? Для обучения тому, как писать библиотеку которой нежелательно пользоваться?

Вы фарш сырым едите? Вот, чтобы вы его не съели, и дано предупреждение - в этой и прошлой статье идёт подготовка материала и отладки концепции. 
И, да, если потребуется, то методы будут изменены и изменения будут пояснены. 
Троллинг в вопросах не поддерживаю - мне нравится предметный разговор.
 
Artyom Trishkin:
Вы фарш сырым едите? Вот, чтобы вы его не съели, и дано предупреждение - в этой и прошлой статье идёт подготовка материала и отладки концепции. 
И, да, если потребуется, то методы будут изменены и изменения будут пояснены. 
Троллинг в вопросах не поддерживаю - мне нравится предметный разговор.

Считал, что в статьях должны быть завершенные решения. И что тут отлаживать?

Если был обрыв связи с сервером, записываем данные ордера, устанавливаем флаг перепроверки связи с сервером. Перепроверяем в цикле до установления связи. После восстановления связи, спрашиваем пользователя хочет ли он установить сорвавшийся ордер. Если да, - отсылаем его, удаляем флаг и стираем данные ордера из листа сорвавшихся ордеров. В общих чертах вся концепция.

 
Вроде, вполне предметно. 
Причина обращения: