MT3: Expert не смог закрыть сделку

 
Expert не смог закрыть сделку на MetaTrader v3.83 (Win2000, Alpari)

Вот лог:

12:00:29 Expert 'HyperScan': Analysing EURUSD at 2005.05.05 10:00
13:00:28 Expert 'HyperScan': Analysing EURUSD at 2005.05.05 11:00
13:00:28 Expert 'HyperScan': Trade signal: close sell #1222877 EURUSD
13:00:28 Expert 'HyperScan': close #1222877 0.60 lots at 1.2978 [slippage 3]
13:00:28 '10107': close order #1222877 at price 1.2978
13:00:32 '10107': requote 1.2974 / 1.2977
13:00:32 '10107': close order #1222877 at price 1.2977
13:00:54 '10107': requote 1.2972 / 1.2975
14:02:34 Expert 'HyperScan': Analysing EURUSD at 2005.05.05 12:02
15:01:13 Expert 'HyperScan': Analysing EURUSD at 2005.05.05 13:00

Во-первых, непонятно почему идет "requote", разве Instant Execution не работает?
Во-вторых, не понятно почему не закрылись после "requote", ведь slippage был 3 пункта,
и разница между полученными котировками и ценой закрытия была не более 2 пунктов?

Заранее спасибо за помощь
 
1. заявка на закрытие
13:00:28 Expert 'HyperScan': close #1222877 0.60 lots at 1.2978 [slippage 3]
13:00:28 '10107': close order #1222877 at price 1.2978


2. в МТ3 сервер ничего не знает о slippage (он не передается на сервер), поэтому выдает чистый реквот

13:00:32 '10107': requote 1.2974 / 1.2977


3. терминал соглашается с новой ценой на 1 пипс хуже и пытается закрыться снова

13:00:32 '10107': close order #1222877 at price 1.2977


4. к сожалению, прошло 22 секунды, цена ушла и сервер снова дал реквот

13:00:54 '10107': requote 1.2972 / 1.2975



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

В МТ4 стало гораздо легче - теперь параметр slippage является стандартной характеристикой заявки и передается на сервер. Если будет реквот, то он автоматически проверится на сервере и отработается по новой цене. Это позволило быстрее и гарантированнее проводить сделки, особенно на быстром рынке.

Параметр slippage на сервере ни в коем случае не передается на сторону дилера и недоступен даже через MetaTrader Server API. Это сделано для того, чтобы нельзя было видеть - насколько согласен клиент ухудшить цену.

 
Параметр slippage на сервере ни в коем случае не передается на сторону дилера и недоступен даже через MetaTrader Server API. Это сделано для того, чтобы нельзя было видеть - насколько согласен клиент ухудшить цену.


Это достойно!

Нельзя ли пояснить ещё немного глубже?
Насколько я понимаю, у маркет-мейкера имеется 2 варианта диалога с трейдером:
- отвечать "вручную" на каждый запрос;
- поставить исполнение запросов "на автомат".

Можно ли хотя бы в общих чертах охарактеризовать преимущественный режим работы маркет-мейкера на новом сервере МТ4? Какие у него появятся (если появятся) новые пожелания настроек?

Скажем, будет ли у него возможность поставить "на автомат" исполнение всех запросов, попадающих в заданный им коридор люфта цены? Эта цифра может декларироваться ДЦ и расцениваться и ими и трейдерами как х-ка привлекательности того или иного ДЦ.
Одно дело, ДЦ декларирует "автоматическое" (моментальное) исполнение при проскальзывании не более 1п, а другое - по второму касанию на динамическом спреде через неопределённое время, и третье - ничего не декларирует.

При работе с кросс-курсами, например EUR/GBP, знание ответов на эти вопросы может быть определяющим.
 
Можно ли хотя бы в общих чертах охарактеризовать преимущественный режим работы маркет-мейкера на новом сервере МТ4? Какие у него появятся (если появятся) новые пожелания настроек?

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

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

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

За счет полностью переписанных механизмов приема и обслуживания заявок в MetaTrader 4 производительность поднята раза в 3 по сравнению с MetaTrader 3 на том же самом железе:
"Производительность MetaTrader Server 4"
 
Понятно. Cпасибо.
 
Параметр slippage на сервере ни в коем случае не передается на сторону дилера и недоступен даже через MetaTrader Server API. Это сделано для того, чтобы нельзя было видеть - насколько согласен клиент ухудшить цену.

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

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

При этом дилер не получит слипэдж (и может быть еще что) напрямую через ваш софт, но местные кулибины сделают это помимо вашей системы. Причем даже необязательно в онлайн. Можно раз в сутки (и реже) анализировать логи и дать дилеру доступ к результатам анализа. Люди не часто меняют привычки. Если ктото последний месяц был согласен на слипэдж в 5п, то вряд ли он сегодня сменит это значение.

Есть ли какая защита от подобных действий ДЦ?
И насколько легко это может быть реализовано месными силами ДЦ?
 
Насколько можно быть в этом уверенным?
Если бы сервер находился за пределами ДЦ и был бы ему недоступен, тогда гарантия была бы достаточно высока. А имея физический доступ к серверу часто можно сделать довольно многое.

Мы гарантируем невозможность получения доступа к полю slippage в ордере. Для нас это очень важно - чтобы никто никогда не сказал - "системой нельзя пользоваться потому что брокер знает мой допустимый сдвиг".

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

Кстати, я уже многократно говорил "slippage не показывается" ни в логах, ни в базах, ни в API(там соответствующие поле затирается). Если я это многократно утверждаю и открыто акцентирую на этом внимание, то значит оно так и есть. И кулибины не помогут.
 
2. в МТ3 сервер ничего не знает о slippage (он не передается на сервер), поэтому выдает чистый реквот
...
3. терминал соглашается с новой ценой на 1 пипс хуже и пытается закрыться снова
...
4. к сожалению, прошло 22 секунды, цена ушла и сервер снова дал реквот



И все-таки, не очень понятно почему не закрывается позиция.
Ведь терминал послал заявку закрыть SELL по 1.2978,
за это время цена(Ask) ушла на один пункт вниз к 1.2977
и для меня эта цена была не хуже,
а наоборот, еще более выгодной для закрытия короткой позиции.
И тем не менее, позиция на сервере не была закрыта!

Далее цена ушла к 1.2975 что уже на 3 пункта лучше
той что была запрошена, и результат тот же.

Невольно напрашивается вывод,
что сервер работает в пользу брокерской компании,
причем весьма грубым способом.
(Либо брокер может "конфигурировать" его под себя)

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

Прочтите, пожалуйста, мой ответ еще раз. Там все точно изложено.

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

Вывод с точностью до наоборот. Сервер дважды давал реквот с улучшением цены. Сначала на 1 пипс, а потом еще на 2 пипса. То есть, сервер абсолютно честно предлагал совершить сделку по более лучшей цене.
 
Непонятно одно,
если клиент послал заявку закрыть позицию,
и цена закрытия устроила сервер, то почему сервер её не закрыл?

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

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

Рынок EURUSD на 1.2930/34 , приходит клиентская заявка купить по 1.2938 . Если работать не совсем честно, то можно было бы согласиться на такую цену (позволить купить на 4 пункта хуже рынка), но MetaTrader Server такого не позволяет и сразу же выдает честный реквот.

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