Скачать MetaTrader 5

Закрытие позиций в МТ5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Появилась идея? Обсуди ее на форуме трейдеров!
elibrarius
1758
elibrarius 2016.01.04 12:35 

Здравствуйте, вопрос такой:

имеется анализ открытых позиций

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

Пока запрос обработается на сервере, и информация терминала об открытых позициях изменится -  приходят несколько тиков (около 10)  и терминал по старой информации несколько раз посылает запрос на сделку вместо одной.

Какие есть варианты?

Отказаться от асинхронной обработки ордеров + не обрабатывать новые тики, пока не обработается текущий?

Или городить систему прихода ответов на onTrade? (Что значительно усложнит код.)

В МТ4 было проще - послал запрос на закрытие сделки по ее номеру и все! Хоть 10 раз. В противоположную позицию терминал не откроется, как сейчас у меня выходит на МТ5.

Получается еще одно преимущество МТ4, которое в МТ5 решили не включать. Можно и асинхронную работу использовать и без усложнения кода закрывать позиции.

Vasiliy Sokolov
21751
Vasiliy Sokolov 2016.01.05 10:35  
elibrarius:

Здравствуйте, вопрос такой:

имеется анализ открытых позиций

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

Пока запрос обработается на сервере, и информация терминала об открытых позициях изменится -  приходят несколько тиков (около 10)  и терминал по старой информации несколько раз посылает запрос на сделку вместо одной.

Какие есть варианты?

Отказаться от асинхронной обработки ордеров + не обрабатывать новые тики, пока не обработается текущий?

Или городить систему прихода ответов на onTrade? (Что значительно усложнит код.)

В МТ4 было проще - послал запрос на закрытие сделки по ее номеру и все! Хоть 10 раз. В противоположную позицию терминал не откроется, как сейчас у меня выходит на МТ5.

Получается еще одно преимущество МТ4, которое в МТ5 решили не включать. Можно и асинхронную работу использовать и без усложнения кода закрывать позиции.

Огород не городите. Не было никогда в МТ4 асинхронных операций. 

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

Без асинхронного режима все также проста как в МТ4. Есть функция PositionSelect. Если она возвращает true, позиция существует и ее можно закрыть. Если false - позиции нет, и закрывать ее не нужно. Также класс CTrade Вам в помощь:

CTrade Trade;
if(Trade.PositionSelecet(Symbol()))
   Trade.PositionClose();

 Все.

Mikhail Filimonov
5931
Mikhail Filimonov 2016.01.05 10:37  
+100
Andrey Khatimlianskii
56177
Andrey Khatimlianskii 2016.01.05 14:59  
Vasiliy Sokolov:

Без асинхронного режима все также проста как в МТ4. Есть функция PositionSelect. Если она возвращает true, позиция существует и ее можно закрыть. Если false - позиции нет, и закрывать ее не нужно. 

Ну, неправда же.

Если стоп сработает на этом же тике, то PositionClose может открыть встречную сделку. По крайней мере, так было раньше.

Vladislav Andruschenko
91859
Vladislav Andruschenko 2016.01.05 18:23  
Andrey Khatimlianskii:

Ну, неправда же.

Если стоп сработает на этом же тике, то PositionClose может открыть встречную сделку. По крайней мере, так было раньше.

так есть и сейчас на некоторых брокерах. например на Открытии.  там нужно заведомо ставить паузу после совершения операции. 
Andrey Khatimlianskii
56177
Andrey Khatimlianskii 2016.01.07 01:11  
Vladislav Andruschenko:
так есть и сейчас на некоторых брокерах. например на Открытии.  там нужно заведомо ставить паузу после совершения операции. 
Не нужна пауза. Достаточно найти нужную сделку и посмотреть ее статус.
Vladislav Andruschenko
91859
Vladislav Andruschenko 2016.01.07 10:38  
Andrey Khatimlianskii:
Не нужна пауза. Достаточно найти нужную сделку и посмотреть ее статус.

Не буду сейчас спорить не могу найти свою тему. 

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

Возможно это уже исправили в последнем билде .

Был трабл с копиром для мт5. помогло лишь пауза!

кстати сейчас попробую   

хм... демку уже закрыли.... 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий