Стандартная библиотека. Косяки. - страница 2

 
Alexey Oreshkin:
...

Повторяюсь - в хелпе ни слова нет о том что  метод PositionClose на хеджевом счёте смотрит и за магиком тоже, поэтому надо либо исправить хелп, либо скорректировать указанную выше строку в библиотеке. Собвтенные мысли о том где что будет работать или нет можете оставить при себе.

Зато есть такое: 

В структуру торгового запроса MqlTradeRequest добавлены два новых поля:
  • position — тикет позиции. Следует заполнять при торговле с хеджированием при изменении и закрытии позиции для ее однозначной идентификации. При торговле с неттинговой системой учета заполнение этого поля ни на что не влияет, поскольку идентификация позиции происходит по имени торгового инструмента.
  • position_by — тикет встречной позиции. Используется при закрытии позиции встречной — открытой по тому же инструменту, но в противоположном направлении. Используется только при хеджинговом учете позиций.

 

И в классе CTrade.PositionClose:

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

 
Alexey Oreshkin:
1. Начнём с того что всё закрывается на ура. Хотя в рабочих экспертах использую немного другую конструкцию для закрытия всего.

...

2. Тот кто много знает порой плохо спит, потому что отвечает не на поставленные вопросы.

Повторяюсь - в хелпе ни слова нет о том что  метод PositionClose на хеджевом счёте смотрит и за магиком тоже, поэтому надо либо исправить хелп, либо скорректировать указанную выше строку в библиотеке. Собвтенные мысли о том где что будет работать или нет можете оставить при себе.

1. Определитесь уж:

и ожидаем что он закроет всё.

Но оказывается, если сделки открыты роботом и им присвоен какой либо магик, то эти сделки не закроются. Смотрим код библиотеки Trade.mqh и видим такую строку под номером 1504:

 2. Во первых, вообще ни на что не отвечал. Во вторых, какая у вас невинная наивность, вот кто-то должен читать ваши мысли и отвечать на них в хэлпе.

 
Karputov Vladimir:

Зато есть такое: 

В структуру торгового запроса MqlTradeRequest добавлены два новых поля:
  • position — тикет позиции. Следует заполнять при торговле с хеджированием при изменении и закрытии позиции для ее однозначной идентификации. При торговле с неттинговой системой учета заполнение этого поля ни на что не влияет, поскольку идентификация позиции происходит по имени торгового инструмента.
  • position_by — тикет встречной позиции. Используется при закрытии позиции встречной — открытой по тому же инструменту, но в противоположном направлении. Используется только при хеджинговом учете позиций.

 

И в классе CTrade.PositionClose:

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

Да так и есть, хелп читаю постоянно и стандартную библиотеку также постоянно проверяю, но в этом тексте выше нет ни слова про магик, а если мы посмотрим файл Trade.mqh то видим там строчку:
if(position_symbol==symbol && m_magic==PositionGetInteger(POSITION_MAGIC))
где идёт явное сравнение магиков.  Думаю пора объявить конкурс на ответы не по теме.
 
Dmitry Fedoseev:

1. Определитесь уж:

 2. Во первых, вообще ни на что не отвечал. Во вторых, какая у вас невинная наивность, вот кто-то должен читать ваши мысли и отвечать на них в хэлпе.

какие мысли ? в первом сообщении чётко и ясно всё сформулировано. или его продублировать ?  может со второго раза будет понятнее в чём вопрос ?
 
Alexey Oreshkin:

...

Или я что то неправильно понимаю ?

...

Да! Вы неправильно понимаете.

Теперь то это точно ответ на ваш вопрос? Или опять нет? 

 
Alexey Oreshkin:
какие мысли ? в первом сообщении чётко и ясно всё сформулировано. или его продублировать ?  может со второго раза будет понятнее в чём вопрос ?
Как какие? Ваши. Вам же кажется, что в хэлпе что-то не дописано. Значит надо дописать исключительно для вас.
 
Dmitry Fedoseev:
Как какие? Ваши. Вам же кажется, что в хэлпе что-то не дописано. Значит надо дописать исключительно для вас.
Почему исключительно для меня? Я единственный кто пользуюсь хелпом ? или описанная ситуация не явная ошибка разработчиков ?
Далее в этой теме тебе более не отвечаю, не вижу смысла общения со зрителем ворот.
 
Alexey Oreshkin:

На хеджевом счёте запускаем вот такой простой скрипт:

 и ожидаем что он закроет всё.
Но оказывается, если сделки открыты роботом и им присвоен какой либо магик, то эти сделки не закроются. Смотрим код библиотеки Trade.mqh и видим такую строку под номером 1504:

 смотрим в хелпе описание метода PositionClose и ни слова не видим про магик.
Вывод: либо в библиотеке убрать проверку магика либо написать об этом в хелпе.
Или я что то неправильно понимаю ?

 в сервисдеск не пишу по причине отсутствия реакции на предыдущее сообщение. хз чем там народ занят.  все наверное в работе.

Хеждинг, в МТ5, делает возможным одновременную работу нескольких советников на одном символе. Естественно каждый советник имеет свой уникальный MagicNumber и его он прописывает "своим" сделкам (например при использовании класса CTrade это выглядит так:

      CTrade my_trade;
      my_trade.SetExpertMagicNumber(1234862);

Конечно потом этому советнику нужно ограничить возможности - нечего лезть на чужие сделки. 

 

Ваш случай - это попытка залезть на чужие сделки. 

 
Alexey Oreshkin:
Да нет же, вопрос не в том что я не могу закрыть позиции, а в том что в стандартной библиотеке недоработка, вот и всё.
А предложенный вами вариант не будет работать на обычных счетах, не хеджевых.
С чего это вы решили что не будет? 
 
Alexey Oreshkin:
Почему исключительно для меня? Я единственный кто пользуюсь хелпом ? или описанная ситуация не явная ошибка разработчиков ?
Далее в этой теме тебе более не отвечаю, не вижу смысла общения со зрителем ворот.

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

То недоработка в библиотеке, то ошибка, то в хелпе не дописано. 

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