Обсуждение статьи "Торговые транзакции. Структуры запросов и ответов, описание и вывод в журнал"
Опубликована статья Торговые транзакции. Структуры запросов и ответов, описание и вывод в журнал:
Автор: Artyom Trishkin
Спасибо, Артём, за то, что сконцентрировали всю необходимую информацию в одной статье! Добавил себе в избранное.
С уважением, Владимир.
Спасибо за интересную статью. Но жаль, что очень мало внимания уделено функции OrderCheck()
Надеюсь на отдельную статью посвящённую этой полезной функции…
Спасибо за интересную статью. Но жаль, что очень мало внимания уделено функции OrderCheck()
Надеюсь на отдельную статью посвящённую этой полезной функции…
В каких-то давних релизах MT5 нарывался, что OrderCheck() иногда браковала запросы, которые реально вполне успешно исполнялись. Отказался от неё и не хочу в боевых роботах вновь тестировать эти грабли, хоть, возможно, и починили.
Спасибо за интересную статью. Но жаль, что очень мало внимания уделено функции OrderCheck()
Надеюсь на отдельную статью посвящённую этой полезной функции…
Просто писал некую "расширенную справку" - много справочной информации. А по OrderCheck вроде всё лаконично и без излишеств. Да и в ней самой нет излишеств. Расписал что, чем и как заполняются поля. Не во всех случаях они заполняются. Ответ функции с кодом почти всегда "ОК", так как привык заполнять торговый запрос корректно. Если брать ситуации про "почти", то это специально вводил некорректные данные для проверки работы. Т.е., что там расписывать, да ещё и на статью - я ума не приложу.
Просто писал некую "расширенную справку" - много справочной информации. А по OrderCheck вроде всё лаконично и без излишеств. Да и в ней самой нет излишеств. Расписал что, чем и как заполняются поля. Не во всех случаях они заполняются. Ответ функции с кодом почти всегда "ОК", так как привык заполнять торговый запрос корректно. Если брать ситуации про "почти", то это специально вводил некорректные данные для проверки работы. Т.е., что там расписывать, да ещё и на статью - я ума не приложу.
Как минимум мало кто внимательно читал структуру MqlTradeCheckResult
struct MqlTradeCheckResult { uint retcode; // Код ответа double balance; // Баланс после совершения сделки double equity; // Эквити после совершения сделки double profit; // Плавающая прибыль double margin; // Маржевые требования double margin_free; // Свободная маржа double margin_level; // Уровень маржи string comment; // Комментарий к коду ответа (описание ошибки) };
И чаще всего говорят, что эта функция предназначена исключительно, как и написано в документации
Функция OrderCheck() проверяет достаточность средств для совершения требуемой торговой операции.
Но сто́ит обратить внимание на поля структуры «Баланс после …» и «Эквити после…». Про «Маржинальные требования» я вообще молчу. А эти параметры весьма полезны. К примеру если после совершения сделки на счёте останется «сорок копеек» эквити… Нужно-ли совершать такую сделку, даже если и средств достаточно, и другие параметры ордера в порядке? Конечно можно получить это значение другим методом, но на мой взгляд одной функцией получить несколько полезных параметров гораздо выгодней.
Да и по моему опыту её использования при успешной проверке код ответа фиксирует неправильные цены SL и/или TP. И не только их. Вот об этом и хотелось-бы получить статью. О том, какие ещё коды работают…
К сожалению OrderCheck() не сообщает об ошибке
10018 | TRADE_RETCODE_MARKET_CLOSED | Рынок закрыт |
Так вот может разработчики обратят наконец-то внимание на эту проблему…
Как минимум мало кто внимательно читал структуру MqlTradeCheckResult
И чаще всего говорят, что эта функция предназначена исключительно, как и написано в документации
Но сто́ит обратить внимание на поля структуры «Баланс после …» и «Эквити после…». Про «Маржинальные требования» я вообще молчу. А эти параметры весьма полезны. К примеру если после совершения сделки на счёте останется «сорок копеек» эквити… Нужно-ли совершать такую сделку, даже если и средств достаточно, и другие параметры ордера в порядке? Конечно можно получить это значение другим методом, но на мой взгляд одной функцией получить несколько полезных параметров гораздо выгодней.
Да и по моему опыту её использования при успешной проверке код ответа фиксирует неправильные цены SL и/или TP. И не только их. Вот об этом и хотелось-бы получить статью. О том, какие ещё коды работают…
К сожалению OrderCheck() не сообщает об ошибке
10018 | TRADE_RETCODE_MARKET_CLOSED | Рынок закрыт |
Так вот может разработчики обратят наконец-то внимание на эту проблему…
Не понял о каких SL и TP ты говоришь? Их нет в полях структуры...
А про эквити, баланс после совершения сделки ... Ну.., ты знаешь, я думал сказать, что это полезно знать, и что эти данные нужно анализировать перед отправкой приказа на сервер. Но разве я об этом не сказал? Или нужно было прямо внимание заострить - мол, не стоит открывать позицию, если у вас на булочку потом не хватит ) ... Но, понимаешь, я думал, и думаю, что это же и так понятно. Поэтому просто написал, что можно анализировать заполненные поля этой структуры. А о том, что "Рынок закрыт" не возвращается, я не написал (хотя хотел) просто потому, что забыл ) Да и подумалось, что это коды возврата торгового сервера. Они на все случаи жизни. Видимо - не на этот случай этот код. Он нормально возвращается в OrderSend. Хотя да, чтобы проверить закрыт ли рынок, нужно отсылать ордер - слабоватое решение. Но что есть.
Я говорю о кодах
10014 | TRADE_RETCODE_INVALID_VOLUME | Неправильный объем в запросе |
10015 | TRADE_RETCODE_INVALID_PRICE | Неправильная цена в запросе |
10016 | TRADE_RETCODE_INVALID_STOPS | Неправильные стопы в запросе |
Эти коды в структуру MqlTradeCheckResult возвращаются и отлично анализируются.
А в прочем, если нет желания писать, или Рашид не приветствует, я не настаиваю.
Я говорю о кодах
10014 | TRADE_RETCODE_INVALID_VOLUME | Неправильный объем в запросе |
10015 | TRADE_RETCODE_INVALID_PRICE | Неправильная цена в запросе |
10016 | TRADE_RETCODE_INVALID_STOPS | Неправильные стопы в запросе |
Эти коды в структуру MqlTradeCheckResult возвращаются и отлично анализируются.
А в прочем, если нет желания писать, или Рашид не приветствует, я не настаиваю.
Ну а что тут нового можно написать кроме как "Можно проанализировать коды ответа"... Ну получил человек такой код - понятно же, что стопы не правильные. Ну значит программно нужно это обработать - чтобы не было неправильных стопов. Анализирование кодов ответа тоже ведь является анализом. Как и полей структуры. Т.е., всё уже сказано - анализируйте и делайте выводы. Или ты считаешь, что нужно расписать каждый ответ сервера, и какие действия нужно при этом сделать? Ну такое реализовано в библиотеке, которую я ещё не дописал, но торговля там давно сделана. С полным анализом и внесением корректировок. Зачем повторяться?
Ну а что тут нового можно написать кроме как "Можно проанализировать коды ответа"... Ну получил человек такой код - понятно же, что стопы не правильные. Ну значит программно нужно это обработать - чтобы не было неправильных стопов. Анализирование кодов ответа тоже ведь является анализом. Как и полей структуры. Т.е., всё уже сказано - анализируйте и делайте выводы. Или ты считаешь, что нужно расписать каждый ответ сервера, и какие действия нужно при этом сделать? Ну такое реализовано в библиотеке, которую я ещё не дописал, но торговля там давно сделана. С полным анализом и внесением корректировок. Зачем повторяться?
Для того чтобы получить и проанализировать код возврата, надо как минимум понимать, что это за функция и понять её полезность. Именно об этом я и говорю. Статья даст расширенное понимание функции, а не только описание из документации.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Торговые транзакции. Структуры запросов и ответов, описание и вывод в журнал"
Alexey Viktorov, 2023.08.03 13:40
Как минимум мало кто внимательно читал структуру MqlTradeCheckResult
struct MqlTradeCheckResult { uint retcode; // Код ответа double balance; // Баланс после совершения сделки double equity; // Эквити после совершения сделки double profit; // Плавающая прибыль double margin; // Маржевые требования double margin_free; // Свободная маржа double margin_level; // Уровень маржи string comment; // Комментарий к коду ответа (описание ошибки) };
И чаще всего говорят, что эта функция предназначена исключительно, как и написано в документации
Функция OrderCheck() проверяет достаточность средств для совершения требуемой торговой операции.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Торговые транзакции. Структуры запросов и ответов, описание и вывод в журнал"
Alexey Viktorov, 2023.08.03 19:55
А в прочем, если нет желания писать, или Рашид не приветствует, я не настаиваю.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Торговые транзакции. Структуры запросов и ответов, описание и вывод в журнал:
В статье рассмотрим работу со структурами торговых запросов — для создания запроса, его предварительной проверки перед отправкой на сервер, ответ сервера на торговый запрос и структуру торговых транзакций. Создадим простые удобные функции для отправки торговых приказов на сервер и, на основе всего рассмотренного, создадим советник-информер о торговых транзакциях.
В MQL5 для выставления отложенных ордеров, открытия позиций, изменения ордеров и позиций существует функция OrderSend(). Первым входным параметром функции является структура торгового запроса MqlTradeRequest. В поле action структуры указывается тип выполняемого действия, а остальные поля заполняются в зависимости от выбранного действия в поле action. Таким образом мы, передавая необходимые для торгового запроса параметры в функцию, осуществляем отсылку различных запросов на сервер.
Автор: Artyom Trishkin