Недавно мы добавили новую настройку в сервис Настройки торговли, которая позволяет получить абсолютный контроль над исполнение вашего ордера. О том, как ее использовать, расскажу ниже, а пока расскажу вам зачем это нужно.
Сегодня в чате RannForex был очередной разбор типичной ситуации.
У человека проскользил маркет ордер более ожидаемого, при том, что он использовал настройку торговли "ограничение проскальзывания стоп и маркет ордеров", которая ограничивает проскальзывание выставленным в ЛК значением от цены, которая была на сервере в момента прихода ордера. Он думал, что отсчет идет от цены в терминале в момент отправки приказа, а он идет от цены на сервере в момент получения приказа сервером. А т.к. между этими двумя событиям проходит время, равное пингу, то при быстром движении проскальзывание может стать заметно больше, чем ожидает трейдер. Он обратился в чат, ему объяснили то, почему так произошло, и то, как нужно делать правильно.
Для начала расскажу вам все варианты, как трейдер может проконтролировать исполнение маркет ордера в МТ.
1. Стандартный вариант, который есть у большинства МТ брокеров по-умолчанию. При этом варианте трейдер не может проконтролировать исполнение НИКАК. Пример: цена 100, трейдер жмет кнопку купить по рынку, и получает купленную позицию по цене 1000. Бинго! Брокер или поставщик в дамках, трейдер может быть свободен, он свою миссию барана выполнил, его обстригли.
2. Технологичный вариант, который есть у небольшого процента брокеров с достойными дилинговыми технологиями. Брокер (если он не кухонный) может ограничить проскальзывание отправкой поставщику маркет ордера в виде лимитного по цене хуже текущей на размер максимально допустимого проскальзывания. Это уже лучше, но минусы тут в том, что клиент не может сам задавать размер проскальзывания, и тут невозможно учесть движение цены между терминалом и сервером, о чем я писал выше.
3. Очень технологичный вариант, который был у брокеров, использующих технологии AMTS Solutions и сервис Настройки торговли. Там клиент мог сам задавать максимально допустимый размер проскальзывания маркет и стоп оредеров. При использовании этой настройки брокер шлет поставщику не маркет, а лимит по цене хуже на размер проскальзывания. Например, цена 100, клиент хочет купить по цене не хуже 120, он выставляет максимальное проскальзывание 20 и поставщику отправляется Buy Limit по цене 120, который либо исполняется, либо отменяется. При этом сперва была возможность выставить лишь единое значение для всех инструментов, что не очень удобно, т.к. пункты у разных пар заметно отличаются. Позже была добавлена возможно выставлять индивидуальные значения для разных инструментов. Но остается проблема, что нельзя учесть движение цены в момент пока ордер летит от терминала до сервера, т.к. маркет ордер в МТ не содержит в себе цены, и нельзя на сервер передать цену из терминала. Объясню подробнее. Клиент выставил проскальзывание 20, цена в терминале 100, отправляет маркет на покупку, пока он летит цена меняется, и в момент прихода на сервер там цена уже 120, в иитоге поставщику отправляется лимит на покупку по цене 140, и у клиента допустимое проскальзыание увеличивается с 20 до 40.
4. Идеальный вариант, который появился у AMTS недавно. Появился он по просьбе профессиональных скальперов, которые заметили RannForex и пришли туда торговать. Их совершенно не устраивал вариант невозможности проконтролировать исполнение. Можно было бы использовать лимит, но проблема МТ в том, что нельзя отправить лимит хуже текущей цены, а если его отправлять по текущей цене, то он тоже шлется через раз, т.к. цене достаточно измениться на 1 пункт, чтобы МТ уже отреджектил ордер. В общем вот так и родилась идея с настройкой слать лимит по цене хуже текущей на выставленное значение. Эта настройка позволяет обойти ограничение МТ. Суть настройки в том, что если выставить значение, например, 20 и отправить лимит на покупку по цене 100, то Buy Limit будет отправлен поставщику не по цене 100, а по цене 120. И теперь у трейдера (особенно у алготрейдера) есть возможность с точностью до пункта задавать максимальную или минимальную цену, по которой может исполниться ордер.
Теперь конкретный пример
Допустим вам необходимо ограничить проскальзывание 20 пунктами от текущей рыночной цены, который вы (или ваш советник) видите в терминале. Ваши действия такие:
1. Идете в личный кабинет и выставляете значение 50 пунктов в настройке Отправка лимитных ордеров в рынок по цене хуже текущей на N пунктов. 50 непринципиальное значение, просто надо выставить с запасом и больше, чем максимально допустимое проскальзывание, чтобы колебания цены в момент отправки не отменяли ордер.
2. Далее вместо маркета на покупку отправляете лимитный ордер с ценой, рассчитанной по формуле: Ask + Slippage*Point - Setting*Point, где Ask - текущий Аск, Slippage - допустимое проскальзывание, Setting - значение настройки. В нашем примере надо будет отправить лимитный ордер по цене 70 (100 + 20 - 50). МТ такой ордер пропустит, т.к. 70 лучше рынка, а к поставщику попадет Buy Limit по цене 120, что нам и необходимо.
Вот эта настройка:

Вот так выглядят основные куски робота на MQL4

Контролируйте исполнение ваших ордеров, не доверяйте никому, кроме себя, торгуйте у правильных брокеров. )))
Оставлено 5 комментария
2019-11-26 20:45:23
Если нужно отправить реальный BuyLimit по 70 (из примера), но при этом не лишаться возможности умных маркет-ордеров?
2019-11-26 21:04:17
Если будет реджект умного маркет-ордера, то сколько раз он будет перевыставлен?
2019-11-26 21:07:41
Если в примере отправить BuyLimit по 20, то это выставит реальный BuyLimit по 70 и он не будет сразу удален? Т.е. станет полноценным лимитным ордером?
2019-11-26 22:43:29
Есть настройка, которая работает на маркетах и стопах, а есть которая на лимитах, они не пересекаются, поэтому можно использовать и то, и другое.
Если отправить лимит из примера, то он либо зальется если цена ниже, либо отменится, если цена уйдет выше и лимит не успеет к этому времени залиться.
Если выставить лимит по 20, он выставится по 70, то в этом смысла не будет, но как он себя поведет (отменится или останется висеть) надо уточнить, какая у нас там сейчас логика сейчас заложена, сходу не скажу.
2019-11-27 09:01:58
Выяснил тонкости. Вся логика как у обычного лимита. Если залился частично, то останется часть, если не залился, останется висеть лимитом.
В вашем примере, если отправить BuyLimit по 20, то он будет висеть лимитом на уровне 70, но активируется, когда цена опустится до 70.