Класс COrderInfo является по сути простой обложкой для вызова функций работающих с ордерами.
Например читаем документацию для функции
Это самая функция встроена в класс COrderInfo, вот ее реализация:
Т.е. это простой интерфейс вызова штатной функции OrderGetInteger(). Спрашивается почему в классе COrderInfo нет метода Ticket(), устанавливающего и получающего нужный ордер с помощью OrderGetTicket() или OrderSelect? Хотя переменная хранящая тикет в классе имеется (m_ticket), но что в двойне странно, она инициализируется нулем и никогда не принимает другого значения. Зачем она тогда вообще нужна? В документации нет ни слова о том, что перед работой с классом COrderInfo, необходимо выбрать нужный ордер с помощью функции OrderSelect или OrderGetTicket. Не понимаю...
Тут есть два варианта (какой вам лучше нравится):
1. Базовый класс так сказать "не дописан" и в него будут вноситься изменения;
2. Подразумевается то, что все необходимое (но недостающее тут) будет добавлено программистами самостоятельно в потомках COrderInfo.
Тут есть два варианта (какой вам лучше нравится):
1. Базовый класс так сказать "не дописан" и в него будут вноситься изменения;
2. Подразумевается то, что все необходимое (но недостающее тут) будет добавлено программистами самостоятельно в потомках COrderInfo.
Но в том же OrderHystoryInfo метод Ticket() определен. Совсем запутывает ситуацию то, что в документации к классу COrderInfo нет ни слова о том, что предварительно ордер должен выбираться с помощью OrderSelect() и OrderGetTicket(). Хотелось бы услышать комментарии разработчиков на эту тему.
З.Ы. Хотя сейчас уже пятница. Думаю официальные комментарии будут не ранее понедельника.
C-4:
З.Ы. Хотя сейчас уже пятница. Думаю официальные комментарии будут не ранее понедельника.
Класс COrderInfo является по сути простой обложкой для вызова функций работающих с ордерами.
Например читаем документацию для функции
Это самая функция встроена в класс COrderInfo, вот ее реализация:
Т.е. это простой интерфейс вызова штатной функции OrderGetInteger(). Спрашивается почему в классе COrderInfo нет метода Ticket(), устанавливающего и получающего нужный ордер с помощью OrderGetTicket() или OrderSelect? Хотя переменная хранящая тикет в классе имеется (m_ticket), но что в двойне странно, она инициализируется нулем и никогда не принимает другого значения. Зачем она тогда вообще нужна? В документации нет ни слова о том, что перед работой с классом COrderInfo, необходимо выбрать нужный ордер с помощью функции OrderSelect или OrderGetTicket. Не понимаю...
Для использования методов класса COrderInfo Вы должны сначала установить тиккет ордера, с которым собираетесь работать, с помощью метода void Ticket(ulong ticket). После этого все методы класса работают именно с этим ордером, его не надо выбирать с помощью OrderSelect.
Не может быть!
По крайней мере для:
//+------------------------------------------------------------------+ //| OrderInfo.mqh | //| Copyright © 2010, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //| Revision 2010.05.14 | //+------------------------------------------------------------------+
Там не метода Ticket(). По Ctrl-F не удаётся найти почему-то. Подозреваю, что именно потому и не удаётся, что метода нет на самом деле.
И первый же метод:
//+------------------------------------------------------------------+ //| Get the property value "ORDER_TIME_SETUP". | //| INPUT: no. | //| OUTPUT: the property value "ORDER_TIME_SETUP". | //| REMARK: no. | //+------------------------------------------------------------------+ datetime COrderInfo::TimeSetup() const { return((datetime)OrderGetInteger(ORDER_TIME_SETUP)); }
Является простой обёрткой для вызова функции OrderGetInteger(), про которую в справке сказано:
OrderGetInteger
Возвращает запрошенное свойство ордера, предварительно выбранного при помощи функции OrderGetTicket или OrderSelect.
Вот поэтому я и говорю, что то, что Вы написали, - не может быть.
Не может быть!
По крайней мере для:
Там не метода Ticket(). По Ctrl-F не удаётся найти почему-то. Подозреваю, что именно потому и не удаётся, что метода нет на самом деле.
И первый же метод:
Является простой обёрткой для вызова функции OrderGetInteger(), про которую в справке сказано:
OrderGetInteger
Возвращает запрошенное свойство ордера, предварительно выбранного при помощи функции OrderGetTicket или OrderSelect.
Вот поэтому я и говорю, что то, что Вы написали, - не может быть.
Чёрт ! Действительно. Я вместо OrderInfo.mqh открыл и смотрел HistoryOrderInfo.mqh, а там он есть.
Значит, надо ввести.
В скрипте OrderInfoSample.mq5 применяется конструкция
long ticket; OrderSelect(ticket=OrderGetTicket(m_curr_ord));где m_curr_ord позиция ордера в списке ордеров
Вероятно разработчики подразумевают, что перед вызовом свойств объекта COrderInfo необходимо перед этим выбрать сам ордер.
"предварительно выбранного при помощи функции OrderGetTicket или OrderSelect. "
никуда ничего вводить не надо. вы для начала ENUM_ORDER_PROPERTY полистайте.
![Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров](/i/community/logo_mql5_small.png)
- www.mql5.com
Вероятно разработчики подразумевают, что перед вызовом свойств объекта COrderInfo необходимо перед этим выбрать сам ордер.
"предварительно выбранного при помощи функции OrderGetTicket или OrderSelect. "
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Класс COrderInfo является по сути простой обложкой для вызова функций работающих с ордерами.
Например читаем документацию для функции
OrderGetInteger
Возвращает запрошенное свойство ордера, предварительно выбранного при помощи функции OrderGetTicket или OrderSelect. Свойство ордера должно быть типа datetime, int. Существует 2 варианта функции.
1. Непосредственно возвращает значение свойства.
2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.
...Это самая функция встроена в класс COrderInfo, вот ее реализация:
Т.е. это простой интерфейс вызова штатной функции OrderGetInteger(). Спрашивается почему в классе COrderInfo нет метода Ticket(), устанавливающего и получающего нужный ордер с помощью OrderGetTicket() или OrderSelect? Хотя переменная хранящая тикет в классе имеется (m_ticket), но что в двойне странно, она инициализируется нулем и никогда не принимает другого значения. Зачем она тогда вообще нужна? В документации нет ни слова о том, что перед работой с классом COrderInfo, необходимо выбрать нужный ордер с помощью функции OrderSelect или OrderGetTicket. Не понимаю...