Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Из Справочника:
Все возникающие события клиентский терминал складывает в общую очередь.
...Очередь событий имеет ограниченный размер.
Ну так мне кто-нибудь поможет или нет? На 25 странице 2 советника...
Ругать - ругали. Теперь помогите разобраться. То обвиняли, что не достаточно данных даю для анализа проблемы. Куда уж больше. Что хотите, то и проверяйте.
Наверно все тестируют моих роботов... ну подожду. Наверно надо программиста за деньги нанимать, чтобы он помог ошибку найти.
Кстати, кто-то еще помнит, как тема ветки называется....?
Из Справочника:
Несколько раз уже заходил разговор про очередь событий, а вот про её точный размер - не нашёл. Какая глубина у очереди событий? 64? 256? ... событий?
Прям с языка снял, тоже хотел спросить что будет если очередь событий начнёт накапливаться и захлебнётся? новые события будут игнорироваться или те что уже есть в очереди сбросятся? ну и конечно когда это произойдёт (на каком по очереди событии)?
уже отвечали
https://www.mql5.com/ru/forum/1621/43941#comment_43941
уже отвечали
https://www.mql5.com/ru/forum/1621/43941#comment_43941
Думаю что пояснения всё же нужны, там есть ответ но он размазаный, на мои вопросы нет и намёка.
Ни точного указания длинны очереди, ни какие события будут пропущены (что значит "часть событий будет пропускаться"?) какая часть?, новые или те что в очереди уже стоят? логика тут бессильна, так как может новые события могут быть важнее стоящих в очереди а может наоборот.
Так что лучше всё же уточнить этот момент.
Ну так мне кто-нибудь поможет или нет? На 25 странице 2 советника...
Ругать - ругали. Теперь помогите разобраться. То обвиняли, что не достаточно данных даю для анализа проблемы. Куда уж больше. Что хотите, то и проверяйте.
Наверно все тестируют моих роботов... ну подожду. Наверно надо программиста за деньги нанимать, чтобы он помог ошибку найти.
Кстати, кто-то еще помнит, как тема ветки называется....?
У вас в mql4 стоит проскальзывание 50, а в mql5 10. Попробуйте поставить одинаковое проскальзывание возможно ситуация выровняется тк много приказов с таким слипажем может просто попадать на реквот.
ЗЫ А лучше в обоих вариантах поставьте проскальзывание на размер спреда.
Я повторю вопрос:
Как правильно удалить все ордера с определенным мэджиком?
...Необходимо перебирать список ордеров сверху вниз, например так:
Я попробовал сделать, как вы сказали, но проблема осталась - отложенный ордер сначала удаляется, потом отправляется еще один запрос на удаление того же ордера. Вот пример строк из журнала:
2011.05.12 16:42:57 Trades '726238' : cancel order #4388299 buy stop 0.02 EURUSD at 1.41700 done - ордер удалился успешно
2011.05.12 16:42:57 Trades '726238' : cancel order #4388299 buy stop 0.02 EURUSD at 1.41700 - отправляется еще один запрос
2011.05.12 16:42:58 Trades '726238' : failed cancel order #4388299 buy 0.00 at 0.00000 [Invalid request] - уже почему то buy, а был buy stop
Это происходит не каждый раз, а иногда, и на работу эксперта не влияет. Просто хочется сделать все правильно, не загружать пустыми запросами торговый сервер, и разобраться в проблеме.
Спасибо за ответы, и ваше желание помочь.
-----------------
Попробую высказать своё мнение. Удалять ордер с определённым мэджиком или любой другой - сути дела не меняет, как и перебирать ордера вдоль или поперёк. Можно вообще запоминать ордер, а потом удалять его по тиккету, ошибка будет периодически вылазить.
Как я себе представляю, сервер действительно удалил ордер, о чём свидетельствует сообщение в журнале и в retcode ответа сервера. Но терминал об этом пока не знает, т.е. для него ордер всё ещё в работе (или знает, но выдаёт советнику устаревшую информацию, хотя, тогда-бы ордер на удаление не прошёл бы проверку) и советник на следующем тике вновь посылает запрос на удаление, логично получая от сервера ошибку.
То, что сервер переквалифицировал ордер buy stop в просто buy, по-видимому, ошибка сервера, он не различает эти ордера в случае ошибки запроса. Это на заметку разработчикам.
Как можно избежать повторных запросов ? Я думаю, есть только два пути:
1. После успешного удаления, анализировать последнюю историю, ожидая появления в ней удалённого ордера, потом продолжить.
2. Просто ввести задержку, скажем, секунды две, после выполнения удаления. Одной может не хватить.
Ещё хочу добавить, что подобная ситуация возникает не только с отложенными ордерами, но и с рыночными, а также с позициями, при их изменении. Происходит это довольно редко и заметить можно только при длительной торговле на демо-счёте, в тестере, естественно, не проявляется. Также, после изменения позиции, бывает, что вовращается уровень маржи, существовавший до её изменения, возможно и другие параметры счёта, не проверял.
У вас в mql4 стоит проскальзывание 50, а в mql5 10. Попробуйте поставить одинаковое проскальзывание возможно ситуация выровняется тк много приказов с таким слипажем может просто попадать на реквот.
ЗЫ А лучше в обоих вариантах поставьте проскальзывание на размер спреда.
Я попробую, но вряд ли ситуация улучшится в разы.
А в программировании проблемы у меня есть или все прекрасно?
Думаю что пояснения всё же нужны, там есть ответ но он размазаный, на мои вопросы нет и намёка.
Ни точного указания длинны очереди, ни какие события будут пропущены (что значит "часть событий будет пропускаться"?) какая часть?, новые или те что в очереди уже стоят? логика тут бессильна, так как может новые события могут быть важнее стоящих в очереди а может наоборот.
Так что лучше всё же уточнить этот момент.
1) "складывает в общую очередь" - ошибка в документации. Очередей на самом деле много. На данный момент у каждой mql5 программы и каждого чарта очереди свои. Размеры очередей разные и в целом не маленькие, переполнение очереди для корректно написанной программы маловероятно. Точный размер каждой очереди, их количество, и прочее подробное описание внутренней реализации мы документировать не будем. Причина тут вполне очевидная - внутренняя реализация может меняться.
2) Пропускаться будут любые новые события, для которых не хватило места в данной конкретной очереди.
Напоминаю, что события новый тик и изменение чарта могут существовать в очереди входящих событий mql5 программы только в единственном экземпляре. Генерацию событий создания и удаления графических объектов на чарте можно включать/отключать.
Подскажите, что значат внизу эти зеленые полосы. В МТ4 они значили объем лота и их рисовали, когда лот менялся. А тут зачем? Или у меня лот меняется? Вроде я его не меняю.