Ограничения Instant Execution и Market Execution

 

В последнее время наметилась тенденция перехода ДЦ с технологии открытия рыночных ордеров Instant Execution на Market Execution. Причем, кроме вполне понятного ограничения (запрещена установка SL и TP во время отправки торгового приказа), стали выяснятся другие обстоятельства. К примеру, при Market Execution запрещено встречное закрытие позиций и установка времени истечения отложенного ордера.

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

 

ДЦ на ДЦ не приходится.

на некоторых вообще никогда не было времени жизни отложки

на некоторых встречное разрешено даже при MarketExecution.

тут наверно все зависит от возможности самого ДЦ, их прогеров и возможности по их брокерам.

 

Я, в принципе, и хочу узнать, связанные это вещи или нет. Явного описания этих параметров я нигде не встречал.

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

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

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

 
Scriptong:
Просто надо описывать на каких условиях работает советник и быть открытым для модификаций. Выбор ДЦ из узкого круга проверенных возможен в любую сторону. Если в советнике есть смысл, то и ДЦ под советник можно поменять.
 
Scriptong:

Я, в принципе, и хочу узнать, связанные это вещи или нет. Явного описания этих параметров я нигде не встречал.

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

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

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


1. Эти вещи абсолютно не связанные.

2. А что страшного в том, чтобы анализировать полученную ошибку? Ведь ошибки данного рода генерируются самим терминалом, т.е. никакие запросы на сервер не отправляется, ибо терминал уже знает при подключении, какие операции разрешены на данном сервере, а какие нет. И соответственно потерь времени тоже нет. Так что не вижу ничего плохого в том, чтобы проверять торговые условия методом тыка.

3. Странный какой-то способ торговли вы рассматриваете. Трейдер значит постоянно переключается между счетами и на каждом ведёт торговлю, так что ли? Обычно для торговли на разных счетах просто запускается несколько копий терминала в разных папках, соответственно везде можно задать индивидуальные настройки в параметрах эксперта (или в глобальных переменных). И никаких проблем.

 

Кстати, вот простой способ определить наличие Market Execution. Посылаете такой запрос:

OrderSend(Symbol(),OP_BUY,1,0,0,Point,0);

Ордер естественно не откроется. Проверяете результат GetLastError(). Если вернёт 130 (неверные стопы), значит это Market Execution. В противном случае получим ошибку 129 (неверная цена).

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

Удобно эту проверку сделать в ините. А можно даже перед открытием ордера. Я например знаю один ДЦ, который иногда внезапно меняет тип исполнения по некоторым инструментам для определённых клиентов :) У него такая возможность в регламенте прописана. Причём даже перелогин не требуется.

 
abolk:
Выбор ДЦ из узкого круга проверенных возможен в любую сторону. Если в советнике есть смысл, то и ДЦ под советник можно поменять.
На мой взгляд, плохой подход. За примерами далеко ходить не надо: на дверях частенько пишут "Закрывайте двери - холодно (жарко)". Толку от такого решения нет. Люди либо по безалаберности, либо по невнимательности все равно забывают их закрывать. Решение же простое и недорогое - поставить доводчик.
 
Meat:


1. Эти вещи абсолютно не связанные.

2. А что страшного в том, чтобы анализировать полученную ошибку? Ведь ошибки данного рода генерируются самим терминалом, т.е. никакие запросы на сервер не отправляется, ибо терминал уже знает при подключении, какие операции разрешены на данном сервере, а какие нет. И соответственно потерь времени тоже нет. Так что не вижу ничего плохого в том, чтобы проверять торговые условия методом тыка.

3. Странный какой-то способ торговли вы рассматриваете. Трейдер значит постоянно переключается между счетами и на каждом ведёт торговлю, так что ли? Обычно для торговли на разных счетах просто запускается несколько копий терминала в разных папках, соответственно везде можно задать индивидуальные настройки в параметрах эксперта (или в глобальных переменных). И никаких проблем.


1. Какие вещи вы имеете в виду? Market Execution и встречное закрытие? Я как раз и высказал выше недоумение этим фактом. Потому и поднял вопрос. Если вы располагает какой-либо проверенной информацией на сей счет, то пожалуйста, поделитесь. Буду премного благодарен.

2. Хорошо, если так. Это отличный выход. Попробую ваш способ с установкой Buy по цене 0. Спасибо за идею.

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

 
Scriptong:


1. Какие вещи вы имеете в виду? Market Execution и встречное закрытие? Я как раз и высказал выше недоумение этим фактом. Потому и поднял вопрос. Если вы располагает какой-либо проверенной информацией на сей счет, то пожалуйста, поделитесь. Буду премного благодарен.

Да, все эти вещи, которые вы и упоминули в начале ветки. Они существуют независимо друг от друга. У меня как-раз основной счёт в ДЦ, где есть и Market, и встречное закрытие, и экспирация отложенных ордеров. Другое дело, что например встречное закрытие может поддерживаться не для всех типов контрактов. Например у меня оно поддерживается только для инструментов группы форекс, а для CFD нет.
Причина обращения: