Некоректная работа терминала или ошибка программирования робота

 

Здравствуйте.

Может быть у кого-то тоже встречался следующий глюк в МТ4.

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

Но периодически 1-2 раза за сутки возникает ситуация, что робот устанавливает ордер бай-стоп или сел-стоп, который не срабатывает. Он выделяется желтым цветом и при попытке его удалить в окне появляется надпись про инвалидные параметры.

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

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

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

Такое прикрепление (нескольких роботов) увеличивает качество работы всей системы, так как терминал намного лучше реагирует на команды от отдельных роботов, чем если когда все команды скомпанованы в одну программу советник. Выигрыш по времени реакции терминала очень существенный и своевременность исполнения команд при раскидывании на несколько роботов всей логики торговой системы намного выше и оптимальнее.

Но возникает вот такой затык с зависанием ордера или даже двух.

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

Заранее спасибо.

 
Pavel Ipatov:

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

Давно у одного из дилингов , такое неоднократно наблюдал на счетах типа ECN. Лечилось это только перезапуском терминала. После перезапуска ордер выделенный желтым оказывался в рынке и работа советника восстанавливалась... Пытался прояснить проблему , но так ничего выяснить не удалось. Скорее всего такое поведение связано с особенностями работы ECN.

p.s. Если у Вас тип счёта ECN , может стоит просто поменять тип счёта ?

 
Остается спросить у MQ, в каких случаях ордер выделяется желтым цветом. 
 
Sergey Kolemanov:

Давно у одного из дилингов , такое неоднократно наблюдал на счетах типа ECN. Лечилось это только перезапуском терминала. После перезапуска ордер выделенный желтым оказывался в рынке и работа советника восстанавливалась... Пытался прояснить проблему , но так ничего выяснить не удалось. Скорее всего такое поведение связано с особенностями работы ECN.

p.s. Если у Вас тип счёта ECN , может стоит просто поменять тип счёта ?

да счет именно такой.

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

Спасибо за инфу.

 
Алексей Тарабанов:
Остается спросить у MQ, в каких случаях ордер выделяется желтым цветом. 
жёлтый цвет это заморозка ордера
 
Aleksey Semenov:
жёлтый цвет это заморозка ордера

Я думаю надо проконсультироваться у поставщика услуги. Возможно, что на реальном счете этого не будет происходить.

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

Правда не понятно с какими последствиями (как сработавший или просто удаляется).

 
Pavel Ipatov:

Я думаю надо проконсультироваться у поставщика услуги. Возможно, что на реальном счете этого не будет происходить.

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

Правда не понятно с какими последствиями (как сработавший или просто удаляется).

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

 
Sergey Kolemanov:

Давно у одного из дилингов , такое неоднократно наблюдал на счетах типа ECN. Лечилось это только перезапуском терминала. После перезапуска ордер выделенный желтым оказывался в рынке и работа советника восстанавливалась... Пытался прояснить проблему , но так ничего выяснить не удалось. Скорее всего такое поведение связано с особенностями работы ECN.

Это древний баг именно MT4, когда Терминал и торговый сервер остаются несинхронизированными до реконнекта.

Когда-то специально на такие случаи писал скрипт, который отслеживал подобные ситуации и через WinAPI делал реконнект для Терминала на VPS.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия MetaTrader 4 Client Terminal build 402

ANG3110, 2011.08.03 01:26

Уважаемые разработчики!

При реальной торговле экспертами в терминале есть очень серьезный баг!

Стоит один терминал с советниками на одном сервере. А второй используется для контроля дома. Эксперты используют отложенные ордера.

Периодически происходит следующая вещь. На торговом терминале горит желтая линия, что ордер уже давно должен был включиться и цена находится далеко за отложенным ордером. Но то что он включился, терминал не показывает. А на контрольном терминале, то что ордер включился показывает. И ордер есть в списке открытых ордеров и считается прибыль, как положено. Но поскольку торговый терминал не получил сигнала, что отложенный ордер включился, то эксперт уже дальше не совершает никаких действий. То есть не выставляет тейкпрофитов на нужном уровне и вообще не видит включенного ордера. Притом такое происходит очень часто, чуть ли не каждый день, и насколько я знаю не у меня одного. Грешить на сервер - отпадает, поскольку я пробовал торговать на разных компьютерах и на разных серверах, которые даже находятся в разных странах и всюду выскакивает этот баг. Вести же автоматическую торговлю не контролируя включение ордеров экспертом очень затруднительно и постоянно на нервах, особенно если оставляешь эксперта на сутки или на ночь. Устраняется этот дефект закрытием и открытием терминала повторно.

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

 
Pavel Ipatov:

