У меня блокируется половина сделок по причине [off quotes].

 

При торговле советником на одном из ДЦ у меня просто напросто блокируется половина сделок по причине [off quotes].
При этом зависание открытия ордера составляет 3 минуты. При обращении в Техподдержку ДЦ я получил такой ответ:

Уважаемый клиент!
Мы внесли изменения в работу наших дилеров-автоматов, что возможно решит проблему off-квотов (таймаута). Но у нас также есть предположения, что возможно Ваш советник не обрабатывает ответ от дилера с новой котировкой и поэтому возникает таймаут (180 секунд дилер ждет ответа, но не получает).
Поэтому просим обратить на это внимание.

Сегодня я из-за отказа закрыть сделку по Оф Квот потерял 100 долларов и инвестору это крайне не понравилось.

Может это я туплю, или из меня пытаются сделать дурака, таким образом мешая торговать?
И может ли советник сам давать команду на ответ диллера с новой котировкой?

 
Желательно при таких вопросах прикладывать лог файл из терминала. При наличии логов можно будет дать квалифицированный ответ.
 
Serg_ASV:

Сегодня я из-за отказа закрыть сделку по Оф Квот потерял 100 долларов и инвестору это крайне не понравилось.

Сергей, это начальная (пока ещё деликатная) стадия борьбы с пипсовщиками. Где-то читал, что один из прибалтийских ДЦ блокировал несколько счетов гридерам и снифферам. Долго воровать не дадут - рано или поздно заметят и скорее всего это произойдёт раньше чем успеешь вывести больше чем ввёл.
 
Прикрепляю лог-файл.
Но все же ответьте - советник может реагировать сам на запрос ДЦ об изменении цены?
Файлы:
20080207.zip  44 kb
 
Serg_ASV:
Прикрепляю лог-файл.
Но все же ответьте - советник может реагировать сам на запрос ДЦ об изменении цены?
Попробуйте прикрепить в виде ZIP архива.

Сергей, это начальная (пока ещё деликатная) стадия борьбы с пипсовщиками. Где-то читал, что один из прибалтийских ДЦ блокировал несколько счетов гридерам и снифферам. Долго воровать не дадут - рано или поздно заметят и скорее всего это произойдёт раньше чем успеешь вывести больше чем ввёл.
Сначала надо посмотреть на логи. Сразу гарантированно ответь тут нельзя.
 
Налицо небрежное программирование. Одновременно торгует несколько экпертов, постоянно нарываются на попытки одновременных операций, получают постоянные Trade context busy:
00:31:50 '153987': order buy 0.40 EURUSD opening at 1.4628 sl: 1.4426 tp: 1.4633 failed [Trade context is busy]
00:31:50 TradeDispatcher: trade context is busy
00:31:52 '153987': order buy 0.40 EURUSD opening at 1.4629 sl: 1.4427 tp: 1.4634 failed [Trade context is busy]
00:31:52 TradeDispatcher: trade context is busy
Off quotes выдаются верно - на открытии рынка или в ночное время при медленном обновлении цен (да еще на таком кроссе) off quotes - это норма:
00:00:14 '153987': order buy 1.60 EURGBP opening at 0.7459 sl: 0.7257 tp: 0.7464 failed [Off quotes]
00:00:34 '153987': instant order buy 1.60 EURGBP at 0.7459 sl: 0.7257 tp: 0.7464
00:00:35 '153987': request was accepted by server
00:00:35 '153987': request in process
00:03:37 '153987': order buy 1.60 EURGBP opening at 0.7459 sl: 0.7257 tp: 0.7464 failed [Off quotes]
То, что одновременно два эксперта (а скорее всего эксперт и трейдер вручную) пытаются закрыть один ордер и один из них получает off quotes - это верно:
00:36:53 '153987': close order #554089 buy 0.20 EURUSD at 1.4631 sl: 1.4429 tp: 1.4636 at price 1.4634 (один начал закрытие)
00:36:54 '153987': request was accepted by server
00:36:54 '153987': request in process (заявка в процессе исполнения)
00:39:19 '153987': close order #554089 buy 0.20 EURUSD at 1.4631 sl: 1.4429 tp: 1.4636 at price 1.4631 (второй начал закрытие!!!)
00:39:19 '153987': request was accepted by server
00:39:19 '153987': request in process
00:39:20 '153987': client closed trade dialog during order processing (один из них вручную отказался от операции)
00:39:21 '153987': order #554089 buy 0.20 EURUSD at 1.4631 sl: 1.4429 tp: 1.4636 closed at price 1.4631 (позиция закрылась)
00:39:57 '153987': order #554089 buy 0.20 EURUSD closing at 1.4634 failed [Off quotes] (второй получил отказ)
Или еще один случай - один эксперт модифицирует ордер, а другой эксперт закрывает ордер:
23:52:49 '153987': close order #560004 buy 0.10 EURUSD at 1.4486 sl: 1.4284 tp: 1.4686 at price 1.4480 (один закрывает ордер)
23:52:49 '153987': request was accepted by server
23:52:50 '153987': request in process
23:54:01 '153987': modify order #560004 buy 0.10 EURUSD at 1.4486 sl: 1.4284 tp: 1.4686 -> sl: 1.4284 tp: 1.4484 (другой - модифицирует!!!)
23:54:02 '153987': request was accepted by server
23:54:02 '153987': request in process
23:54:05 '153987': order #560004 buy 0.10 EURUSD at 1.4486 was modified -> sl: 1.4284 tp: 1.4484 (модификация удалась)
23:55:51 '153987': order #560004 buy 0.10 EURUSD closing at 1.4480 failed [Off quotes] (а закрытие обломалось)

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

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

