Скачать MetaTrader 5

Обсуждение статьи "Торговые события в MetaTrader 5"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши статьи с помощью нашего редактора. Это удобно!
MetaQuotes Software Corp.
Модератор
181077
MetaQuotes Software Corp. 2011.01.24 12:03 

Опубликована статья Торговые события в MetaTrader 5:

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

Генерация торговых событий

Автор:  MetaQuotes

Yedelkin
4532
Yedelkin 2011.01.25 12:00  

Хотелось бы уточнить несколько моментов.

1. Из статьи следует, что для первичной проверки запроса предназначена функция OrderCheck(),  при этом первичная проверка с помощью функции OrderCheck() осуществляется непосредственно  сервером (на стороне сервера), а не в терминале. Правильно?

Документация по MQL5: Торговые функции / OrderCheck
Документация по MQL5: Торговые функции / OrderCheck
  • www.mql5.com
Торговые функции / OrderCheck - Документация по MQL5
Yedelkin
4532
Yedelkin 2011.01.25 12:38  

2. В справочнике указано, что для функции OrderSend() "в случае успешной базовой проверки структур возвращается true". Из этого можно сделать вывод, что true возвращается сразу после проверки запроса на корректность.

Но чуть ниже в примечании добавлено, что "при успешном принятии ордера торговым сервером функция OrderSend() возвращает значение true". Из этого примечания следует, что true возвращается только после принятия ордера сервером.

Между тем, могут возникать ситуации, когда запрос уже проверен на корректность, но ещё не принят брокером. Поэтому прошу уточнить в какой именно момент функция OrderSend()  возвращает true -  сразу после проверки запроса на корректность или только после принятия ордера сервером?

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
Vladimir Batrudinov
4924
Vladimir Batrudinov 2011.01.25 12:43  
Yedelkin:

Хотелось бы уточнить несколько моментов.

1. Из статьи следует, что для первичной проверки запроса предназначена функция OrderCheck(),  при этом первичная проверка с помощью функции OrderCheck() осуществляется непосредственно  сервером (на стороне сервера), а не в терминале. Правильно?

Насколько я понимаю обработка ведется на стороне клиентского терминала.

Также это подтверждается следующим постом.

Yedelkin
4532
Yedelkin 2011.01.25 12:49  

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

Как мы знаем, режим немедленного исполнения рыночных ордеров (Instant Execution) является одним из трёх режимов исполнения рыночных ордеров. Поэтому возникает вопрос, что происходит с рыночными ордерами при режимах исполнения Market Execution и Request Execution? Можно ли обобщающе сказать, что "принятые торговым сервером запросы хранятся в виде ордеров, которые могут быть отложенными или рыночными немедленного исполнения по рыночным ценам"?

Yedelkin
4532
Yedelkin 2011.01.25 12:51  
Interesting:

Насколько я понимаю обработка ведется на стороне клиентского терминала.

Также это подтверждается следующим постом.

ОК, предлагаю дождаться официального ответа. Спасибо, как всегда, за дополнительную информацию. Я тоже так раньше полагал.

Дополнение. Я понял даже, что могдо меня смутить в этом вопросе. В статье словосочетание "первичная обработка" наделяется ссылкой на функцию OrderCheck(),  я и принял эту ссылку за чистую монету, без задней мысли.

Rashid Umarov
Админ
11815
Rashid Umarov 2011.01.25 12:57  
Yedelkin:

Хотелось бы уточнить несколько моментов.

1. Из статьи следует, что для первичной проверки запроса предназначена функция OrderCheck(),  при этом первичная проверка с помощью функции OrderCheck() осуществляется непосредственно  сервером (на стороне сервера), а не в терминале. Правильно?

В статье же сказано, что первичная внутренняя проверка осуществляется в терминале. OrderCheck() также работает в терминале, ничего на сервер не отправляется.
Yedelkin
4532
Yedelkin 2011.01.25 12:59  
Rosh:
В статье же сказано, что первичная проверка осуществляется в терминале. OrderCheck() также работает в терминале, ничего на сервер не отправляется.

В статье сказано: "после отправки запроса он поступает на сервер и проходит первичную проверку". 

Также меня смутило то, что в статье словосочетание "первичная обработка" наделяется ссылкой на функцию OrderCheck(),  я и принял эту ссылку за чистую монету, без задней мысли.

Rashid Umarov
Админ
11815
Rashid Umarov 2011.01.25 13:00  
Yedelkin:

2.

Между тем, могут возникать ситуации, когда запрос уже проверен на корректность, но ещё не принят брокером. Поэтому прошу уточнить в какой именно момент функция OrderSend()  возвращает true -  сразу после проверки запроса на корректность или только после принятия ордера сервером?

Корректный запрос принимается сервером и ответ отправляется терминалу в поле retcode структуры MqlTradeResult - https://www.mql5.com/ru/docs/constants/errorswarnings/enum_trade_return_codes

Код

Идентификатор

Описание

10008

TRADE_RETCODE_PLACED

Ордер размещен

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
Yedelkin
4532
Yedelkin 2011.01.25 13:03  
Rosh:

Корректный запрос принимается сервером и ответ отправляется терминалу в поле retcode структуры MqlTradeResult - https://www.mql5.com/ru/docs/constants/errorswarnings/enum_trade_return_codes

Код

Идентификатор

Описание

10008

TRADE_RETCODE_PLACED

Ордер размещен

Т.е. тем самым Вы хотите сказать, что функция OrderSend()  возвращает true только после принятия (размещения) ордера сервером?
Rashid Umarov
Админ
11815
Rashid Umarov 2011.01.25 13:05  
Yedelkin:


Также меня смутило то, что в статье словосочетание "первичная обработка" наделяется ссылкой на функцию OrderCheck(),  я и принял эту ссылку за чистую монету, без задней мысли.

Вы и меня запутали. Убрал ссылку с сочетания "первичная проверка".
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий