Терминал: Закрыть позицию или Новый ордер

 

В Терминале есть две команды, с помощью которых можно закрыть позицию

(1) Новый ордер

(2) Закрыть позицию 

Команда (1) не позволяет открыть встречный ордер того же объема и сообщает "Недостаточно денег", если Свободная маржа Маржа 

Команда (2) успешно закрывает позицию.

 

CTrade::PositionClose() судя по исходникам идет по варианту (1).

Тогда как программно закрыть позицию, если недостаточно свободной маржи?

 


 

Попробую по-другому сформулировать свой вопрос

Установить SL == установить отложенный лимит-ордер на объем открытой позиции ?

Выполнить команду терминала "Закрыть позицию" == CTrade::PositionClose() ?


Терзают меня смутные сомнения, что это не одно и то же .

В Правилах Чемпионата записано

4.5. Максимальное количество одновременно выставленных отложенных ордеров по всем символам - 3. 

4.6. Максимальный совокупный объем позиции и отложенных ордеров независимо от направления по одному символу - 15 лотов. Стоп-лоссы и тейкпрофиты не учитываются.

 

Где можно получить информацию по этому вопросу? 

 
yu-sha:

Попробую по-другому сформулировать свой вопрос

Установить SL == установить отложенный лимит-ордер на объем открытой позиции ?

Выполнить команду терминала "Закрыть позицию" == CTrade::PositionClose() ?


Терзают меня смутные сомнения, что это не одно и то же .

В Правилах Чемпионата записано

 

Где можно получить информацию по этому вопросу? 

Думаю, ни то, ни другое. У Вас в обоих случаях ордер на закрытие инициирует терминал. А в случае срабатывания SL или TP ордер на закрытие устанавливается сервером, где хранятся значения стопов для позиции. А на терминал отсылаются параметры ордера для отображения на вкладках 'Торговля' и 'История'.

А что непонятно с Правилами ? По-моему, написано ясно и однозначно.

 
Valmars:

Думаю, ни то, ни другое. У Вас в обоих случаях ордер на закрытие инициирует терминал. А в случае срабатывания SL или TP ордер на закрытие устанавливается сервером, где хранятся значения стопов для позиции. А на терминал отсылаются параметры ордера для отображения на вкладках 'Торговля' и 'История'.

А что непонятно с Правилами ? По-моему, написано ясно и однозначно.

Да с правилами все понятно, непонятно почему вот такая реакция на закрытие встречным ордером - "Команда (1) не позволяет открыть встречный ордер того же объема и сообщает "Недостаточно денег", если Свободная маржа Маржа".


PS

Кстати, как я полагаю прикрываться рекомендуется не отложником а рыночно (чтоб если что не нарушить правило 3-х ордеров)?

 
Interesting:

Да с правилами все понятно, непонятно почему вот такая реакция на закрытие встречным ордером - "Команда (1) не позволяет открыть встречный ордер того же объема и сообщает "Недостаточно денег", если Свободная маржа Маржа".


PS

Кстати, как я полагаю прикрываться рекомендуется не отложником а рыночно (чтоб если что не нарушить правило 3-х ордеров)?

Да и вообще, нафига брать маржу с отложника? По факту исполнения и считайте маржу.

Хотя тогда тоже куча вопросов есть к тому что и как будет твориться в момент срабатывания ордеров...

 

Странно, маржа по встречному не берется однозначно. Вроде и не должна.

С чего это тогда CTrade::PositionClose()  ругаться на нее?...

 
Interesting:

Да и вообще, нафига брать маржу с отложника? По факту исполнения и считайте маржу.

Хотя тогда тоже куча вопросов есть к тому что и как будет твориться в момент срабатывания ордеров...

При срабатывании SL-ордера (это ведь тоже лимит-ордер по идеологии) доп. маржа не взимается

А при срабатывании BUY_LIMIT и SELL_LIMIT почему-то взимается

 

