Особенности языка mql5, тонкости и приёмы работы - страница 18
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А позвольте полюбопытствовать, почему static?
Потому что вырвано из контекста - см. оригинальный пост.
не документированная особенность функции OnInit(), данную функцию можно запустить в любой части программы. Тестовый код.
Результат
...
не документированная особенность функции OnInit(), данную функцию можно запустить в любой части программы. Тестовый код.
Все On-фукнции являются обычными функциями, и их, соответственно, можно вызывать, когда угодно. Хоть OnCalculate, хоть OnTradeTransaction.
Все On-фукнции являются обычными функциями, и их, соответственно, можно вызывать, когда угодно. Хоть OnCalculate, хоть OnTradeTransaction.
но в документации то этого не написано
OnInit
Функция OnInit() является обработчиком событияInit. Может иметь типvoidилиint, параметров не имеет:
void OnInit();
Событие Init генерируется сразу после загрузки эксперта или индикатора, для скриптов это событие не генерируется. Функция OnInit() используется для инициализации. Если OnInit() имеет возвращаемое значение типа int, то ненулевой код возврата означает неудачную инициализацию и генерирует событиеDeinitс кодом причины деинициализацииREASON_INITFAILED.
Для оптимизации входных параметров эксперта рекомендуется в качестве кода возврата использовать значения из перечисленияENUM_INIT_RETCODE. Эти значения предназначены для организации управления ходом оптимизации, в том числе для выбора наиболее подходящихагентов тестирования. Прямо при инициализации эксперта еще до запуска самого тестирования можно запросить информацию о конфигурации и ресурсах агента (количество ядер, объем свободной памяти и т.д.) с помощью функцииTerminalInfoInteger(). И на основе полученной информации либо разрешить использовать данный агент тестирования, либо отказаться от него при оптимизации данного эксперта.
ENUM_INIT_RETCODE
Идентификатор
Описание
INIT_SUCCEEDED
Инициализация прошла успешно, тестирование эксперта можно продолжать.
Этот код означает то же самое, что и нулевое значение – инициализация эксперта в тестере прошла успешно.
INIT_FAILED
Неудачная инициализация, тестирование нет смысла продолжать из-за неустранимых ошибок. Например, не удалось создать индикатор, необходимый для работы эксперта.
Возврат этого значения означает то же самое, что и возврат значения, отличного от нуля – инициализация эксперта в тестере прошла неудачно.
INIT_PARAMETERS_INCORRECT
Предназначен для обозначения программистом некорректного набора входных параметров, в общей таблице оптимизации строка результата с таким кодом возврата будет подсвечена красным цветом.
Тестирование для данного набора параметров эксперта не будет выполняться, агент свободен для получения нового задания.
При получении этого значения тестер стратегий гарантированно не будет передавать данное задание другим агентам для повторного выполнения.
INIT_AGENT_NOT_SUITABLE
Ошибок в работе программы при инициализации не возникло, но по каким-то причинам данный агент не подходит для проведения тестирования. Например, недостаточно оперативной памяти, нетподдержки OpenCLи так далее.
После возврата этого кода агент больше не будет получать заданий до самого концаданной оптимизации.
Функция OnInit() типа void всегда означает удачную инициализацию.
но в документации то этого не написано
OnInit
Функция OnInit() является обработчиком событияInit. Может иметь типvoidилиint, параметров не имеет:
void OnInit();
Событие Init генерируется сразу после загрузки эксперта или индикатора
Написано же, что это функция.
До OnInit и после OnDeinit еще идут вызовы конструкторов/деструкторов глобальных объектов (неточность в Справке). Поэтому, например, в индикаторах можно объявлять индикаторные буферы без OnInit. Рудименты такие.
Если массив меньше, то передается только часть цветов. Если массив больше, то он обрезается.
Для массивов ширины и стилей принцип тот же.
В OrderSendSync вызывается перегруженная (см. выше) HistoryDealSelect.
Каким образом можно определить время открытия последней позиции, время закрытия последней позиции?
Да и вообще, хотелось бы знать общие принципы и алгоритмы получения информации по открытым/закрытым позициям на mql5.
Что необходимо учитывать, какие особенности существуют на данный момент?
Каким образом можно определить время открытия последней позиции, время закрытия последней позиции?
Да и вообще, хотелось бы знать общие принципы и алгоритмы получения информации по открытым/закрытым позициям на mql5.
Что необходимо учитывать, какие особенности существуют на данный момент?
Всё это определяется выбором истории ордеров и сделок и последующим чтением свойств ордеров.
POSITION_IDENTIFIER
Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен.
long
И используя свойства из перечисления ENUM_DEAL_ENTRY
DEAL_ENTRY_IN
Вход в рынок
DEAL_ENTRY_OUT
Выход из рынка
DEAL_ENTRY_INOUT
Разворот
DEAL_ENTRY_OUT_BY
Закрытие встречной позицией