Здравствуйте.

Может быть у кого-то тоже встречался следующий глюк в МТ4.

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

Но периодически 1-2 раза за сутки возникает ситуация, что робот устанавливает ордер бай-стоп или сел-стоп, который не срабатывает. Он выделяется желтым цветом и при попытке его удалить в окне появляется надпись про инвалидные параметры.

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

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

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

Такое прикрепление (нескольких роботов) увеличивает качество работы всей системы, так как терминал намного лучше реагирует на команды от отдельных роботов, чем если когда все команды скомпанованы в одну программу советник. Выигрыш по времени реакции терминала очень существенный и своевременность исполнения команд при раскидывании на несколько роботов всей логики торговой системы намного выше и оптимальнее.

Но возникает вот такой затык с зависанием ордера или даже двух.

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

Заранее спасибо.

Это не в ДЦ дело, а в Метатрейдере - проблема известно давно, многие периодически с ней сталкиваются, но не в силах разобраться списывают все на полтергейст, козни ДЦ и прочее)) Пишите заявку в сервисдеск, пинайте их почаще - только не молчите. Чем больше заявок, тем выше вероятность, что исправят проблему.

Суть проблемы в том, что идет рассинхронизация событий между вашим терминалом и сервером метатрейдера у брокера. На сервере брокера ордер уже исполнился и стал рыночным, а в терминале у вас он еще остался, как лимитный (тут неважно лимитный или стоп-ордер). Когда вы пытаетесь удалить этот ордер,  то на сервер брокера идет команда – удалить такой-то лимитный ордера, а на сервере его уже нет! - он уже исполнился и на сервере обозначен как рыночный. Получается глюк системы, который лечится только перезагрузкой терминала.

С такой ошибкой встречался я, fxsaber и, плюс,  периодически всплывают такие темы на форуме, в которых никто не может разобраться в сути проблемы и просто забивают на нее,  обычно списывая на козни ДЦ. Так вот, это козни не ДЦ, а Метаквотов,  которые годами не могут исправить проблему.  Пишите в сервисдеск.

Вот копия заявки, которую я отправил в сервисдеск уже более года назад. Обещали исправить, а воз и ныне там:

MetaTrader 4 Platform: ошибка - зависает исполнившийся лимитный ордер при попытке удаления
Открыта, Начата: 2017.06.06 12:37, #1766459

Здравствуйте! В МТ4, при удалении лимитного ордера расположенного внутри спреда часто возникает ситуация ошибки – зависает удаляемый ордер, которая лечится только перезагрузкой терминала. Насколько я смог разобраться механизм ее возникновения такой:

    1)  Выставляем лимитку  внутри спреда, близко к цене Ask (для ордеров Buy Limit) или Bid (для ордеров Sell Limit) и через некоторое время пробуем её удалить.

    2)  Посылаем команду OrderDelete(), пока эта команда идет на сервер - ордер может уже исполниться на сервере (он же внутри спреда очень близко к цене активации). Получается, что когда команда дойдет до сервера, она будет применена уже к рыночному ордеру – получаем ошибку в терминале и зависший ордер. Ордер в терминале, при этом, остается лимитным  (через функцию OrderType() - также определяется как лимитный), рыночным он отобразится только после перезагрузки терминала. Если продолжать удалять его как лимитный  будем видеть ошибку в логе экспертов под кодом: 3, а в логе журнала терминала:  [Invalid parameters]. Вообще никакие действия с подвешенным таким образом ордером невозможны – в терминале он лимитный, а на сервере  рыночный. Вручную ордер так же не удаляется.

Прилагаю упрощенный советник (только для Buy Limit), для воспроизведения ошибки, и профиль с установленными параллельно 8-ю советниками (так ошибка проявится быстрее, чем, если ее ловить одним советником – хотя она возникает и при одном установленном советнике). Ордер Buy Limit в советнике устанавливается на 1 пятизначный пункт ниже цены Ask и удаляется через 1 секунду после установки. Если установить ордер даже в 5 пунктах ниже Ask и удалять через  любое количество секунд/минут/часов ошибка все равно периодически возникает, просто реже, потому что механизм ее возникновения не меняется.

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


Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 
 fxsaber, почти дубль получился. Ничего страшного))
 
zenz:
 fxsaber, почти дубль получился. Ничего страшного))

Приветствую. Действительно, обсуждали.

Причина обращения: