Реальный брокер может забанить за частые запросы. Или ошибка 8 ERR_TOO_FREQUENT_REQUESTS Слишком частые запросы
Вообще-то я и не знаю, где это нужно в реальной торговле. Разве что торговля группой из n валют (не пар) против другой группы из m валют, тогда в подходящий момент потребуется открывать сделки сразу на n*m валютных парах. Однако интересно, как разработчики сейчас видят возможность одновременных запросов и сколько их можно делать, не получая сообщения о занятости торгового потока.
На конкурсе-то понятно, там искусственные условия. В наблюдаемом мной случае ограничен объем каждой сделки, но ограничения общего объема открытых одновременно сделок по паре нет.
Не дождавшись ответа разработчиков, выяснил возможности асинхронных подачи и исполнения запросов в MQL4 опытным путем. Только для открытия сделок. Сгенерировал советники по числу богатырей в отряде дядьки Черномора, завел столько же графиков, на которых запустил эти советники. Они ждут появления сигнального файла, с его появлением пытаются открыть сделку. Демосчет. В 5 попытках из 5 открывались ровно 8 сделок с одной и той же секундой во времени открытия, остальные 26 советников давали ошибку ERR_TRADE_CONTEXT_BUSY (146, Подсистема торговли занята). Тикеты вновь открывшихся сделок шли в каждой попытке подряд.
К разработчикам все равно остался вопрос. Асинхронное открытие сделок в MQL4 так и будет возможным только таким изуверским способом? Есть ли намерение реализовать эту возможность в одном советнике, например, так же, как в MQL5?
Не дождавшись ответа разработчиков, выяснил возможности асинхронных подачи и исполнения запросов в MQL4 опытным путем. Только для открытия сделок. Сгенерировал советники по числу богатырей в отряде дядьки Черномора, завел столько же графиков, на которых запустил эти советники. Они ждут появления сигнального файла, с его появлением пытаются открыть сделку. Демосчет. В 5 попытках из 5 открывались ровно 8 сделок с одной и той же секундой во времени открытия, остальные 26 советников давали ошибку ERR_TRADE_CONTEXT_BUSY (146, Подсистема торговли занята). Тикеты вновь открывшихся сделок шли в каждой попытке подряд.
К разработчикам все равно остался вопрос. Асинхронное открытие сделок в MQL4 так и будет возможным только таким изуверским способом? Есть ли намерение реализовать эту возможность в одном советнике, например, так же, как в MQL5?
О количестве запросов одновременно написано в документации. Проведённый тобой эксперимент подтверждает правдивость документации по этому поводу, ровно 8 одновременных потоков.
OrderSendAsync() это не то о чём ведёшь речь. Посылая асинхронный запрос МТ не ждёт ответа от сервера о выполнении и только этим отличается от OrderSend(). По сути, в МТ4 есть возможность проверить выполнение запроса, а при запросе OrderSendAsync() такой возможности нет. Открылись ордера - хорошо, а не открылись, ну и не надо.
Реальный брокер может забанить за частые запросы. Или ошибка 8 ERR_TOO_FREQUENT_REQUESTS Слишком частые запросы
О количестве запросов одновременно написано в документации. Проведённый тобой эксперимент подтверждает правдивость документации по этому поводу, ровно 8 одновременных потоков.
OrderSendAsync() это не то о чём ведёшь речь. Посылая асинхронный запрос МТ не ждёт ответа от сервера о выполнении и только этим отличается от OrderSend(). По сути, в МТ4 есть возможность проверить выполнение запроса, а при запросе OrderSendAsync() такой возможности нет. Открылись ордера - хорошо, а не открылись, ну и не надо.
Рылся-рылся - не нашел. Не будете так добры уточнить местонахождение того, что написано в документации?
Относительно OrderSendAsync() - отчего же нет возможности проверить ход исполнения запроса, для этого как будто и введено событие OnTradeTransaction, если верить справке по MQL5. Или оно чем-то не подходит? Я не пробовал, поделитесь опытом...
Рылся-рылся - не нашел. Не будете так добры уточнить местонахождение того, что написано в документации?
Относительно OrderSendAsync() - отчего же нет возможности проверить ход исполнения запроса, для этого как будто и введено событие OnTradeTransaction, если верить справке по MQL5. Или оно чем-то не подходит? Я не пробовал, поделитесь опытом...
Что-то я тоже не нашёл. Возможно что об этом писали только в презентации обновления, но точно я читал о восьми одновременных запросах.
Относительно OnTradeTransaction делиться в общем-то нечем. Сам сейчас бьюсь в непониманиях. Вот последнее наблюдение:
Открываю позицию. Сразу за ней отложенный ордер...
Хочется увидеть в OnTradeTransaction последовательно открытие позиции со всеми её параметрами в структурах, ан нет... в структурах параметры отложки.
Так-что для использования OnTradeTransaction надо с учётом этого строить весь свой алгоритм программы.
И в документации чётко написано что последовательность транзакций пришедших в OnTradeTransaction не гарантирована.
Что-то я тоже не нашёл. Возможно что об этом писали только в презентации обновления, но точно я читал о восьми одновременных запросах.
Относительно OnTradeTransaction делиться в общем-то нечем. Сам сейчас бьюсь в непониманиях. Вот последнее наблюдение:
Открываю позицию. Сразу за ней отложенный ордер...
Хочется увидеть в OnTradeTransaction последовательно открытие позиции со всеми её параметрами в структурах, ан нет... в структурах параметры отложки.
Так-что для использования OnTradeTransaction надо с учётом этого строить весь свой алгоритм программы.
И в документации чётко написано что последовательность транзакций пришедших в OnTradeTransaction не гарантирована.
У меня тоже воспоминание, что в справке число 8 не появлялось. Получается, что где-то объявленную и работающую возможность отсылать до 8 асинхронных запросов следует считать недокументированной.
Разработчики, так ли это? Если так, то почему? В частности, можно ли на эту возможность опираться в написании скриптов и советников MQL4? Пусть и через 8 окошек...
Почитал https://www.mql5.com/ru/articles/1111, https://www.mql5.com/ru/articles/40, https://www.mql5.com/ru/docs/trading/ordersendasync. У людей OnTradeTransaction вроде работает. Уважаемый AlexeyVik, у вас в приходящих структурах с разными идентификаторами торгового запроса request_id приходит одна и та же информация, относящаяся к запросу выставления отложенного ордера? Или с request_id запроса открытия позиции вообще ничего не приходит?
Vlad143:
AlexeyVik, у вас в приходящих структурах с разными идентификаторами торгового запроса request_id приходит одна и та же информация, относящаяся к запросу выставления отложенного ордера? Или с request_id запроса открытия позиции вообще ничего не приходит?
А кто говорил что OnTradeTransaction не работает? Просто надо понять как это работает, понимать что последовательность событий не соответствует последовательности запросов к серверу...
По-моему request_id бесполезная приблуда. Возможно просто пока я не понял как её можно использовать. По моим наблюдениям это какой-то счётчик. Я его принтовал и получал каждый принт следующее число.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Наблюдал торговлю лидеров на конкурсе, где дают инвестиционный пароль для этого. У одного сегодня заметил 19 сделок с совпадающим временем открытия в секундах. Как он мог это сделать?
Помню, года два назад (не говорю об MQL5) появилась возможность слать запросы на открытие сделок "одновременно" до 8 штук. Как, не описывали, но, похоже, это возможно лишь запуском 8 советников на 8 графиках. А как сделать 19 "одновременных" запросов - может быть, ограничение в 8 запросов уже расширено? Или у этого трейдера VPS находится в Нидерландах, рядом с конкурсным сервером, и его запросы исполняются очень быстро?