![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Потому что в тестере он не вызывает OnChartEvent
Совершенно верно. Но при такой же ситуации в МТ4 были возможны варианты. Один из них я удачно реализовал. Интерфейс работал у советника запущенного в обычном режиме, но он мог управлять своей копией запущенной в тестере. Связь была реализована через ресурсы. В советник на графике приходили все данные в процессе тестирования. С МТ5, возможно, ситуация сложнее. Не уверен что удасться наладить "общение" двух копий через ресурс. Это вопрос требует отдельного исследования.
4. Ориентирование в списках индивидуальных свойств элементов.
//-----------------------------------------------------------------------------------------
Напомню список тем для рассмотрения:
1. Ориентирование в списке интеллисенс и выбор функции нужного окна.
2. Программное открытие и закрытие окон.
3. Ориентирование в списке интеллисенс и выбор нужного элемента в нужном окне.
4. Ориентирование в списках индивидуальных свойств элементов.
5. Разбор названия функции обертки элемента и окна.
6. Возврат значения параметра выбранного элемента в переменную его типа. Рассмотрим три типа нескольких разных элементов.
7. Установка значений в параметры разных типов элементов. Посмотрим как значения будут появляться в окнах интерфейса этих элементов.
8. Возврат значений параметра одного элемента, изменение и пересылка этого значения в другой элемент. Рассмотрим разные типы элементов и значений, и проведем тест на пересылку между разными типами элементов в разных окнах.
9. Возврат предыдущего значения (_V_LAST). Когда и для каких случаев требуется последнее значение (не путать с текущим).
10. Протестируем устновку состояний ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK для различных типов элементов.
11. Попробуем связать и синхронизировать изменения значений элементов разных типов: например поля ввода с кнопками и слайдера. Допустим, чтобы при изменении значения одного элемента (ручного или программного), значение во втором элементе менялось соответствующе.
12. Попробуем программно переустановить границы диапазона слайдера и поля ввода с кнопками через функции обертки. Я не успел это протестировать, но что то подсказывает, что это получится. Впрочем, посмотрим.
13. Попробуем вернуть состояния элементов через функции обертки. Это заложено в функционал, но также, не успел протестировать. Поэтому посмотрим... Результат неизвестен.
14. Получим и установим цвета для текста и оснований элементов. Можно попытаться связать эти цвета с какими то незамысловатыми событиями или границами значений.
15. Расскажу подробнее как ориентироваться и читать новую распечатку файла API.
//------------------------------------------
Желтым цветом выделены темы которые уже рассмотрели.
//--------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------
Подчеркну:
Каждая функция обертка принимает свойства только с префиксом прописанным в ее названии.
Так выглядит работа со списками на практике (скобки ставить в конце, потому что внутри скобок функций оберток интеллисенс не работает):
Гиф немного ускорен.
В результате вызовов показанных на гифе, функции обертки возвращают значения указанных свойств.
Перед вызовом необходимо объявить переменную для сохранения значения свойства или результата исполнения функции. Подробнее об этом в разборе следующих тем.
5. Разбор названия функции обертки элемента и окна:
1. Название функции обертки элемента:
Рассмотрим на примере функции элемента текстовое поле ввода EDIT: w7_s_p4_EDIT_Comment_1();
//-------------------------------------------------------------
//-------------------------------------------------------------
//-------------------------------------------------------------
2. Название функции обертки окна:
Рассмотрим на примере другой функции: w_15_Processing_the_data();
//-------------------------------------------------------------
//-------------------------------------------------------------
//-------------------------------------------------------------
Cтоит обратить внимание, что функция окна пока не имеет префикс для открытия списка свойств. Эта возможность обязательно появится. Будет сформирован специальный список свойств окна для возврата/установки, и назначен префикс. Также функция окна пока не содержит букву возвращаемого типа.
На данный момент функция может лишь открывать или закрывать окно.
Эти недоработки будут исправлены в следующем релизе.
Рекомендуется обобщить эту обучающую информацию один раз в частном порядке и отдельно, иначе в будущем она заполонит комментарии
6. Возврат значения параметра или свойства в переменную нужного типа:
Тип параметра элемента (int, double или string) определяет тип функции элемента.
Известно, что функции элементов возвращают значение параметра одним из трех типов: int, double или string.
Однако функции также возвращают значения свойств...
Возникает ситуация, когда тип значения параметра может не совпадать с типом свойств, которые всегда int. Получается, функции возвращают значения свойств неверным типом, например double или string вместо int. Это вынужденное неудобство - цена за универсальность функций.
Задача пользователя - привести полученное значение к нужному типу самостоятельно.
Подчеркну: главным типом всех свойств элемента является int.
Рассмотрим подробнее на примерах вопрос-ответ:
Тип значения параметра определяет тип функции элемента.
Вывод: Задача пользователя - привести получаемые значения к нужному типу.
Рассмотрим несколько практических примеров:
1.
//------------------------------------------------------------------------------------------------------------
2.
//------------------------------------------------------------------------------------------------------------
3.
Смотрим результат:
//------------------------------------------------------------------------------------------------------------
4.
//------------------------------------------------------------------------------------------------------------
5.
Смотрим результат:
Далее протестируем получение и установку других свойств элемента и параметра. Также попробуем поработать с типом double.
Я следовал коду и тестировал его, и обнаружил неожиданную вещь, которая не автоскрывается, когда длина случайной строки слишком велика
w7_s_p4_EDIT_Comment_1("Some random text AAAAAAAA");