Казалось бы - не парься, используй SL... А вот в ситуации, когда три эксперта  открывают свои ордера в одном направлении и у каждого эксперта свой уровень SL на свой объем, общим SL не обойтись - нужны три LIMIT-ордера. При плохом стечении обстоятельств (а стопы в других случаях не срабатывают)) есть подозрение, что сервер не примет LIMIT-ордер (суть SL отдельного эксперта) с формулировкой "недостаточно денег". 

А вот пример, когда придется совсем не сладко, если действительно для исполнения LIMIT-ордера требуется маржа  :

- депо 10 000USD, открыто 5 лотов GBPUSD. При 1:100  в залоге будет 5х1.5000=7500

- Просели на 40пт, значит средства=10000-5*(15*40)=7000 (+\- копейки)

- значит свободной маржи -500 и, если для открытия LIMIT-ордера на 5 лотов требуется хоть что-то в залог, то ордер не сработает - так получается?

P.S. 

Есть свойство символа SYMBOL_MARGIN_LIMIT (Коэффициент взимания маржи по Limit ордерам) ... что это за зверь и от чего коэффициент ... не понятно

 
Interesting:

Странно, маржа по встречному не берется однозначно. Вроде и не должна.

С чего это тогда CTrade::PositionClose()  ругаться на нее?...

 CTrade::PositionClose() я не проверял

Не дает закрыться встречным команда терминала "Новый ордер" 

Именно эта ситуация вызвала подозрение 

 
yu-sha:

 CTrade::PositionClose() я не проверял

Не дает закрыться встречным команда терминала "Новый ордер" 

По логике вещей если есть открытая поза и идет втречная операция с рынка то возможны три ситуации

1. Закрытие первой позы (когда объемы совпадают);

2. Переворот первой позы (когда объем второй операции больше чем открытая поза);

3. Урезка первой позы (когда объем второй позы меньше чем открытая поза).


При этом с моржой происходит следующее

1. Маржа по второй позе не берется (поскольку мы прикрываем противоположную ранее открытую позу), маржа по первой позе должна освободиться и вернуться на депо;

2. Маржа по открытой позиции возвращается на депо, а затем берется маржа по новой позе (вычисляется как разница объемов позы и новой операции). В реальности наверно будет выглядеть как возврат маржи по первой позе с удержанием моржи на разницу объемов открытой позы и совершаемой операции (или просто говоря в залоге станется маржа на разницу объемов);

3. При урезке картинка подобная той что описана при перевороте.

В общем и целом там или маржа по новой позе вовсе не должна браться либо браться на разницу объемов


Отложники

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


Вот тут то и начинается самое интересное для отложников. Остается выяснить какой отложник не смог открыться и что с ним следует дальше делать (удалять или нет. А также кто это будет делать)...


PS

Насколько помню ФК в подобных случаях просто удаляла отложки и все...

 

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

Каковы требования к свободной марже, когда цена достигает:

  а) уровня SL открытой позиции ? 

  б) уровня отложенного LIMIT-ордера ?

  в) уровня Price(+/-Deviation) при отправке OrederSend'ом ордера типа TRADE_ACTION_DEAL ?

 
yu-sha:

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

Каковы требования к свободной марже, когда цена достигает:

  а) уровня SL открытой позиции ? 

  б) уровня отложенного LIMIT-ордера ?

  в) уровня Price(+/-Deviation) при отправке OrederSend'ом ордера типа TRADE_ACTION_DEAL ?

А причём тут разработчики терминала ? Они просто адаптируют его к требованиям, общепринятым на действующем рынке, а не сами придумывают правила поведения. Поэтому:

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

б) Отложенный ордер сработает в любом случае, но если для открытия открытия ордера на покупку или продажу будет недостаточно свободной маржи, ордер будет отвергнут с установкой соответствующего признака retcode в структуре MqlTradeResul.

в) Аналогично второй части б)

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