Рекомендую обратиться в службу поддержки своего брокера для разъяснения ситуации.
 
Renat:
Все понятно - небрежное программирование. Одновременно торгует несколько экпертов, постоянно нарываются на попытки одновременных операций, получают постоянные Trade context busy:
Общий вывод: при таком стиле торговли результат будет только один - полная засада. Нет ни контроля одновременого трейдинга, видно, что одноврменно и беспорядочно торгует несколько экспертов (включая самого трейдера вручную). Весь лог забит сообщениями об ошибках.

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

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


1) с Trade context busy согласен полностью - эту ошибку я пока не устранял. Да и она бы не так часто вылазила, если б задержка не составляла 3 минуты.


2) Каждый эксперт работает со своими сделками. Я иногда вручную пытался вытянуть сделки - закрыть их пока идет длительный запрос или поставить близкий СЛ или ТР дабы не слить окончательно.

3) По поводу двойного закрытия я уже сказал - ну не могу я ждать 3 минуты ответа сервера когда идет просадка и естественно я лезу руками. И поверьте - если я не лезу руками - все равно выйдет ОфКвотес + увеличится просадка.

4) Если ОфКвотез на ночном рынке это норма - то как его можно обойти?

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

Пути решения:
  1. в первую очередь переделать экспертов на безукоризненное управление торговыми операциями
  2. а дальше обратиться в службу поддержки брокера и конструктивно обсудить этот вопрос (если Вам укажут на недопустимость высокой частоты/ошибочных/ненормальных торговых операций, то лучше принять это к сведению, извиниться и перестроить свою работу).
За последние несколько лет мы (как разработчики) видели кошмарные случаи бомбардировки торговых серверов некорректными заявками с использованием автотрейдинга. Много работы было проведено для исправления ситуации, но все равно остаются возможности "достать" брокера. Обязательно учитывайте позицию брокера, особенно когда в Ваших логах появляется много ошибок исполнения.
 
Renat:

За последние несколько лет мы (как разработчики) видели кошмарные случаи бомбардировки торговых серверов некорректными заявками с использованием автотрейдинга. Много работы было проведено для исправления ситуации, но все равно остаются возможности "достать" брокера. Обязательно учитывайте позицию брокера, особенно когда в Ваших логах появляется много ошибок исполнения.

А почему нельзя реализовать блокировку некорректных сигналов в самом терминале, фактически как это делает тестер?
 
Serg_ASV:
Renat:

За последние несколько лет мы (как разработчики) видели кошмарные случаи бомбардировки торговых серверов некорректными заявками с использованием автотрейдинга. Много работы было проведено для исправления ситуации, но все равно остаются возможности "достать" брокера. Обязательно учитывайте позицию брокера, особенно когда в Ваших логах появляется много ошибок исполнения.

А почему нельзя реализовать блокировку некорректных сигналов в самом терминале, фактически как это делает тестер?


В той части, где это оправдано, так и сделано (см. Общий порядок проведения торговых операций). На сервер не уходят торговые приказы с терминала в случаях явных ошибок, например, при завышенной стоимости ордеров или если StopLoss на ордере Buy заявлен выше цены открытия. В этом случае терминал отрабатывает моментально, т.е. "отпускает" торговую функцию без задержек (речь может идти только о долях миллисекунд).

Если же торгуют одновременно два эксперта, то один из них, естественно, получает отказ (мгновенно). И уже дело программиста составить программу так, чтобы правильно обработать текущую ситуацию. В общем случае нужно как минимум знать сколько программ работает одновременно (см. Переменные GlobalVariables) и использовать специально составленную для конкретного случая пользовательскую функцию обработки ошибок (см. Функция обработки ошибок).

Посмотрите также в поиске 146 https://www.mql5.com/ru/search.

 
Serg_ASV:
Renat:

За последние несколько лет мы (как разработчики) видели кошмарные случаи бомбардировки торговых серверов некорректными заявками с использованием автотрейдинга. Много работы было проведено для исправления ситуации, но все равно остаются возможности "достать" брокера. Обязательно учитывайте позицию брокера, особенно когда в Ваших логах появляется много ошибок исполнения.

А почему нельзя реализовать блокировку некорректных сигналов в самом терминале, фактически как это делает тестер?
Терминал блокирует, но не все.

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