Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 816

 
Ivan Ivanov:

В любой момент доступна только информация об 1 (выбранной) позиции :

Вы констатируете факт или справку ? С помощью поиска нигде ничего подобного не нашел.

 
pivomoe:

Вы констатируете факт или справку ? С помощью поиска нигде ничего подобного не нашел.

Для того, чтобы получить любое свойство позиции необходимо предварительно выбрать нужную позицию. 
В справке можете посмотреть любое описании функций получения свойств позиций PosotionGetXXXX:
Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функции PositionGetSymbol или PositionSelect
Представить это можно так: в супермаркете если Вы хотите прочесть, что написано на этикетке банки с вареньем, Вас сначала нужно эту банку с Вареньем взять в руки.
 
fxsaber:
Судя по " , в результате чего проявилась ваша ошибка " ошибку они нашли не в 1730 версии, а в более ранней. Т.е по мнению разработчиков в 1730 все сейчас работает идеально в этом плане.
 
Vladimir Karputov:
Для того, чтобы получить любое свойство позиции необходимо предварительно выбрать нужную позицию. 
В справке можете посмотреть любое описании функций получения свойств позиций PosotionGetXXXX:
Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функции PositionGetSymbol или PositionSelect
Представить это можно так: в супермаркете если Вы хотите прочесть, что написано на этикетке банки с вареньем, Вас сначала нужно эту банку с Вареньем взять в руки.
Про то, что нужно выбирать позицию,ордер перед получением информации о них, я понимаю. Я не понимаю причем тут класс CPositionInfo ? Если есть класс соответственно можно создавать много объектов этого класса. Соответственно и каждый такой объект можно настраивать на своею позицию. Бред какой, то получается объектов CPositionInfo можно создать хоть миллион, но все они будут работать, только с той позицией, которая последней выбрана с помощью метода Select().
 
pivomoe:
Про то, что нужно выбирать позицию,ордер перед получением информации о них, я понимаю. Я не понимаю причем тут класс CPositionInfo ? Если есть класс соответственно можно создавать много объектов этого класса. Соответственно и каждый такой объект можно настраивать на своею позицию. Бред какой, то получается объектов CPositionInfo можно создать хоть миллион, но все они будут работать, только с той позицией, которая последней выбрана с помощью метода Select().
Функция PositionSelect() копирует данные о позиции в программное окружение, и последующие вызовы PositionGetDouble()PositionGetInteger() и PositionGetString()возвращают ранее скопированные данные
Хотите сохранять массив данных по двум и более позициям - пишите свою структуру, в которую и копируйте данные позиций.
 
pivomoe:
Про то, что нужно выбирать позицию,ордер перед получением информации о них, я понимаю. Я не понимаю причем тут класс CPositionInfo ? Если есть класс соответственно можно создавать много объектов этого класса. Соответственно и каждый такой объект можно настраивать на своею позицию. Бред какой, то получается объектов CPositionInfo можно создать хоть миллион, но все они будут работать, только с той позицией, которая последней выбрана с помощью метода Select().
CArrayObj вам в помощь. И храните в этом списке объекты-ордера/позиции. И получайте по ним все нужные данные. 
 

Давайте здесь продолжим.

Vladimir Karputov:
Функция PositionSelect() копирует данные о позиции в программное окружение, и последующие вызовы PositionGetDouble()PositionGetInteger() и PositionGetString()возвращают ранее скопированные данные

Я это все понимаю т.к в справке это хорошо разжевано. Я не понимаю, какое это имеет отношение имеет к классу CPositionInfo ? 

В нем есть функция Volume() . Есть требования перед вызовом этой функции(выбрать позицию перед использованием). Я эти требования выполняю. Почему мне возвращается совершенно не тот объем. Ну ужели так, сложно запомнить в момент последнего вызова(для данного объекта класса) Select() символ, который меня интересует, а уже в моменты вызова Volume() найти позицию, которая соответствует этому символу  и вернуть объем соответствующей этой позиции ?



Другими словами использование двух объектов класса PositionInfo в данном случае ошибочно.

Получается, что никакого смысла в классе CPositionInfo нет т.к нормально, можно работать только с одним объектом этого класса.

 
Я правильно понимаю, что метод Volume из класса CPositionInfo возвращает объем соответствующий моменту времени, в который последний раз вызывался метод Select() ? Т.е можно узнать, объем который был месяц назад по данному символу ?
 
pivomoe:

Давайте здесь продолжим.

Я это все понимаю т.к в справке это хорошо разжевано. Я не понимаю, какое это имеет отношение имеет к классу CPositionInfo ? 

В нем есть функция Volume() . Есть требования перед вызовом этой функции(выбрать позицию перед использованием). Я эти требования выполняю. Почему мне возвращается совершенно не тот объем. Ну ужели так, сложно запомнить в момент последнего вызова(для данного объекта класса) Select() символ, который меня интересует, а уже в моменты вызова Volume() найти позицию, которая соответствует этому символу  и вернуть объем соответствующей этой позиции ?


Получается, что никакого смысла в классе CPositionInfo нет т.к нормально, можно работать только с одним объектом этого класса.

Торговый класс CPositionInfo отлично работает, когда есть понимание что именно он делает.
Сейчас поясню: CPositionInfo это не шкатулка в которой хранятся все свойства выбранной позиции, это ключ (удобный, быстрый, заменяющий кучу строк кода) доступа к свойствам выбранной позиции.

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