Наверное, в справке попросту не указали это значение для перечисления (забыли после нововведения). Да и как константа это значение не подсвечивается. Тем не менее, POSITION_COMMISSION успешно распознается компилятором, а поиск в справке приводит на страницу перечисления ENUM_POSITION_PROPERTY_DOUBLE. Так что такой код вполне может использоваться, раз его использовали в стандартной библиотеке.
Другое дело, что при применении такого запроса будет получена только начисленная комиссия. Будущую комиссию (по закрытию, например) все равно никак не получить.
Janis Ozols #:
То есть вместо вызова одной функции вы предлагаете запустить цикл с перебором всех ордеров в терминале и проверкой на предмет их принадлежности определённой позиции? В чём преимущество такого подхода?
Всё гораздо проще.
bool HistorySelectByPosition( long position_id // идентификатор позиции - POSITION_IDENTIFIER );
POSITION_IDENTIFIER | Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен. | long |
DEAL_COMMISSION | Комиссия по сделке | double |
Правда цикл всё-же будет нужен. Ведь в формировании позиции может быть не одна сделка даже на hadge
![Документация по MQL5: Торговые функции / HistorySelectByPosition Документация по MQL5: Торговые функции / HistorySelectByPosition](https://c.mql5.com/36/77/dokumentaciya-po-mql5-torgovie.png)
- www.mql5.com
Да, но советник может желать знать комиссию только по своей виртуальной позиции, а не по суммарной при неттинге.
У сделки тоже существует магик.
DEAL_MAGIC | Magic number для сделки (смотри ORDER_MAGIC) | long |
![Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров](https://c.mql5.com/36/77/dokumentaciya-po-mql5-konstanti__1.png)
- www.mql5.com
У сделки тоже существует магик.
DEAL_MAGIC | Magic number для сделки (смотри ORDER_MAGIC) | long |
как то хочется более по русски и толково. К ордеру при исполнении цепляется уник номер позиции и сделки, а магик ордера цепляется к сделке, по которому можно найти все сделки по определенному приказу.
как то хочется более по русски и толково. К ордеру при исполнении цепляется уник номер позиции и сделки, а магик ордера цепляется к сделке, по которому можно найти все сделки по определенному приказу.
Так я других языков никогда не изучал. В нашей школе им. Тельмана учили только немецкий, а я не учил никакой. Так-что кроме русского я ничего больше не знаю.
И если не лениво, ткните в сцильку и почитайте. Если останутся вопросы, обращайтесь.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пожалуйста, подскажите, как получить значение комиссии для открытой позиции при торговле на инструментах рынка FOREX на счёте с хеджинговым учётом позиций?
Я всегда полагался в этом на стандартную библиотеку, в частности, её класс CPositionInfo. У него есть метод Comission(), описание которого в справочнике MQL5 звучит так: "Получает размер комиссии по позиции".
Однако сегодня в другой ветке уважаемый @Alexey Viktorov упомянул, что комиссия берётся не за позицию, а за сделку. И по этой причине она не отображается в терминале во вкладке "Торговля", а её следует искать во вкладке "История" среди сделок.
Это сподвигло меня задаться вопросом, каким же образом метод Comission() класса CPositionInfo из стандартной библиотеки вычисляет комиссию для позиции. Я открыл определение этого метода в файле MQL5\Inclide\Trade\PositionInfo.mqh и вот что обнаружил (строки 178-184):
Однако в описании функции PositionGetDouble сказано, что она принимает значение типа ENUM_POSITION_PROPERTY_DOUBLE. А в этом перечислении нет значения POSITION_COMMISSION!
Пожалуйста, подскажите, как такое возможно? И как на самом деле можно получить значение комиссии для открытой позиции при торговле на инструментах рынка FOREX на счёте с хеджинговым учётом позиций?